summaryrefslogtreecommitdiff
path: root/src/backend/storage/ipc
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/storage/ipc')
-rw-r--r--src/backend/storage/ipc/shmem.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/backend/storage/ipc/shmem.c b/src/backend/storage/ipc/shmem.c
index 04cfa1a812e..e317c0e1adf 100644
--- a/src/backend/storage/ipc/shmem.c
+++ b/src/backend/storage/ipc/shmem.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/storage/ipc/shmem.c,v 1.41 1999/06/03 13:33:13 vadim Exp $
+ * $Header: /cvsroot/pgsql/src/backend/storage/ipc/shmem.c,v 1.42 1999/06/06 20:19:35 vadim Exp $
*
*-------------------------------------------------------------------------
*/
@@ -652,9 +652,15 @@ GetSnapshotData(bool serializable)
snapshot->xip = (TransactionId *) malloc(have * sizeof(TransactionId));
snapshot->xmin = cid;
- ReadNewTransactionId(&(snapshot->xmax));
SpinAcquire(ShmemIndexLock);
+ /*
+ * Unfortunately, we have to call ReadNewTransactionId()
+ * after acquiring ShmemIndexLock above. It's not good because of
+ * ReadNewTransactionId() does SpinAcquire(OidGenLockId) but
+ * _necessary_.
+ */
+ ReadNewTransactionId(&(snapshot->xmax));
hash_seq((HTAB *) NULL);
while ((result = (ShmemIndexEnt *) hash_seq(ShmemIndex)) != NULL)