[koha-commits] main Koha release repository branch new/bug_9434 created. v3.12.00-alpha2-18-gb07f4de

Git repo owner gitmaster at git.koha-community.org
Wed Mar 20 20:11:45 CET 2013


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "main Koha release repository".

The branch, new/bug_9434 has been created
        at  b07f4debb73b01aa0a72a2b10506e171e79a8c05 (commit)

- Log -----------------------------------------------------------------
commit b07f4debb73b01aa0a72a2b10506e171e79a8c05
Author: Jared Camins-Esakov <jcamins at cpbibliography.com>
Date:   Sat Jan 19 13:59:47 2013 -0500

    Bug 9434: Introduce new tied cache system
    
    At the moment we cache numerous pieces of information in module-level
    variables which then do not get updated in other threads/processes when
    they are changed by the user. This is a serious usability issue.
    
    Examples of this include the way we treat sysprefs (there is now a
    method to disable the syspref cache, but by default it is enabled),
    notices, frameworks, field mappings, and koha-conf.xml, at least.
    
    This patch sets the stage for eliminating this problem by making it
    possible to convert module-level cache variables into variables that
    are actually backed by whatever caching system may be configured. This
    is done through a special Koha::Cache::Object class which can be tied
    to the variables that are being used for caching and provided with a
    constructor method/closure to allow the cache to be reloaded when it
    expires. For example:
    
        my $cache    = Koha::Cache->new();
        my $data     = 'whatever';
        my $variable = Koha::Cache->create_scalar(
            {
                'key'         => 'whatever',
                'timeout'     => 2,
                'constructor' => sub { return $data; },
            }
        );
        print "$$variable\n"; # Prints "whatever"
    
    The one change this necessitates for accessing the data is that the
    variable must be dereferenced an additional time before use (i.e.
    $$variable instead of $variable). There is no difference when the
    variable tied is a hash (created with Koha::Cache->create_hash). This
    is a small price to pay for Koha working in a multi-threaded, persistent
    environment. This change will also make caching easier in general.
    
    CHI was incompatible with the variable tying, so this patch also removes
    the dependency on CHI, using instead Cache::Memcached::Fast,
    Cache::FastMmap, and Cache::Memory, when they are available.
    
    To test:
    1) Apply patch.
    2) Run unit test t/Cache.t (after setting the MEMCACHED_SERVERS and
       CACHING_SYSTEM environment variables). As no changes were made to
       the tests already in that file, this passing demonstrates there
       are no regressions.
    3) With memcached caching enabled (you must set the MEMCACHED_SERVERS
       and CACHING_SYSTEM environment variables) and DEBUG turned on (i.e.
       the DEBUG environment variable set to 1), try running a report via
       the web service ([intranet]/cgi-bin/koha/svc/report?id=1 and check
       your web server logs to confirm that there are messages like
       "get_from_cache for intranet:report:id:1" in them.
    4) If the reports worked, sign off.
    
    NOTE: Technically you could test this without needing memcached by
    installing libcache-fastmmap-perl and setting CACHING_SYSTEM to
    'fastmmap' instead of 'memcached'. You could also install libcache-perl
    and set CACHING_SYSTEM to 'memory' but there would be little point as
    the cached variables would go out of scope in between runs.
    
    Signed-off-by: Jonathan Druart <jonathan.druart at biblibre.com>
    
    Signed-off-by: Paul Poulain <paul.poulain at biblibre.com>
    Signed-off-by: Jared Camins-Esakov <jcamins at cpbibliography.com>

commit 89bbab4b8440c76ed61752941c812cbf2de80a8a
Merge: fb28e0e c9172f4
Author: Jared Camins-Esakov <jcamins at cpbibliography.com>
Date:   Wed Mar 20 15:11:19 2013 -0400

    Merge branch 'bug_9802' into 3.12-master

-----------------------------------------------------------------------


hooks/post-receive
-- 
main Koha release repository


More information about the koha-commits mailing list