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

(-)a/Koha/Cache.pm (-3 / +7 lines)
Lines 259-265 sub set_in_cache { Link Here
259
259
260
    my $flag = '-CF0'; # 0: scalar, 1: frozen data structure
260
    my $flag = '-CF0'; # 0: scalar, 1: frozen data structure
261
    if (ref($value)) {
261
    if (ref($value)) {
262
        # Set in L1 cache as a data structure, initially only in frozen form (for performance reasons)
262
        # Set in L1 cache as a data structure
263
        # We only save the frozen form: we do want to save $value in L1
264
        # directly in order to protect it. And thawing now may not be
265
        # needed, so improves performance.
263
        $value = $L1_encoder->encode($value);
266
        $value = $L1_encoder->encode($value);
264
        $L1_cache{$key}->{frozen} = $value;
267
        $L1_cache{$key}->{frozen} = $value;
265
        $flag = '-CF1';
268
        $flag = '-CF1';
Lines 270-276 sub set_in_cache { Link Here
270
    }
273
    }
271
274
272
    $value .= $flag;
275
    $value .= $flag;
273
    # We consider an expiry of 0 to be inifinite
276
    # We consider an expiry of 0 to be infinite
274
    if ( $expiry ) {
277
    if ( $expiry ) {
275
        return $set_sub
278
        return $set_sub
276
          ? $set_sub->( $key, $value, $expiry )
279
          ? $set_sub->( $key, $value, $expiry )
Lines 322-327 sub get_from_cache { Link Here
322
    if ( exists $L1_cache{$key} ) {
325
    if ( exists $L1_cache{$key} ) {
323
        if (ref($L1_cache{$key})) {
326
        if (ref($L1_cache{$key})) {
324
            if ($unsafe) {
327
            if ($unsafe) {
328
                # ONLY use thawed for unsafe calls !!!
325
                $L1_cache{$key}->{thawed} ||= $L1_decoder->decode($L1_cache{$key}->{frozen});
329
                $L1_cache{$key}->{thawed} ||= $L1_decoder->decode($L1_cache{$key}->{frozen});
326
                return $L1_cache{$key}->{thawed};
330
                return $L1_cache{$key}->{thawed};
327
            } else {
331
            } else {
Lines 350-355 sub get_from_cache { Link Here
350
        eval { $thawed = $L1_decoder->decode($L2_value); };
354
        eval { $thawed = $L1_decoder->decode($L2_value); };
351
        return if $@;
355
        return if $@;
352
        $L1_cache{$key}->{frozen} = $L2_value;
356
        $L1_cache{$key}->{frozen} = $L2_value;
357
        # ONLY save thawed for unsafe calls !!!
353
        $L1_cache{$key}->{thawed} = $thawed if $unsafe;
358
        $L1_cache{$key}->{thawed} = $thawed if $unsafe;
354
        return $thawed;
359
        return $thawed;
355
    }
360
    }
356
- 

Return to bug 16365