|
From: Nikolay S. <nik...@re...> - 2008-12-29 03:01:56
|
Hello, Alex, All,
With the patch quoted below, Alex replaced CHECK_HANDLE_MEMBER macro
with getHandle function call.
This is not semantically equivalent, as getHandle raises exceptions,
while CHECK_HANDLE_MEMBER didn't.
The exceptions are than handled here:
{
....
}
catch (const Firebird::Exception& ex) {
ISC_STATUS_ARRAY local_status;
memset(local_status, 0, sizeof(local_status));
Firebird::stuff_exception(local_status, ex);
gds__log_status(0, local_status);
/* It would be nice to log an error to the user, instead of just
terminating them! */
port->send_response(sendL, 0, 0, local_status, false);
port->disconnect(sendL, receive); /* Well, how about this... */
return false;
}
Which abruptly terminates the client connection.
In the field I assume this is the reason of GBAK failing with the
following errors on the output:
...
gbak:18920000 records written
gbak:18940000 records written
gbak:error accessing BLOB column PCH_OLDVALUE -- continuing
gbak: ERROR:Unable to complete network request to host "localhost".
gbak: ERROR: Error reading data from the connection.
gbak:error accessing BLOB column PCH_NEWVALUE -- continuing
gbak: ERROR:Unable to complete network request to host "localhost".
gbak: ERROR: Error reading data from the connection.
... [about 50 more errors reading connection]...
And the following corresponding errors in firebird.log:
BV1 Sun Dec 28 20:24:25 2008
invalid BLOB handle
BV1 (Client) Sun Dec 28 20:24:26 2008
INET/inet_error: send errno = 10053
BV1 (Client) Sun Dec 28 20:24:26 2008
INET/inet_error: send errno = 10053
... [about 50 more errors about aborted connection]...
This is not the root issue of GBAK problem we have here, and as such I
cannot treat this as critical issue right now, but this has to be fixed IMO.
Alexander Peshkov wrote:
> Build Version : T2.5.0.19044 Firebird 2.5 Unstable
>
> (writeBuildNum.sh,v 1.19204 2008/03/24 15:28:41 alexpeshkof )
>
> Update of /cvsroot/firebird/firebird2/src/remote
> In directory sc8-pr-cvs17.sourceforge.net:/tmp/cvs-serv26272
>
> Modified Files:
> inet.cpp inter_proto.h interface.cpp parse_proto.h parser.cpp
> protocol.cpp protocol.h remot_proto.h remote.cpp remote.h
> server.cpp xdr.cpp xdr.h
> Removed Files:
> allr.cpp allr_proto.h
> Log Message:
> Remote cleanup:
> 1. Avoid ALLR memory allocation routine (use new / delete).
> 2. Use common (TypedHandle) class to control consistency of handles.
> 3. Make ctors and dtors work - in most cases more work is needed to make them meaningful.
>
--
Nikolay Samofatov, MBA
Red Soft International
+1 416 710 6854
|