Re: NIO support

From: Dave Cramer <pg(at)fastcrypt(dot)com>
To: Vitalii Tymchyshyn <tivv00(at)gmail(dot)com>
Cc: PG-JDBC Mailing List <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: NIO support
Date: 2012-01-20 14:06:35
Message-ID: CADK3HHL0zty8k3Dn-NV2Xpwm+VOr-1v9ov8_Q6K_0aVFvSEaMQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

Vitalii,

Does this compile and run on java 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

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message David Johnston 2012-01-20 14:22:43 Re: plpgsql function, comment with single quote, braces
Previous Message Vitalii Tymchyshyn 2012-01-20 13:54:23 Re: NIO support