Skip to content
Snippets Groups Projects
Commit a32c3ec8 authored by Heikki Linnakangas's avatar Heikki Linnakangas
Browse files

Promote the assertion that XLogBeginInsert() is not called twice into ERROR.

Seems like cheap insurance for WAL bugs. A spurious call to
XLogBeginInsert() in itself would be fairly harmless, but if there is any
data registered and the insertion is not completed/cancelled properly, there
is a risk that the data ends up in a wrong WAL record.

Per Jeff Janes's suggestion.
parent a45c70ac
No related branches found
No related tags found
No related merge requests found
...@@ -122,12 +122,14 @@ XLogBeginInsert(void) ...@@ -122,12 +122,14 @@ XLogBeginInsert(void)
Assert(max_registered_block_id == 0); Assert(max_registered_block_id == 0);
Assert(mainrdata_last == (XLogRecData *) &mainrdata_head); Assert(mainrdata_last == (XLogRecData *) &mainrdata_head);
Assert(mainrdata_len == 0); Assert(mainrdata_len == 0);
Assert(!begininsert_called);
/* cross-check on whether we should be here or not */ /* cross-check on whether we should be here or not */
if (!XLogInsertAllowed()) if (!XLogInsertAllowed())
elog(ERROR, "cannot make new WAL entries during recovery"); elog(ERROR, "cannot make new WAL entries during recovery");
if (begininsert_called)
elog(ERROR, "XLogBeginInsert was already called");
begininsert_called = true; begininsert_called = true;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment