if (target == null) {
/* fault object in from log */
if (lsn == DbLsn.NULL_LSN) {
if (!isKnownDeleted()) {
throw new DatabaseException(IN.makeFetchErrorMsg
("NULL_LSN without KnownDeleted", in, lsn, state));
}
/* Ignore a NULL_LSN (return null) if KnownDeleted is set. */
} else {
try {
EnvironmentImpl env = database.getDbEnvironment();
Node node = (Node) env.getLogManager().get(lsn);
node.postFetchInit(database, lsn);
target = node;
if (in != null) {
in.updateMemorySize(null, target);
}
} catch (LogFileNotFoundException LNFE) {
if (!isKnownDeleted() && !isPendingDeleted()) {
throw new DatabaseException
(IN.makeFetchErrorMsg
(LNFE.toString(), in, lsn, state),
LNFE);
}
/* Ignore. Cleaner got to it, so just return null. */
} catch (Exception e) {
throw new DatabaseException
(IN.makeFetchErrorMsg(e.toString(), in, lsn, state),
e);
}
}
}