DbEnv.remove

APIRef

import com.sleepycat.db.*;
import java.io.FileNotFoundException;

public void remove(String db_home, int flags) throws DbException, FileNotFoundException;

Description

The DbEnv.remove method destroys a Berkeley DB environment, if it is not currently in use. The environment regions, including any backing files, are removed. Any log or database files and the environment directory are not removed.

The db_home argument to DbEnv.remove is described in Berkeley DB File Naming.

If there are processes that have called DbEnv.open without calling DbEnv.close (i.e., there are processes currently using the environment), DbEnv.remove will fail without further action, unless the Db.DB_FORCE flag is set, in which case DbEnv.remove will attempt to remove the environment regardless of any processes still using it.

The result of attempting to forcibly destroy the environment when it is in use is unspecified. Processes using an environment often maintain open file descriptors for shared regions within it. On UNIX systems, the environment removal will usually succeed and processes that have already joined the region will continue to run in that region without change, however processes attempting to join the environment will either fail or create new regions. On other systems (e.g., Windows/NT), where the unlink(2) system call will fail if any process has an open file descriptor for the file, the region removal will fail.

Calling DbEnv.remove should not be necessary for most applications, as the Berkeley DB environment is cleaned up as part of normal database recovery procedures, however, applications may wish to call DbEnv.remove as part of application shutdown to free up system resources. Specifically, when the Db.DB_SYSTEM_MEM flag was specified to DbEnv.open, it may be useful to call DbEnv.remove in order to release system shared memory segments that have been allocated.

In the case of catastrophic or system failure, database recovery must be performed (see db_recover), or the Db.DB_RECOVER and Db.DB_RECOVER_FATAL flags to DbEnv.open must be specified when the environment is re-opened. Alternatively, if recovery is not required because no database state is maintained across failures, and the Db.DB_SYSTEM_MEM flag was not specified when the environment was created, it is possible to clean up an environment by removing all of the files in the environment directory that begin with the string prefix "__db", as no backing files are created in any other directory.

The flags value must be set to 0 or by bitwise inclusively OR'ing together one or more of the following values.

Db.DB_FORCE
If the Db.DB_FORCE flag is set, the environment is removed regardless of any processes that may still using it, and, no locks are acquired during this process. (Generally, the Db.DB_FORCE flag is only specified when applications were unable to shut down cleanly, and there is a risk that an application may have died holding a Berkeley DB lock.)

Db.DB_USE_ENVIRON
The Berkeley DB process' environment may be permitted to specify information to be used when naming files; see Berkeley DB File Naming. As permitting users to specify which files are used can create security problems, environment information will be used in file naming for all users only if the DB_USE_ENVIRON flag is set.

Db.DB_USE_ENVIRON_ROOT
The Berkeley DB process' environment may be permitted to specify information to be used when naming files; see Berkeley DB File Naming. As permitting users to specify which files are used can create security problems, if the DB_USE_ENVIRON_ROOT flag is set, environment information will be used for file naming only for users with appropriate permissions (e.g., on UNIX systems, users with a user-ID of 0).

In multi-threaded applications, only a single thread may call DbEnv.remove.

A DbEnv handle which has already been used to open an environment should not be used to call the DbEnv.remove method, a new DbEnv handle should be created for that purpose.

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

The DbEnv.remove method throws an exception that encapsulates a non-zero error value on failure.

Errors

EBUSY
The shared memory region was in use and the force flag was not set.

If the file or directory does not exist, the DbEnv.remove method will fail and throw a FileNotFoundException exception.

The DbEnv.remove method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods. If a catastrophic error has occurred, the DbEnv.remove method may fail and throw a DbRunRecoveryException, in which case all subsequent Berkeley DB calls will fail in the same way.

Class

DbEnv

See Also

DbEnv.close, DbEnv.open, DbEnv.remove, DbEnv.strerror, DbEnv.get_version_string DbEnv.set_cachesize, DbEnv.set_errcall, DbEnv.set_error_stream, DbEnv.set_errpfx, DbEnv.set_flags, DbEnv.set_mutexlocks, and DbEnv.set_verbose.

APIRef

Copyright Sleepycat Software