AC-Yenta
view release on metacpan or search on metacpan
lib/AC/Yenta/Store/BDBI.pm view on Meta::CPAN
$dir =~ s|/[^/]+$||;
# recover only once per dir
my $recov = ( $conf->{recovery} && !$recovered{$dir} );
$recovered{$dir} = 1 if $recov;
if( $recov ){
unlink $_ for glob "$dir/__*";
}
my $flags = $conf->{readonly} ? 0 : (DB_CREATE| DB_INIT_CDB | DB_INIT_MPOOL);
debug("opening Berkeley dir=$dir, file=$file (recov $recov)");
my $env = BerkeleyDB::Env->new(
-Home => $dir,
-Flags => $flags,
);
# microsecs
$env->set_timeout($TIMEOUT * 1_000_000 / 2, DB_SET_LOCK_TIMEOUT) if $env;
my $db = BerkeleyDB::Btree->new(
-Filename => $file,
-Env => $env,
-Flags => DB_CREATE,
);
lib/AC/Yenta/Store/Tokyo.pm view on Meta::CPAN
my $file = $conf->{dbfile};
unless( $file ){
problem("no dbfile specified for '$name'");
return;
}
debug("opening Tokyo DB file=$file");
my $db = TokyoCabinet::BDB->new();
my $flags = $conf->{readonly} ? ($db->OREADER | $db->ONOLCK) : ($db->OWRITER | $db->OCREAT);
if(!$db->open($file, $flags)){
#my $ecode = $db->ecode();
#printf STDERR ("open error: %s\n", $db->errmsg($ecode));
problem("cannot open db file $file");
}
# web server will need access
chmod 0666, $file;
return bless {
file => $file,
( run in 0.672 second using v1.01-cache-2.11-cpan-94b05bcf43c )