aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/replication/slot.c43
-rw-r--r--src/backend/storage/lmgr/lwlock.c7
-rw-r--r--src/backend/utils/init/postinit.c18
-rw-r--r--src/bin/pg_basebackup/pg_basebackup.c10
-rw-r--r--src/include/storage/lwlock.h1
-rw-r--r--src/test/recovery/t/019_replslot_limit.pl13
6 files changed, 5 insertions, 87 deletions
diff --git a/src/backend/replication/slot.c b/src/backend/replication/slot.c
index e5c2102bcd5..850b74936fe 100644
--- a/src/backend/replication/slot.c
+++ b/src/backend/replication/slot.c
@@ -177,10 +177,6 @@ ReplicationSlotInitialize(void)
static void
ReplicationSlotShmemExit(int code, Datum arg)
{
- /* temp debugging aid to analyze 019_replslot_limit failures */
- elog(DEBUG3, "replication slot exit hook, %s active slot",
- MyReplicationSlot != NULL ? "with" : "without");
-
/* Make sure active replication slots are released */
if (MyReplicationSlot != NULL)
ReplicationSlotRelease();
@@ -582,9 +578,6 @@ ReplicationSlotCleanup(void)
Assert(MyReplicationSlot == NULL);
restart:
- /* temp debugging aid to analyze 019_replslot_limit failures */
- elog(DEBUG3, "temporary replication slot cleanup: begin");
-
LWLockAcquire(ReplicationSlotControlLock, LW_SHARED);
for (i = 0; i < max_replication_slots; i++)
{
@@ -593,10 +586,6 @@ restart:
if (!s->in_use)
continue;
- /* unlocked read of active_pid is ok for debugging purposes */
- elog(DEBUG3, "temporary replication slot cleanup: %d in use, active_pid: %d",
- i, (int) s->active_pid);
-
SpinLockAcquire(&s->mutex);
if (s->active_pid == MyProcPid)
{
@@ -614,8 +603,6 @@ restart:
}
LWLockRelease(ReplicationSlotControlLock);
-
- elog(DEBUG3, "temporary replication slot cleanup: done");
}
/*
@@ -657,9 +644,6 @@ ReplicationSlotDropPtr(ReplicationSlot *slot)
char path[MAXPGPATH];
char tmppath[MAXPGPATH];
- /* temp debugging aid to analyze 019_replslot_limit failures */
- elog(DEBUG3, "replication slot drop: %s: begin", NameStr(slot->data.name));
-
/*
* If some other backend ran this code concurrently with us, we might try
* to delete a slot with a certain name while someone else was trying to
@@ -710,9 +694,6 @@ ReplicationSlotDropPtr(ReplicationSlot *slot)
path, tmppath)));
}
- elog(DEBUG3, "replication slot drop: %s: removed on-disk",
- NameStr(slot->data.name));
-
/*
* The slot is definitely gone. Lock out concurrent scans of the array
* long enough to kill it. It's OK to clear the active PID here without
@@ -726,13 +707,8 @@ ReplicationSlotDropPtr(ReplicationSlot *slot)
slot->active_pid = 0;
slot->in_use = false;
LWLockRelease(ReplicationSlotControlLock);
-
- elog(DEBUG3, "replication slot drop: %s: marked as not in use", NameStr(slot->data.name));
-
ConditionVariableBroadcast(&slot->active_cv);
- elog(DEBUG3, "replication slot drop: %s: notified others", NameStr(slot->data.name));
-
/*
* Slot is dead and doesn't prevent resource removal anymore, recompute
* limits.
@@ -740,8 +716,6 @@ ReplicationSlotDropPtr(ReplicationSlot *slot)
ReplicationSlotsComputeRequiredXmin(false);
ReplicationSlotsComputeRequiredLSN();
- elog(DEBUG3, "replication slot drop: %s: computed required", NameStr(slot->data.name));
-
/*
* If removing the directory fails, the worst thing that will happen is
* that the user won't be able to create a new slot with the same name
@@ -751,8 +725,6 @@ ReplicationSlotDropPtr(ReplicationSlot *slot)
ereport(WARNING,
(errmsg("could not remove directory \"%s\"", tmppath)));
- elog(DEBUG3, "replication slot drop: %s: removed directory", NameStr(slot->data.name));
-
/*
* Drop the statistics entry for the replication slot. Do this while
* holding ReplicationSlotAllocationLock so that we don't drop a
@@ -767,9 +739,6 @@ ReplicationSlotDropPtr(ReplicationSlot *slot)
* a slot while we're still cleaning up the detritus of the old one.
*/
LWLockRelease(ReplicationSlotAllocationLock);
-
- elog(DEBUG3, "replication slot drop: %s: done",
- NameStr(slot->data.name));
}
/*
@@ -1329,12 +1298,6 @@ InvalidatePossiblyObsoleteSlot(ReplicationSlot *s, XLogRecPtr oldestLSN,
(void) kill(active_pid, SIGTERM);
last_signaled_pid = active_pid;
}
- else
- {
- /* temp debugging aid to analyze 019_replslot_limit failures */
- elog(DEBUG3, "not signalling process %d during invalidation of slot \"%s\"",
- active_pid, NameStr(slotname));
- }
/* Wait until the slot is released. */
ConditionVariableSleep(&s->active_cv,
@@ -1398,10 +1361,6 @@ InvalidateObsoleteReplicationSlots(XLogSegNo oldestSegno)
XLogSegNoOffsetToRecPtr(oldestSegno, 0, wal_segment_size, oldestLSN);
restart:
- /* temp debugging aid to analyze 019_replslot_limit failures */
- elog(DEBUG3, "begin invalidating obsolete replication slots older than %X/%X",
- LSN_FORMAT_ARGS(oldestLSN));
-
LWLockAcquire(ReplicationSlotControlLock, LW_SHARED);
for (int i = 0; i < max_replication_slots; i++)
{
@@ -1427,8 +1386,6 @@ restart:
ReplicationSlotsComputeRequiredLSN();
}
- elog(DEBUG3, "done invalidating obsolete replication slots");
-
return invalidated;
}
diff --git a/src/backend/storage/lmgr/lwlock.c b/src/backend/storage/lmgr/lwlock.c
index 8aef909037d..fc5c76a48f8 100644
--- a/src/backend/storage/lmgr/lwlock.c
+++ b/src/backend/storage/lmgr/lwlock.c
@@ -1942,10 +1942,3 @@ LWLockHeldByMeInMode(LWLock *l, LWLockMode mode)
}
return false;
}
-
-/* temp debugging aid to analyze 019_replslot_limit failures */
-int
-LWLockHeldCount(void)
-{
- return num_held_lwlocks;
-}
diff --git a/src/backend/utils/init/postinit.c b/src/backend/utils/init/postinit.c
index 6b9082604fb..a5c208a20a8 100644
--- a/src/backend/utils/init/postinit.c
+++ b/src/backend/utils/init/postinit.c
@@ -1231,24 +1231,6 @@ ShutdownPostgres(int code, Datum arg)
* them explicitly.
*/
LockReleaseAll(USER_LOCKMETHOD, true);
-
- /*
- * temp debugging aid to analyze 019_replslot_limit failures
- *
- * If an error were thrown outside of a transaction nothing up to now
- * would have released lwlocks. We probably will add an
- * LWLockReleaseAll(). But for now make it easier to understand such cases
- * by warning if any lwlocks are held.
- */
-#ifdef USE_ASSERT_CHECKING
- {
- int held_lwlocks = LWLockHeldCount();
-
- if (held_lwlocks)
- elog(WARNING, "holding %d lwlocks at the end of ShutdownPostgres()",
- held_lwlocks);
- }
-#endif
}
diff --git a/src/bin/pg_basebackup/pg_basebackup.c b/src/bin/pg_basebackup/pg_basebackup.c
index b66eac707a4..4445a86aee2 100644
--- a/src/bin/pg_basebackup/pg_basebackup.c
+++ b/src/bin/pg_basebackup/pg_basebackup.c
@@ -694,16 +694,8 @@ StartLogStreamer(char *startpos, uint32 timeline, char *sysidentifier,
bgchild = fork();
if (bgchild == 0)
{
- int ret;
-
/* in child process */
- ret = LogStreamerMain(param);
-
- /* temp debugging aid to analyze 019_replslot_limit failures */
- if (verbose)
- pg_log_info("log streamer with pid %d exiting", getpid());
-
- exit(ret);
+ exit(LogStreamerMain(param));
}
else if (bgchild < 0)
pg_fatal("could not create background process: %m");
diff --git a/src/include/storage/lwlock.h b/src/include/storage/lwlock.h
index e8c91139f89..52b32bda991 100644
--- a/src/include/storage/lwlock.h
+++ b/src/include/storage/lwlock.h
@@ -121,7 +121,6 @@ extern void LWLockReleaseClearVar(LWLock *lock, uint64 *valptr, uint64 val);
extern void LWLockReleaseAll(void);
extern bool LWLockHeldByMe(LWLock *lock);
extern bool LWLockHeldByMeInMode(LWLock *lock, LWLockMode mode);
-extern int LWLockHeldCount(void);
extern bool LWLockWaitForVar(LWLock *lock, uint64 *valptr, uint64 oldval, uint64 *newval);
extern void LWLockUpdateVar(LWLock *lock, uint64 *valptr, uint64 value);
diff --git a/src/test/recovery/t/019_replslot_limit.pl b/src/test/recovery/t/019_replslot_limit.pl
index 6bbf55c3ee1..84c9c4b0b3c 100644
--- a/src/test/recovery/t/019_replslot_limit.pl
+++ b/src/test/recovery/t/019_replslot_limit.pl
@@ -316,16 +316,13 @@ $node_primary3->append_conf(
max_wal_size = 2MB
log_checkpoints = yes
max_slot_wal_keep_size = 1MB
-
- # temp debugging aid to analyze 019_replslot_limit failures
- log_min_messages=debug3
));
$node_primary3->start;
$node_primary3->safe_psql('postgres',
"SELECT pg_create_physical_replication_slot('rep3')");
# Take backup
$backup_name = 'my_backup';
-$node_primary3->backup($backup_name, backup_options => ['--verbose']);
+$node_primary3->backup($backup_name);
# Create standby
my $node_standby3 = PostgreSQL::Test::Cluster->new('standby_3');
$node_standby3->init_from_backup($node_primary3, $backup_name,
@@ -336,11 +333,9 @@ $node_primary3->wait_for_catchup($node_standby3);
my $senderpid;
-# We've seen occasional cases where multiple walsender pids are active. It
-# could be that we're just observing process shutdown being slow. To collect
-# more information, retry a couple times, print a bit of debugging information
-# each iteration. Don't fail the test if retries find just one pid, the
-# buildfarm failures are too noisy.
+# We've seen occasional cases where multiple walsender pids are still active
+# at this point, apparently just due to process shutdown being slow. To avoid
+# spurious failures, retry a couple times.
my $i = 0;
while (1)
{