There are a number of functions that flush pages from the Berkeley DB shared memory buffer pool
to disk. Most of those functions can potentially fail because a page that needs to be flushed
is not currently available. However, this is not a hard failure and is rarely cause for
concern. In the Berkeley DB 3.2 release, the C++ API (if that API is configured to throw
exceptions) and the Java API have been changed so that this failure does not throw an exception,
but rather returns a non-zero error code of DB_INCOMPLETE
.
The following C++ methods will return DB_INCOMPLETE
rather than throw
an exception:
Db::close,
Db::sync,
DbEnv::memp_sync,
DbEnv::txn_checkpoint,
and DbMpoolFile::memp_fsync.
The following Java methods are now declared "public int" rather than "public void", and will
return Db.DB_INCOMPLETE
rather than throw an exception:
Db.close()
, Db.sync()
, and
DbEnv.checkpoint()
.
It is likely that the only change required by any application will be those currently checking
for a DB_INCOMPLETE
return that has been encapsulated in an exception.