Re: NIO support

From: Vitalii Tymchyshyn <tivv00(at)gmail(dot)com>
To: Dave Cramer <pg(at)fastcrypt(dot)com>
Cc: PG-JDBC Mailing List <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: NIO support
Date: 2012-01-20 14:50:08
Message-ID: 4F197F20.6020901@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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(at)gmail(dot)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(at)gmail(dot)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(at)postgresql(dot)org)
>>>> To make changes to your subscription:
>>>> http://www.postgresql.org/mailpref/pgsql-jdbc
>>>>

In response to

Browse pgsql-jdbc by date

  From Date Subject
Next Message Kris Jurka 2012-01-20 19:25:52 Re: plpgsql function, comment with single quote, braces
Previous Message David Johnston 2012-01-20 14:22:43 Re: plpgsql function, comment with single quote, braces