From 99a1094d0f439d1bd91b6637b1ba5840ad369790 Mon Sep 17 00:00:00 2001
From: Thomas Munro <thomas.munro@enterprisedb.com>
Date: Thu, 25 Jan 2018 09:56:18 +1300
Subject: [PATCH 1/3] Chaos monkey fork failure.

---
 src/backend/postmaster/postmaster.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index f3ddf828bbe..2eb1fdadd85 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -5663,6 +5663,15 @@ bgworker_forkexec(int shmem_slot)
 }
 #endif
 
+static int
+chaos_monkey_fork_process(void)
+{
+	if (rand() < (RAND_MAX / 2))
+		return fork_process();
+	else
+		return -1;
+}
+
 /*
  * Start a new bgworker.
  * Starting time conditions must have been checked already.
@@ -5701,7 +5710,7 @@ do_start_bgworker(RegisteredBgWorker *rw)
 #ifdef EXEC_BACKEND
 	switch ((worker_pid = bgworker_forkexec(rw->rw_shmem_slot)))
 #else
-	switch ((worker_pid = fork_process()))
+	switch ((worker_pid = chaos_monkey_fork_process()))
 #endif
 	{
 		case -1:
-- 
2.15.1

