From d8fcddc558713c37690971f241be0ec542e90671 Mon Sep 17 00:00:00 2001 From: Naisila Puka <37271756+naisila@users.noreply.github.com> Date: Fri, 26 Sep 2025 16:47:23 +0300 Subject: [PATCH] Fix HaveRegisteredOrActiveSnapshot() crashes Part of https://github.com/citusdata/citus/commit/ce7ddc0d3da6b6a44e33a54a9e1f7c36e39175e0 Also updates images --- .github/workflows/build_and_test.yml | 2 +- src/backend/columnar/columnar_metadata.c | 2 ++ src/backend/distributed/metadata/node_metadata.c | 2 ++ src/backend/distributed/transaction/transaction_recovery.c | 2 ++ 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 4655add54..d25208483 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -32,7 +32,7 @@ jobs: style_checker_image_name: "ghcr.io/citusdata/stylechecker" style_checker_tools_version: "0.8.18" sql_snapshot_pg_version: "17.6" - image_suffix: "-dev-2a6c14f" + image_suffix: "-v4df94a0" pg15_version: '{ "major": "15", "full": "15.14" }' pg16_version: '{ "major": "16", "full": "16.10" }' pg17_version: '{ "major": "17", "full": "17.6" }' diff --git a/src/backend/columnar/columnar_metadata.c b/src/backend/columnar/columnar_metadata.c index a11138d0d..cc1afcaed 100644 --- a/src/backend/columnar/columnar_metadata.c +++ b/src/backend/columnar/columnar_metadata.c @@ -656,7 +656,9 @@ SaveStripeSkipList(RelFileLocator relfilelocator, uint64 stripe, nulls[Anum_columnar_chunk_maximum_value - 1] = true; } + PushActiveSnapshot(GetTransactionSnapshot()); InsertTupleAndEnforceConstraints(modifyState, values, nulls); + PopActiveSnapshot(); } } diff --git a/src/backend/distributed/metadata/node_metadata.c b/src/backend/distributed/metadata/node_metadata.c index c2a2abd60..94a6b5701 100644 --- a/src/backend/distributed/metadata/node_metadata.c +++ b/src/backend/distributed/metadata/node_metadata.c @@ -2930,7 +2930,9 @@ InsertNodeRow(int nodeid, char *nodeName, int32 nodePort, NodeMetadata *nodeMeta TupleDesc tupleDescriptor = RelationGetDescr(pgDistNode); HeapTuple heapTuple = heap_form_tuple(tupleDescriptor, values, isNulls); + PushActiveSnapshot(GetTransactionSnapshot()); CatalogTupleInsert(pgDistNode, heapTuple); + PopActiveSnapshot(); CitusInvalidateRelcacheByRelid(DistNodeRelationId()); diff --git a/src/backend/distributed/transaction/transaction_recovery.c b/src/backend/distributed/transaction/transaction_recovery.c index 59432a313..66a2df772 100644 --- a/src/backend/distributed/transaction/transaction_recovery.c +++ b/src/backend/distributed/transaction/transaction_recovery.c @@ -106,7 +106,9 @@ LogTransactionRecord(int32 groupId, char *transactionName, FullTransactionId out TupleDesc tupleDescriptor = RelationGetDescr(pgDistTransaction); HeapTuple heapTuple = heap_form_tuple(tupleDescriptor, values, isNulls); + PushActiveSnapshot(GetTransactionSnapshot()); CatalogTupleInsert(pgDistTransaction, heapTuple); + PopActiveSnapshot(); CommandCounterIncrement();