--- deliantra/Deliantra-Client/DC/DB.pm 2008/03/30 06:05:52 1.35 +++ deliantra/Deliantra-Client/DC/DB.pm 2008/07/13 12:17:00 1.37 @@ -53,21 +53,23 @@ sub try_open_db { File::Path::mkpath [$DB_HOME]; - $DB_ENV = db_env_create; + my $env = db_env_create; - $DB_ENV->set_errfile (\*STDERR); - $DB_ENV->set_msgfile (\*STDERR); - $DB_ENV->set_verbose (-1, 1); + $env->set_errfile (\*STDERR); + $env->set_msgfile (\*STDERR); + $env->set_verbose (-1, 1); - $DB_ENV->set_flags (BDB::AUTO_COMMIT | BDB::LOG_AUTOREMOVE | BDB::TXN_WRITE_NOSYNC); - $DB_ENV->set_cachesize (0, 2048 * 1024, 0); + $env->set_flags (BDB::AUTO_COMMIT | BDB::LOG_AUTOREMOVE | BDB::TXN_WRITE_NOSYNC); + $env->set_cachesize (0, 2048 * 1024, 0); - db_env_open $DB_ENV, $DB_HOME, + db_env_open $env, $DB_HOME, BDB::CREATE | BDB::REGISTER | BDB::RECOVER | BDB::INIT_MPOOL | BDB::INIT_LOCK | BDB::INIT_TXN, 0666; $! and die "cannot open database environment $DB_HOME: " . BDB::strerror; + $DB_ENV = $env; + 1 } @@ -436,6 +438,9 @@ } END { + db_env_txn_checkpoint $DB_ENV, 0, 0, 0 + if $DB_ENV; + undef $TILE_SEQ; %DB_TABLE = (); undef $DB_ENV;