summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backend/commands/indexcmds.c6
-rw-r--r--src/backend/utils/time/snapmgr.c14
-rw-r--r--src/include/utils/snapmgr.h2
3 files changed, 22 insertions, 0 deletions
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 05afcb0088d..e8b9d1a4dd8 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -758,6 +758,8 @@ DefineIndex(Oid relationId,
*/
validate_index(relationId, indexRelationId, snapshot);
+ PrintSnapMgrStatus("concurrent index build, before snapshot release");
+
/*
* Drop the reference snapshot. We must do this before waiting out other
* snapshot holders, else we will deadlock against other processes also
@@ -770,9 +772,13 @@ DefineIndex(Oid relationId,
limitXmin = snapshot->xmin;
PopActiveSnapshot();
+ PrintSnapMgrStatus("concurrent index build, after PopActiveSnapshot");
UnregisterSnapshot(snapshot);
+ PrintSnapMgrStatus("concurrent index build, after UnregisterSnapshot");
InvalidateCatalogSnapshot();
+ PrintSnapMgrStatus("concurrent index build, after InvalidateCatalogSnapshot");
+
/*
* The index is now valid in the sense that it contains all currently
* interesting tuples. But since it might not contain tuples deleted just
diff --git a/src/backend/utils/time/snapmgr.c b/src/backend/utils/time/snapmgr.c
index 331c91044f2..2a3d915e1f9 100644
--- a/src/backend/utils/time/snapmgr.c
+++ b/src/backend/utils/time/snapmgr.c
@@ -1401,3 +1401,17 @@ HistoricSnapshotGetTupleCids(void)
Assert(HistoricSnapshotActive());
return tuplecid_data;
}
+
+void
+PrintSnapMgrStatus(const char *context)
+{
+ int asdepth = 0;
+ ActiveSnapshotElt *active;
+
+ for (active = ActiveSnapshot; active != NULL; active = active->as_next)
+ asdepth++;
+
+ elog(LOG, "%s: %d reg snaps, %d active snaps, cat snap %p, xmin %u",
+ context, RegisteredSnapshots, asdepth,
+ CatalogSnapshot, MyPgXact->xmin);
+}
diff --git a/src/include/utils/snapmgr.h b/src/include/utils/snapmgr.h
index c6aa3619508..71452d9afe1 100644
--- a/src/include/utils/snapmgr.h
+++ b/src/include/utils/snapmgr.h
@@ -65,4 +65,6 @@ extern void SetupHistoricSnapshot(Snapshot snapshot_now, struct HTAB *tuplecids)
extern void TeardownHistoricSnapshot(bool is_error);
extern bool HistoricSnapshotActive(void);
+extern void PrintSnapMgrStatus(const char *context);
+
#endif /* SNAPMGR_H */