Adjust input value to WaitEventSetWait() in ExecAppendAsyncEventWait().
authorEtsuro Fujita <efujita@postgresql.org>
Tue, 6 Apr 2021 10:15:00 +0000 (19:15 +0900)
committerEtsuro Fujita <efujita@postgresql.org>
Tue, 6 Apr 2021 10:15:00 +0000 (19:15 +0900)
Adjust the number of events given to WaitEventSetWait() so that it
doesn't exceed the maximum number of events in the WaitEventSet given
to that function (set->nevents_space) in hopes of making the buildfarm
green.

Per valgrind failure report from Tom Lane and the buildfarm.

Author: Etsuro Fujita
Discussion: https://postgr.es/m/3411577.1617289776%40sss.pgh.pa.us

src/backend/executor/nodeAppend.c

index 7da8ffe0652073895cd8902eee5d9a78012f1aaa..c25275726860c33d2d50a55d49c4de33d6e42145 100644 (file)
@@ -1001,6 +1001,7 @@ ExecAppendAsyncEventWait(AppendState *node)
    long        timeout = node->as_syncdone ? -1 : 0;
    WaitEvent   occurred_event[EVENT_BUFFER_SIZE];
    int         noccurred;
+   int         nevents;
    int         i;
 
    /* We should never be called when there are no valid async subplans. */
@@ -1022,8 +1023,9 @@ ExecAppendAsyncEventWait(AppendState *node)
    }
 
    /* Wait for at least one event to occur. */
+   nevents = Min(node->as_nasyncplans + 1, EVENT_BUFFER_SIZE);
    noccurred = WaitEventSetWait(node->as_eventset, timeout, occurred_event,
-                                EVENT_BUFFER_SIZE, WAIT_EVENT_APPEND_READY);
+                                nevents, WAIT_EVENT_APPEND_READY);
    FreeWaitEventSet(node->as_eventset);
    node->as_eventset = NULL;
    if (noccurred == 0)