Db::set_paniccall

APIRef

#include <db_cxx.h>

int Db::set_paniccall( void (*db_paniccall_fcn)(DbEnv *dbenv, int errval));

Description

Errors can occur in the Berkeley DB library where the only solution is to shut down the application and run recovery. (For example, if Berkeley DB is unable to write log records to disk because there is insufficient disk space.) In these cases, when the C++ error model has been configured so that the individual Berkeley DB methods return error codes (see DbException for more information), the value DB_RUNRECOVERY is returned by Berkeley DB methods.

In these cases, it is also often simpler to shut down the application when such errors occur rather than attempting to gracefully return up the stack. The Db::set_paniccall method is used to specify a method to be called when DB_RUNRECOVERY is about to be returned from a Berkeley DB method. When called, the dbenv argument will be a reference to the current environment, and the errval argument is the error value that would have been returned to the calling method.

For Db handles opened inside of Berkeley DB environments, calling the Db::set_paniccall method affects the entire environment and is equivalent to calling the DbEnv::set_paniccall method.

The Db::set_paniccall interface may be used to configure Berkeley DB at any time during the life of the application.

The Db::set_paniccall 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.

Class

DbEnv

See Also

DbEnv::close, DbEnv::open, DbEnv::remove, DbEnv::err, DbEnv::strerror, DbEnv::version, DbEnv::set_cachesize, DbEnv::set_errcall, DbEnv::set_errfile, DbEnv::set_error_stream, DbEnv::set_errpfx, DbEnv::set_flags, DbEnv::set_mutexlocks, DbEnv::set_paniccall, and DbEnv::set_verbose.

APIRef

Copyright Sleepycat Software