Berkeley DB: DbEnv::close
Description: Berkeley DB: An embedded database programmatic toolkit.
Keywords: embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++

# DbEnv::close |

`

###

    #include <db_cxx.h>

    DbEnv::close(u_int32_t flags);

# Description

The DbEnv::close method closes the Berkeley DB environment, freeing any allocated resources and closing any underlying subsystems.

Calling DbEnv::close does not imply closing any databases that were opened in the environment, and all databases opened in the environment should be closed before the environment is closed.

The flags parameter is currently unused, and must be set to 0.

Where the environment was initialized with the DB_INIT_LOCK flag, calling DbEnv::close does not release any locks still held by the closing process, providing functionality for long-lived locks. Processes that want to have all their locks released can do so by issuing the appropriate DbEnv::lock_vec call.

Where the environment was initialized with the DB_INIT_MPOOL flag, calling DbEnv::close implies calls to DbMpoolFile::close for any remaining open files in the memory pool that were returned to this process by calls to DbMpoolFile::open. It does not imply a call to DbMpoolFile::sync for those files.

Where the environment was initialized with the DB_INIT_TXN flag, calling DbEnv::close aborts any unresolved transactions. Applications should not depend on this behavior for transactions involving Berkeley DB databases; all such transactions should be explicitly resolved. The problem with depending on this semantic is that aborting an unresolved transaction involving database operations requires a database handle. Because the database handles should have been closed before calling DbEnv::close, it will not be possible to abort the transaction, and recovery will have to be run on the Berkeley DB environment before further operations are done.

Where log cursors were created using the DbEnv::log_cursor method, calling DbEnv::close does not imply closing those cursors.

In multithreaded applications, only a single thread may call DbEnv::close.

After DbEnv::close has been called, regardless of its return, the Berkeley DB environment handle may not be accessed again.

The DbEnv::close method either returns a non-zero error value or throws an exception that encapsulates a non-zero error value on failure, and returns 0 on success.

# Errors

The DbEnv::close method may fail and throw an exception or return a non-zero error for errors specified for other Berkeley DB and C library or system methods. If a catastrophic error has occurred, the DbEnv::close method may fail and either return DB_RUNRECOVERY or throw an exception encapsulating DB_RUNRECOVERY, in which case all subsequent Berkeley DB calls will fail in the same way.

# Class

DbEnv

# See Also

DbEnv::close, DbEnv::err, DbEnv::errx DbEnv::open, DbEnv::remove, DbEnv::set_alloc, DbEnv::set_cachesize, DbEnv::set_data_dir, DbEnv::set_errcall, DbEnv::set_errfile, DbEnv::set_error_stream, DbEnv::set_errpfx, DbEnv::set_feedback, DbEnv::set_flags, DbEnv::set_paniccall, DbEnv::set_recovery_init, DbEnv::set_rpc_server, DbEnv::set_shm_key, DbEnv::set_tas_spins, DbEnv::set_tmp_dir, DbEnv::set_timeout, DbEnv::set_verbose, DbEnv::strerror and DbEnv::version.`

Copyright Sleepycat Software