On 27-3-2018 19:35, Alex Peshkoff via Firebird-devel wrote:
On 03/27/18 20:08, Mark Rotteveel wrote:
I increased the TcpRemoteBufferSize to 32767 (the documented maximum
value) in my firebird.conf, and when I run the full test suite of
Jaybird, the tests hang consistently on the same test. It is blocked
on reading from the socket during a fetch.
If I run this test in isolation it works, if I run all tests in the
same class it works. It only happens when I run all tests. Given this
test (like most Jaybird tests) creates a new database, it likely isn't
a problem with the test itself.
If I disable wire encryption, it works. If I comment out
TcpRemoteBufferSize and re-enable wire encryption, it works. If I set
TcpRemoteBufferSize to 16384 or 32760 it also works fine.
This all suggests that maybe some data isn't flushed, or there might
be a buffer overflow or another type of boundary issue somewhere, or
that maybe somewhere an assumption of multiples of 8 bytes has crept in.
I'm not sure how long this problem has been there (and maybe it
already exists in Firebird 3),
That's the first to be checked.
>
I do recall having similar problems before, but I'm not sure if I
changed TcpRemoteBufferSize when that happened (I sometimes do and
sometimes don't change this setting). I'll see if I can find the time
and energy later this week to run these tests on earlier snapshots and
Firebird 3 as well, and maybe try some different values.
I hope in the meantime, that maybe one of you has an idea what the
problem might be.
Code, related with mentioned parameters, was not much changed since fb3
therefore I ask to check it first of all.
I tested against 3.0.3.32900 and no problems there.
I have done some testing with the snapshot versions I still had in the
download folder on my system, the earliest I have is
Firebird-4.0.0.487-0_x64 (January 6th 2017) and this version also
exhibits the problem.
As suggested by Jiri, I also tested (4.0.0.942-0_x64) with different
values for TcpRemoteBufferSize:
Working fine:
- 32755
- 32756
- 32760
- 32761
- 32764
breaking:
- 8191 *)
- 32759
- 32765
- 32766
- 32767
The test it consistently hangs on, creates a database, performs a select
on RDB$USER_PRIVILEGES, and retrieves the result. If I ignore that
specific test then it doesn't hang and continues executing the other
tests without problems.
Reproducing this takes 5-10 minutes for each run, so I think this should
be sufficient for now.
*: With 8191 it hangs on a different test, but still one that selects
from RDB$USER_PRIVILEGES (although I really have no idea if that is
relevant or not).
--
Mark Rotteveel
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
Firebird-Devel mailing list, web interface at
https://lists.sourceforge.net/lists/listinfo/firebird-devel