Changeset 56

Show
Ignore:
Timestamp:
09/02/09 23:37:58 (5 years ago)
Author:
jesus
Message:

update a cache with the asset locations

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/perl/lib/Cornea/RecallTable.pm

    r46 r56  
    33use Cornea::Config; 
    44use Cornea::Utils; 
     5use Memcached::libmemcached qw(:memcached_behavior :memcached_server_distribution 
     6                               memcached_create memcached_behavior_set 
     7                               memcached_server_add memcached_set); 
    58use YAML; 
    69use DBI; 
     
    5558    die $@ if $@; 
    5659  } 
     60  $self->asset_cache_replace(@_); 
    5761  return 1; 
    5862} 
     
    549553  }); 
    550554} 
     555 
     556my $_g_mc; 
     557my $_g_mc_id = ''; 
     558 
     559sub asset_cache_replace { 
     560  my $self = shift; 
     561  my ($serviceId, $assetId, $repId, $snl) = @_; 
     562  my $all = $self->getNodes(['open','closed','truant']); 
     563  my @nodes = sort (map { $_->ip() } ($all->items())); 
     564  my $id = join(',', @nodes); 
     565  if (!$_g_mc or $_g_mc_id ne $id) { 
     566    $_g_mc_id = $id; 
     567    $_g_mc = memcached_create(); 
     568    memcached_behavior_set($_g_mc, MEMCACHED_BEHAVIOR_DISTRIBUTION(), 
     569                           MEMCACHED_DISTRIBUTION_CONSISTENT()); 
     570    foreach my $ip (@nodes) { 
     571      memcached_server_add($_g_mc, $ip, 11211); 
     572    } 
     573  } 
     574  memcached_set($_g_mc, "$serviceId-$assetId-$repId", 
     575                join(',', map { $_->id() } ($snl->items()))); 
     576} 
    5515771;