On 2015-01-30 18:59:28 +0100, Heikki Linnakangas wrote: > On 01/15/2015 03:03 AM, Andres Freund wrote: > >0004: Process 'die' interrupts while reading/writing from the client socket. > > > > This is the reason Horiguchi-san started this thread. > > >+ ProcessClientWriteInterrupt(!port->noblock); > ... > >+/* > >+ * ProcessClientWriteInterrupt() - Process interrupts specific to client > >writes > >+ * > >+ * This is called just after low-level writes. That might be after the read > >+ * finished successfully, or it was interrupted via interrupt. 'blocked' > >tells > >+ * us whether the > >+ * > >+ * Must preserve errno! > >+ */ > >+void > >+ProcessClientWriteInterrupt(bool blocked) > > You're passing port->noblock as argument, but I thought the argument is > supposed to mean whether the write would've blocked, i.e. if the write > buffer was full.
Right. > port->noblock doesn't mean that. But perhaps I misunderstood this - > the comment on the 'blocked' argument above is a bit incomplete ;-). The point here is that we tried the send() and then were interrupted while waiting for the buffer to become writable. That pretty much implies that the write buffer is full. The !port->noblock is because we only are blocked on write if we're doinga blocking send, otherwise we'll just return control to the caller... I agree that this could use some more comments ;) Greetings, Andres Freund -- Andres Freund http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers