Peter Eisentraut <peter.eisentr...@2ndquadrant.com> wrote:

> On 2020-02-25 08:30, Antonin Houska wrote:
> > I'm trying to figure out what's specific about RS_EPHEMERAL and RS_TEMPORARY
> > slot kinds. The following comment (see definition of the
> > ReplicationSlotPersistency enumeration) tells when each kind is dropped
> 
> The general idea is that an "ephemeral" slot is a future persistent slot that
> is not completely initialized yet.  If there is a crash and you find an
> ephemeral slot, you can clean it up.  The name is perhaps a bit odd, you can
> think of it as an uninitialized one.  A temporary slot is one that behaves
> like a temporary table: It is removed at the end of a session.
> 
> Perhaps the implementation differences are not big or are none, but it's
> relevant for reporting.  For example, the pg_replication_slots view shows
> which slots are temporary.  You wouldn't want to show an ephemeral slot as
> temporary.

ok, so only comments seem to be the problem.

Anyway, the reason I started to think about it was that I noticed an Assert()
statement I considered inaccurate. Does this patch make sense?

-- 
Antonin Houska
Web: https://www.cybertec-postgresql.com

@@ -682,7 +682,7 @@ ReplicationSlotPersist(void)
        ReplicationSlot *slot = MyReplicationSlot;
 
        Assert(slot != NULL);
-       Assert(slot->data.persistency != RS_PERSISTENT);
+       Assert(slot->data.persistency == RS_EPHEMERAL);
 
        SpinLockAcquire(&slot->mutex);
        slot->data.persistency = RS_PERSISTENT;

Reply via email to