Menu

Minor bug fix - error on sending large queries

What happends is on slow network it does not get a chance to flush the tcp/ip stack and it will give an error - which will be considered as a server lost error. This is a result of not using the blocking mode when writing to the socket.
there are 3 fixes:
1) increase RETRY_COUNT in uMysqlCT
2) wherever you find in uMysqlNet "< RETRY_COUNT" replace it with "<= RETRY_COUNT"
or
3)the "real" fix is in unit uMysqlNet:
in net_real_write you will find this line 679:
if (fvio.vio_should_retry) then //should retry?

before it you should insert this if:

if (fvio.fcntl_mode and 1=1) then //are we in
blocking mode?
begin
fvio.vio_blocking(true);
inc(retr_count);
if (retr_count <= RETRY_COUNT) then
continue;
end;

(basically switch to blocking mode).

Ideally you would apply both 2) and 3) fixes.

In the mean time i will make a note for this to include it in the next release.

Thank you very much for reporting the problem.
Cristian Nicola

Posted by Cristian Nicola 2002-08-28

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.