View | Details | Raw Unified | Return to bug 16365
Collapse All | Expand All

(-)a/Koha/Cache.pm (-3 / +7 lines)
Lines 264-270 sub set_in_cache { Link Here
264
264
265
    my $flag = '-CF0'; # 0: scalar, 1: frozen data structure
265
    my $flag = '-CF0'; # 0: scalar, 1: frozen data structure
266
    if (ref($value)) {
266
    if (ref($value)) {
267
        # Set in L1 cache as a data structure, initially only in frozen form (for performance reasons)
267
        # Set in L1 cache as a data structure
268
        # We only save the frozen form: we do want to save $value in L1
269
        # directly in order to protect it. And thawing now may not be
270
        # needed, so improves performance.
268
        $value = $L1_encoder->encode($value);
271
        $value = $L1_encoder->encode($value);
269
        $L1_cache{$key}->{frozen} = $value;
272
        $L1_cache{$key}->{frozen} = $value;
270
        $flag = '-CF1';
273
        $flag = '-CF1';
Lines 275-281 sub set_in_cache { Link Here
275
    }
278
    }
276
279
277
    $value .= $flag;
280
    $value .= $flag;
278
    # We consider an expiry of 0 to be inifinite
281
    # We consider an expiry of 0 to be infinite
279
    if ( $expiry ) {
282
    if ( $expiry ) {
280
        return $set_sub
283
        return $set_sub
281
          ? $set_sub->( $key, $value, $expiry )
284
          ? $set_sub->( $key, $value, $expiry )
Lines 327-332 sub get_from_cache { Link Here
327
    if ( exists $L1_cache{$key} ) {
330
    if ( exists $L1_cache{$key} ) {
328
        if (ref($L1_cache{$key})) {
331
        if (ref($L1_cache{$key})) {
329
            if ($unsafe) {
332
            if ($unsafe) {
333
                # ONLY use thawed for unsafe calls !!!
330
                $L1_cache{$key}->{thawed} ||= $L1_decoder->decode($L1_cache{$key}->{frozen});
334
                $L1_cache{$key}->{thawed} ||= $L1_decoder->decode($L1_cache{$key}->{frozen});
331
                return $L1_cache{$key}->{thawed};
335
                return $L1_cache{$key}->{thawed};
332
            } else {
336
            } else {
Lines 355-360 sub get_from_cache { Link Here
355
        eval { $thawed = $L1_decoder->decode($L2_value); };
359
        eval { $thawed = $L1_decoder->decode($L2_value); };
356
        return if $@;
360
        return if $@;
357
        $L1_cache{$key}->{frozen} = $L2_value;
361
        $L1_cache{$key}->{frozen} = $L2_value;
362
        # ONLY save thawed for unsafe calls !!!
358
        $L1_cache{$key}->{thawed} = $thawed if $unsafe;
363
        $L1_cache{$key}->{thawed} = $thawed if $unsafe;
359
        return $thawed;
364
        return $thawed;
360
    }
365
    }
361
- 

Return to bug 16365