25.03.2020 10:37, Alex Peshkoff via Firebird-devel wrote:
On 2020-03-24 19:50, Vlad Khorsun wrote:
Added first in Provider::generateDPB(), next in (any-)Connection::attach().
Vlad, I'm unsure - what place is correct one?
Second was added with connections pool implementation in master. This part
some completion. isc_dpb_ext_call_depth was introduced by me at initial
of EDS to detect and prevent too deep recursion within EDS.
passed at attach() with incremented call depth counter of local attachment.
connections pooling, I need a way to set call depth counter of re-used
So far we have no such way and I open for suggestions. When this will be
isc_dpb_ext_call_depth could be removed from Provider::generateDPB(). Currently
works as a some protection from bad scenarios with recursive calls of EDS.
It should help from infinite recursion - pools on involved servers should overflow at some step, and tag will work as before.
Though certainly it's not precise result.
Not sure I got you here - why it is not precise ?
Because (as far as I understood current code) it can fire when callbacks' depth is not precisely MAX_CALLBACKS but less or bigger
DPB generated with Provider::generateDPB() is used to find pooled connection
parameters. It is includes isc_dpb_ext_call_depth tag (so far). Therefore it
pooled connection with the same value of "call depth". And it is the reason why
pooling less efficient than it could be if isc_dpb_ext_call_depth not used
for connection to reuse.
May be better solution is related with attachment's reset?
Pooled connection is reset when released, not when reused.
Sorry - what reasons for it?
IIRC, it was discussed here when "external connections pool" feature was
Session reset is used instead of disconnect, it allows to free session
and to not put into the pool connection that can't be reset (by any reason).
Firebird-Devel mailing list, web interface at