On Tue, Mar 10, 2015 at 12:26 PM, Amit Kapila <
amit.kapila16@gmail.com> wrote:
>
> On Tue, Mar 10, 2015 at 10:23 AM, Haribabu Kommi <
kommi.haribabu@gmail.com> wrote:
> >
> > On Tue, Mar 10, 2015 at 3:09 PM, Amit Kapila <
amit.kapila16@gmail.com> wrote:
> >
> > > I have currently modelled it based on existing rescan for seqscan
> > > (ExecReScanSeqScan()) which means it will begin the scan again.
> > > Basically if the workers are already started/initialized by previous
> > > scan, then re-initialize them (refer function ExecReScanFunnel() in
> > > patch).
> > >
> > > Can you elaborate more if you think current handling is not sufficient
> > > for any case?
> >
> > From ExecReScanFunnel function it seems that the re-scan waits till
> > all the workers
> > has to be finished to start again the next scan. Are the workers will
> > stop the current
> > ongoing task? otherwise this may decrease the performance instead of
> > improving as i feel.
> >
>
> Okay, performance-wise it might effect such a case, but I think we can
> handle it by not calling WaitForParallelWorkersToFinish(),
> as DestroyParallelContext() will automatically terminate all the workers.
>
We can't directly call DestroyParallelContext() to terminate workers as
it can so happen that by that time some of the workers are still not started.
So that can lead to problem. I think what we need here is a way to know
whether all workers are started. (basically need a new function
WaitForParallelWorkersToStart()). This API needs to be provided by