Re: NIO support - Mailing list pgsql-jdbc
From | Vitalii Tymchyshyn |
---|---|
Subject | Re: NIO support |
Date | |
Msg-id | 4F197F20.6020901@gmail.com Whole thread Raw |
In response to | Re: NIO support (Dave Cramer <pg@fastcrypt.com>) |
List | pgsql-jdbc |
20.01.12 16:06, Dave Cramer написав(ла): > Vitalii, > > Does this compile and run on java 1.4 ? I will check, but it should. NIO was introduced in 1.4 > Thanks for the note on the current bug. > > Dave Cramer > > dave.cramer(at)credativ(dot)ca > http://www.credativ.ca > > > > On Fri, Jan 20, 2012 at 8:54 AM, Vitalii Tymchyshyn<tivv00@gmail.com> wrote: >> Hello. >> >> This patch provides timeouts without additional threads. >> I am going to enhance it to additionally solve next problems (as for me this >> problem are easily solvable with NIO): >> 1) DeadLock when client and server send buffers fill up. This is rare case >> because it requires query to start generation output (e.g. notices) before >> all query data is sent to server. AFAIR this can be provoked by copying to >> table with trigger outputting notices. >> 2) When SSL is enabled, getNotifications does not return notifications until >> server is asked for anything. >> >> Also move to NIO may produce better performance, but this is still something >> to be checked. It may be needed to select carefully if Heap or Off-heap >> buffers should be used to get performance benefit. >> >> P.S. Unrelated to NIO, current setQueryTimeout code has bug since it treats >> timeout as being specified in milliseconds, while javadoc says it's in >> seconds. >> >> 20.01.12 14:05, Dave Cramer написав(ла): >> >>> Can you confirm that this patch is just to add time out ? >>> >>> If not can you outline what problem you are trying to solve ? >>> >>> Dave Cramer >>> >>> dave.cramer(at)credativ(dot)ca >>> http://www.credativ.ca >>> >>> >>> >>> 2012/1/19 Віталій Тимчишин<tivv00@gmail.com>: >>>> OK, I finally have first try of NIO support in the patch attached. >>>> The only current feature is query timeout without any additional threads. >>>> Please note that current driver has a bug: JDBC specs says timeout is in >>>> seconds and driver takes it as millis, fixed in my patch. >>>> Also current query timeout schema limitation is that query timeout >>>> processing still requires server round trips that are not under timeout >>>> control. I really don't see how much this differ from simply setting >>>> server-side timeout for fast connections. For slow connections it's still >>>> unreliable. Good thing that it is may be possible to enforce some kind of >>>> hard timeout with NIO schema as it's easy to control blocking calls. >>>> Limitations: only for V3 non-secure connections. Other connections use >>>> regular stream-based implementation. >>>> Planned features: >>>> * SSL with NIO. This should allow to receive notifications without >>>> server >>>> roundtrip in SSL mode >>>> * Read answer while sending query. This should make go away the problem >>>> when large query is blocked because answer must be read to send more data >>>> to >>>> server. >>>> >>>> Note that I have never worked with CVS and have problems to make patch >>>> with >>>> new files (AFAICS I can't add it to CVS with RO access). >>>> Comments are welcome. >>>> P.S. To work with SSL I need to start SSL tests. Any hints? >>>> >>>> -- >>>> Best regards, >>>> Vitalii Tymchyshyn >>>> >>>> >>>> -- >>>> Sent via pgsql-jdbc mailing list (pgsql-jdbc@postgresql.org) >>>> To make changes to your subscription: >>>> http://www.postgresql.org/mailpref/pgsql-jdbc >>>>
pgsql-jdbc by date: