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 )