mirror of
https://github.com/postgres/postgres.git
synced 2025-04-25 21:42:33 +03:00
test_shm_mq: Replace WAIT_EVENT_EXTENSION with custom wait events
Two custom wait events are added here: - "TestShmMqBgWorkerStartup", when setting up a set of bgworkers in wait_for_workers_to_become_ready(). - "TestShmMqMessageQueue", when waiting for a queued message in test_shm_mq_pipelined(). Author: Masahiro Ikeda Discussion: https://postgr.es/m/197bce267fa691a0ac62c86c4ab904c4@oss.nttdata.com
This commit is contained in:
parent
c8e318b1b8
commit
3338a98382
@ -40,6 +40,9 @@ static void wait_for_workers_to_become_ready(worker_state *wstate,
|
||||
volatile test_shm_mq_header *hdr);
|
||||
static bool check_worker_status(worker_state *wstate);
|
||||
|
||||
/* value cached, fetched from shared memory */
|
||||
static uint32 we_bgworker_startup = 0;
|
||||
|
||||
/*
|
||||
* Set up a dynamic shared memory segment and zero or more background workers
|
||||
* for a test run.
|
||||
@ -278,9 +281,13 @@ wait_for_workers_to_become_ready(worker_state *wstate,
|
||||
break;
|
||||
}
|
||||
|
||||
/* first time, allocate or get the custom wait event */
|
||||
if (we_bgworker_startup == 0)
|
||||
we_bgworker_startup = WaitEventExtensionNew("TestShmMqBgWorkerStartup");
|
||||
|
||||
/* Wait to be signaled. */
|
||||
(void) WaitLatch(MyLatch, WL_LATCH_SET | WL_EXIT_ON_PM_DEATH, 0,
|
||||
WAIT_EVENT_EXTENSION);
|
||||
we_bgworker_startup);
|
||||
|
||||
/* Reset the latch so we don't spin. */
|
||||
ResetLatch(MyLatch);
|
||||
|
@ -28,6 +28,9 @@ PG_FUNCTION_INFO_V1(test_shm_mq_pipelined);
|
||||
static void verify_message(Size origlen, char *origdata, Size newlen,
|
||||
char *newdata);
|
||||
|
||||
/* value cached, fetched from shared memory */
|
||||
static uint32 we_message_queue = 0;
|
||||
|
||||
/*
|
||||
* Simple test of the shared memory message queue infrastructure.
|
||||
*
|
||||
@ -225,6 +228,10 @@ test_shm_mq_pipelined(PG_FUNCTION_ARGS)
|
||||
|
||||
if (wait)
|
||||
{
|
||||
/* first time, allocate or get the custom wait event */
|
||||
if (we_message_queue == 0)
|
||||
we_message_queue = WaitEventExtensionNew("TestShmMqMessageQueue");
|
||||
|
||||
/*
|
||||
* If we made no progress, wait for one of the other processes to
|
||||
* which we are connected to set our latch, indicating that they
|
||||
@ -232,7 +239,7 @@ test_shm_mq_pipelined(PG_FUNCTION_ARGS)
|
||||
* for us to do.
|
||||
*/
|
||||
(void) WaitLatch(MyLatch, WL_LATCH_SET | WL_EXIT_ON_PM_DEATH, 0,
|
||||
WAIT_EVENT_EXTENSION);
|
||||
we_message_queue);
|
||||
ResetLatch(MyLatch);
|
||||
CHECK_FOR_INTERRUPTS();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user