Changeset 237

Show
Ignore:
Timestamp:
03/02/06 14:29:35
Author:
miyagawa
Message:

Workaround for Cache.pm freezethaw vs. setget problem. Fixes #86

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/plagger/lib/Plagger/Cache.pm

    r232 r237  
    2727sub get { 
    2828    my $self = shift; 
    29     my $getter = $self->{cache}->isa('Cache') ? 'thaw' : 'get'; 
    30     $self->{cache}->$getter(@_); 
     29 
     30    my $value; 
     31    if ( $self->{cache}->isa('Cache') ) { 
     32        eval { $value = $self->{cache}->thaw(@_) }; 
     33        if ($@ && $@ =~ /Storable binary/) { 
     34            $value = $self->{cache}->get(@_); 
     35        } 
     36    } else { 
     37        $value = $self->{cache}->get(@_); 
     38    } 
     39 
     40    $value; 
    3141} 
    3242 
     
    5464    my($key, $value, $expiry) = @_; 
    5565 
    56     my $setter = $self->{cache}->isa('Cache') ? 'freeze' : 'set'; 
     66    my $setter = $self->{cache}->isa('Cache') && ref $value ? 'freeze' : 'set'; 
    5767    $self->{cache}->$setter(@_); 
    5868}