diff --git a/src/backend/replication/walreceiver.c b/src/backend/replication/walreceiver.c
index 831718c859..b9a7c73ed7 100644
--- a/src/backend/replication/walreceiver.c
+++ b/src/backend/replication/walreceiver.c
@@ -1011,6 +1011,29 @@ XLogWalRcvWrite(char *buf, Size nbytes, XLogRecPtr recptr)
 
 			recvFile = -1;
 		}
+
+		{
+			/* fake oneshot SIGTERM just at segment end */
+			struct stat b;
+			char *sigfile1 = "/tmp/hoge1";
+			char *sigfile2 = "/tmp/hoge2";
+
+			if (LogstreamResult.Write % wal_segment_size == 0 &&
+				stat(sigfile1, &b) == 0)
+			{
+				unlink(sigfile1);
+				got_SIGTERM = true;
+				ereport(LOG,(errmsg("STOP BY trig1@%lX", LogstreamResult.Write)));
+			}
+
+			if (LogstreamResult.Write % wal_segment_size == 0x500000 &&
+				stat(sigfile2, &b) == 0)
+			{
+				unlink(sigfile2);
+				got_SIGTERM = true;
+				ereport(LOG,(errmsg("STOP BY trig2@%lX", LogstreamResult.Write)));
+			}
+		}
 	}
 
 	/* Update shared-memory status */
