From da6fa415dd3f1269d56ec6841b9a33268e87ddf2 Mon Sep 17 00:00:00 2001 From: Kieran Date: Fri, 19 Jan 2024 13:25:14 +0000 Subject: [PATCH] fix: use command queue for batch event write --- packages/worker-relay/src/worker.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/worker-relay/src/worker.ts b/packages/worker-relay/src/worker.ts index 4dfafb8f..ad2e0a33 100644 --- a/packages/worker-relay/src/worker.ts +++ b/packages/worker-relay/src/worker.ts @@ -31,9 +31,14 @@ let eventWriteQueue: Array = []; async function insertBatch() { // Only insert event batches when the command queue is empty // This is to make req's execute first and not block them - if (relay && eventWriteQueue.length > 0 && cmdQueue.length === 0) { - relay.eventBatch(eventWriteQueue); - eventWriteQueue = []; + if (eventWriteQueue.length > 0 && cmdQueue.length === 0) { + await barrierQueue(cmdQueue, async () => { + if (relay) { + const toWrite = [...eventWriteQueue]; + eventWriteQueue = []; + relay.eventBatch(toWrite); + } + }); } setTimeout(() => insertBatch(), 100); }