AC-Yenta
view release on metacpan or search on metacpan
lib/AC/Yenta/Store/Map.pm view on Meta::CPAN
while(@walk){
my @next;
for my $node (@walk){
my $res = $me->get_merkle( $node->{shard}, $node->{version}, $node->{level} );
for my $r (@$res){
next if $r->{version} > $expire;
if( $r->{key} ){
push @delete, { key => $r->{key}, version => $r->{version}, shard => $r->{shard} };
}else{
push @next, $r;
}
}
}
@walk = @next;
}
# remove k/v
for my $r (@delete){
debug("expiring $r->{key}/$r->{version}");
$me->_remove( $r->{key}, $r->{version} );
}
# update merkle
$me->merkle(undef, @delete);
$db->sync();
}
################################################################
sub vkey {
my $me = shift;
my $k = shift;
my $v = shift;
return "$v/$k";
}
################################################################
sub is_sharded {
return 0;
}
sub is_my_shard {
return 1;
}
1;
=head1 NAME
AC::Yenta::Store::Map - persistent storage for yenta maps
=head1 SYNOPSIS
your code:
AC::Yenta::Store::Map->add_backend( postgres => 'Local::Yenta::Postgres' );
your config:
map mappyfoo {
backend postgres
# ...
}
=cut
( run in 2.077 seconds using v1.01-cache-2.11-cpan-5a3173703d6 )