From 1dd73f872d0a2ed9d400f13dcb8eb580d8210723 Mon Sep 17 00:00:00 2001 From: Mark Hannum Date: Mon, 3 Mar 2025 15:32:10 -0500 Subject: [PATCH] Abort on recovery failure Signed-off-by: Mark Hannum --- berkdb/db/db_dup.c | 7 ++++--- berkdb/env/env_recover.c | 2 -- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/berkdb/db/db_dup.c b/berkdb/db/db_dup.c index 3773ef07fe..56a3944609 100644 --- a/berkdb/db/db_dup.c +++ b/berkdb/db/db_dup.c @@ -303,9 +303,10 @@ __db_pitem_opcode(dbc, pagep, indx, nbytes, hdr, data, opcode) } if (nbytes > P_FREESPACE(dbp, pagep)) { - logmsg(LOGMSG_ERROR, "%s nbytes:%u freespace:%"PRId64"\n", - __func__, nbytes, (int64_t)P_FREESPACE(dbp, pagep)); - DB_ASSERT(nbytes <= P_FREESPACE(dbp, pagep)); + logmsg(LOGMSG_ERROR, "%s nbytes:%u freespace:%"PRId64"\n", + __func__, nbytes, (int64_t)P_FREESPACE(dbp, pagep)); + dbp->dbenv->log_flush(dbp->dbenv, NULL); + abort(); return (EINVAL); } diff --git a/berkdb/env/env_recover.c b/berkdb/env/env_recover.c index 647f070469..93b51d5c5f 100644 --- a/berkdb/env/env_recover.c +++ b/berkdb/env/env_recover.c @@ -1679,10 +1679,8 @@ __db_apprec(dbenv, max_lsn, trunclsn, update, flags) msgerr: __db_err(dbenv, "Recovery function for LSN %lu %lu failed on %s pass", (u_long) lsn.file, (u_long) lsn.offset, pass); -#if defined (DEBUG_ABORT_ON_RECOVERY_FAILURE) __log_flush(dbenv, NULL); abort(); -#endif } err: if (logc != NULL && (t_ret = __log_c_close(logc)) != 0 && ret == 0)