I know this isn't exactly mod perl specific, but since there isn't a mailing
list for BerkeleyDB and this is an issue I know people using BerkeleyDB and
mod perl have probably run accross I thought I would post it here.
I'm using the latest BerkeleyDB perl module on freebsd 5.2 with mod perl
1.xx. Following is the BerkeleyDB code I am using. When I start running
lots of concurrent processes that run db_put I get the error 'Locker does
not exist' in $BerkeleyDB::Error and db_put returns 'Invalid argument'. I
must be setting up the environment incorrectly somehow. I am trying to use
the BerkeleyDB concurrent data store mode which I assumed would handle all
the locking for me.
my %Cache;
my $env = new BerkeleyDB::Env(
-Home => '/tmp/bdb',
-Flags => DB_INIT_CDB | DB_CREATE | DB_INIT_MPOOL,
)
or die "can't create BerkelyDB::Env: $!";
my $bdb = tie %Cache, 'BerkeleyDB::Hash',
-Filename => '/tmp/bdb/bdbfile',
-Flags => DB_CREATE,
-Mode => 0640,
-Env => $env
or die ("Can't tie to /tmp/bdb/bdbdfile: $!");
My db_put looks like this:
my $status = $bdb->db_put($key,$value);
Chris
--
Report problems: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html
List etiquette: http://perl.apache.org/maillist/email-etiquette.html