aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils
diff options
context:
space:
mode:
authorAmit Kapila <akapila@postgresql.org>2024-08-21 09:08:16 +0530
committerAmit Kapila <akapila@postgresql.org>2024-08-21 09:08:16 +0530
commit915aafe82a7c31e9f7452e8cedf6371c318388bd (patch)
treedc87b09ede1d405318255281f36dab53f26c1278 /src/backend/utils
parent5effd5970429cdac56c8219eb4c0b8b047cac320 (diff)
downloadpostgresql-915aafe82a7c31e9f7452e8cedf6371c318388bd.tar.gz
postgresql-915aafe82a7c31e9f7452e8cedf6371c318388bd.zip
Don't advance origin during apply failure.
We advance origin progress during abort on successful streaming and application of ROLLBACK in parallel streaming mode. But the origin shouldn't be advanced during an error or unsuccessful apply due to shutdown. Otherwise, it will result in a transaction loss as such a transaction won't be sent again by the server. Reported-by: Hou Zhijie Author: Hayato Kuroda and Shveta Malik Reviewed-by: Amit Kapila Backpatch-through: 16 Discussion: https://postgr.es/m/TYAPR01MB5692FAC23BE40C69DA8ED4AFF5B92@TYAPR01MB5692.jpnprd01.prod.outlook.com
Diffstat (limited to 'src/backend/utils')
-rw-r--r--src/backend/utils/error/elog.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c
index d1d1632bdd4..b924b524d0b 100644
--- a/src/backend/utils/error/elog.c
+++ b/src/backend/utils/error/elog.c
@@ -1569,6 +1569,23 @@ geterrcode(void)
}
/*
+ * geterrlevel --- return the currently set error level
+ *
+ * This is only intended for use in error callback subroutines, since there
+ * is no other place outside elog.c where the concept is meaningful.
+ */
+int
+geterrlevel(void)
+{
+ ErrorData *edata = &errordata[errordata_stack_depth];
+
+ /* we don't bother incrementing recursion_depth */
+ CHECK_STACK_DEPTH();
+
+ return edata->elevel;
+}
+
+/*
* geterrposition --- return the currently set error position (0 if none)
*
* This is only intended for use in error callback subroutines, since there