From: | Kyotaro HORIGUCHI <horiguchi(dot)kyotaro(at)lab(dot)ntt(dot)co(dot)jp> |
---|---|
To: | tgl(at)sss(dot)pgh(dot)pa(dot)us |
Cc: | alvherre(at)2ndquadrant(dot)com, pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: Parallel pg_dump's error reporting doesn't work worth squat |
Date: | 2016-06-06 10:07:21 |
Message-ID: | 20160606.190721.223349768.horiguchi.kyotaro@lab.ntt.co.jp |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
How about silencing the workers on termination?
# Build on Windows (with VC?) is very time consuming...
At Fri, 03 Jun 2016 09:44:30 -0400, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote in <11515(dot)1464961470(at)sss(dot)pgh(dot)pa(dot)us>
> Kyotaro HORIGUCHI <horiguchi(dot)kyotaro(at)lab(dot)ntt(dot)co(dot)jp> writes:
> > For sure, any of the "dangers" of TerminateThread don't matter
> > for this case.
>
> I think that this one:
>
> >> If the target thread is allocating memory from the heap, the heap
> >> lock will not be released.
>
> is potentially a hazard, which is why I made sure to use write_stderr
> later on in the console interrupt handler. Your original suggestion
> to use write_msg would end up going through fprintf, which might well
> use malloc internally. (It's possible that Windows' version of write()
> could too, I suppose, but that's probably as low-level as we are
> going to get.)
I have to admit that I forgot about the possible malloc's, and
PQcancel() can be blocked from the same reason. What is worse,
even if we managed to avoid this particular disaster, the MSDN
page says the problems are *for example*. So if we don't allow
any possible unknown blocking on ctrl-C termination and want to
forcibly terminate workers, we might have to use process instead
of thread for worker entity. (This might reduce the difference
related to WIN32..)
We also might be able to cause immediate process termination for
the second Ctrl-C but this seems to lead to other issues.
If the issue to be settled here is the unwanted error messages,
we could set a flag to instruct write_msg to sit silent. Anyway
the workers should have been dead that time so discarding any
error messages don't matter.
What do you think about this?
Timeout for select still seems to be needless.
regards,
--
Kyotaro Horiguchi
NTT Open Source Software Center
Attachment | Content-Type | Size |
---|---|---|
dump-restore-sigint-1-silence-workers-win32.patch | text/x-patch | 3.9 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Amit Kapila | 2016-06-06 10:07:33 | Re: [sqlsmith] Failed assertion in parallel worker (ExecInitSubPlan) |
Previous Message | Robert Haas | 2016-06-06 09:34:32 | Re: Reviewing freeze map code |