diff --git a/src/backend/replication/logical/snapbuild.c b/src/backend/replication/logical/snapbuild.c
index 0d7bddbe4ed..d234af82d52 100644
--- a/src/backend/replication/logical/snapbuild.c
+++ b/src/backend/replication/logical/snapbuild.c
@@ -578,8 +578,6 @@ SnapBuildExportSnapshot(SnapBuild *builder)
 Snapshot
 SnapBuildGetOrBuildSnapshot(SnapBuild *builder)
 {
-	Assert(builder->state == SNAPBUILD_CONSISTENT);
-
 	/* only build a new snapshot if we don't have a prebuilt one */
 	if (builder->snapshot == NULL)
 	{
@@ -660,21 +658,15 @@ SnapBuildProcessChange(SnapBuild *builder, TransactionId xid, XLogRecPtr lsn)
 	 */
 	if (!ReorderBufferXidHasBaseSnapshot(builder->reorder, xid))
 	{
-		/* only build a new snapshot if we don't have a prebuilt one */
-		if (builder->snapshot == NULL)
-		{
-			builder->snapshot = SnapBuildBuildSnapshot(builder);
-			/* increase refcount for the snapshot builder */
-			SnapBuildSnapIncRefcount(builder->snapshot);
-		}
+		Snapshot snapshot =  SnapBuildGetOrBuildSnapshot(builder);
 
 		/*
 		 * Increase refcount for the transaction we're handing the snapshot
 		 * out to.
 		 */
-		SnapBuildSnapIncRefcount(builder->snapshot);
+		SnapBuildSnapIncRefcount(snapshot);
 		ReorderBufferSetBaseSnapshot(builder->reorder, xid, lsn,
-									 builder->snapshot);
+									 snapshot);
 	}
 
 	return true;
@@ -940,20 +932,6 @@ SnapBuildCommitTxn(SnapBuild *builder, XLogRecPtr lsn, TransactionId xid,
 
 	TransactionId xmax = xid;
 
-	/*
-	 * Transactions preceding BUILDING_SNAPSHOT will neither be decoded, nor
-	 * will they be part of a snapshot.  So we don't need to record anything.
-	 */
-	if (builder->state == SNAPBUILD_START ||
-		(builder->state == SNAPBUILD_BUILDING_SNAPSHOT &&
-		 TransactionIdPrecedes(xid, builder->next_phase_at)))
-	{
-		/* ensure that only commits after this are getting replayed */
-		if (builder->start_decoding_at <= lsn)
-			builder->start_decoding_at = lsn + 1;
-		return;
-	}
-
 	if (builder->state < SNAPBUILD_CONSISTENT)
 	{
 		/* ensure that only commits after this are getting replayed */
@@ -1054,13 +1032,6 @@ SnapBuildCommitTxn(SnapBuild *builder, XLogRecPtr lsn, TransactionId xid,
 	/* if there's any reason to build a historic snapshot, do so now */
 	if (needs_snapshot)
 	{
-		/*
-		 * If we haven't built a complete snapshot yet there's no need to hand
-		 * it out, it wouldn't (and couldn't) be used anyway.
-		 */
-		if (builder->state < SNAPBUILD_FULL_SNAPSHOT)
-			return;
-
 		/*
 		 * Decrease the snapshot builder's refcount of the old snapshot, note
 		 * that it still will be used if it has been handed out to the
