Re: NIO support

Поиск
Список
Период
Сортировка
От Vitalii Tymchyshyn
Тема Re: NIO support
Дата
Msg-id 4F19720F.6010008@gmail.com
обсуждение исходный текст
Ответ на Re: NIO support  (Dave Cramer <pg@fastcrypt.com>)
Ответы Re: NIO support  (Dave Cramer <pg@fastcrypt.com>)
Список pgsql-jdbc
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 по дате отправления:

Предыдущее
От: Роман Литовченко
Дата:
Сообщение: Re: plpgsql function, comment with single quote, braces
Следующее
От: Dave Cramer
Дата:
Сообщение: Re: NIO support