Re: NIO support

From: Dave Cramer <pg(at)fastcrypt(dot)com>
To: Віталій Тимчишин <tivv00(at)gmail(dot)com>
Cc: PG-JDBC Mailing List <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: NIO support
Date: 2012-01-31 14:29:56
Message-ID: CADK3HHLJpmKsZd=puPUHiCsMoXPStH6u_Csn=aEU9shfzXh0nA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

Vitalli,

I've given this some thought. Without using a timer you are
implementing the timeout by having the read timeout on the client end.
This will leave the query running on the server. Is this what we want
? Using a timer to do this we actually cancel the query on the server.

Dave Cramer

dave.cramer(at)credativ(dot)ca
http://www.credativ.ca

2012/1/22 Dave Cramer <pg(at)fastcrypt(dot)com>:
> Vitalii,
>
> My github repository is not current, so it is not a good place to branch from.
>
> We require context patches to be submitted to the list
>
> The ssl tests are documented in the current docs if you check them out
> of the project.
>
> Dave Cramer
>
> dave.cramer(at)credativ(dot)ca
> http://www.credativ.ca
>
>
>
> 2012/1/21 Віталій Тимчишин <tivv00(at)gmail(dot)com>:
>> Hello.
>>
>> I've fixed 1.4.2 compiling problems (moved from PriorityQueue to TreeSet +
>> removed some generics). Tests pass on 1.4.2.
>> I've created a fork from your github repository as it's much easier to work
>> with. New patch is
>> here: https://github.com/tivv/pgjdbc/commit/4321cdb7439fa1aaddca4ba925a952792e531c82
>> Are there any hints/guides on running SSL tests?
>>
>> Best regards, Vitalii Tymchyshyn
>>
>> 20 січня 2012 р. 16:06 Dave Cramer <pg(at)fastcrypt(dot)com> написав:
>>
>>> 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
>>> >>>
>>> >
>>
>>
>>
>>
>> --
>> Best regards,
>>  Vitalii Tymchyshyn

In response to

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Vitalii Tymchyshyn 2012-01-31 14:37:12 Re: NIO support
Previous Message Maciek Sakrejda 2012-01-30 18:40:28 Re: test git conversion