Subject Re: [Firebird-Java] Re: GDS Exception. 335544721. Unable to complete network request to host
Author Mark Rotteveel
On 28-3-2013 07:36, psureshkumar14@... wrote:
>> how did you told the cause of the error is IOException?
> Thanks for your explanation Mark. I also check the your code by Yesterday, i already got that after sending reply to you.
>
>> If you can provide code that reproduces the error easily, that would be very helpful in finding the cause.
> This error is occurred in our customer environment. I am unable to reproduce the issue in our test setup and also we didn't face the same problem from other customers. Seems this may be environmental issue.
>
> Okay! i will prepare a setup like our customer setup and i will let you know whether the issue is reproduced or not.
>
> From Many documents in internet links and in your forums, i see that it happens due to Antivirus/firewall. I don't know about hugo's case whether he using any Antivirus/firewall. Our Customer using Sophos Anti virus. But he excluded entire server folder from AV.

Well, the idea that it could be caused by antivirus/firewall is more a
bit of guesswork than actually a proven cause.

>> Any errors in the firebird.log of the server around the time this exception occurs
>
> Firebird always fills with the error.
>
> SURESH-0616 (Server) Thu Mar 28 09:47:55 2013
> INET/inet_error: read errno = 10054

Error 10054 is a connection reset by peer. It essentially means that the
connection wasn't closed properly. Possible reasons include connections
aren't closed properly, the network connections fails or the application
crashes.

> One More Trace:
> [10:23:01:208]|[03-21-2013]|[org.apache.catalina.authenticator.CustomFormAuthenticator]|[WARNING]|[454]: Unexpected error forwarding to login page|
> java.lang.ArrayIndexOutOfBoundsException
> at java.net.SocketOutputStream.socketWrite(Unknown Source)
> at java.net.SocketOutputStream.write(Unknown Source)
> at org.firebirdsql.gds.impl.wire.XdrOutputStream.checkBufferSize(XdrOutputStream.java:406)
> at org.firebirdsql.gds.impl.wire.XdrOutputStream.writeInt(XdrOutputStream.java:309)
> at org.firebirdsql.gds.impl.wire.AbstractJavaGDSImpl.iscStartTransaction(AbstractJavaGDSImpl.java:725)

I found the buffer index potentially getting larger than the actual
buffer size in XdrOutputStream. However I would expect the buffer to be
empty when iscStartTransaction is called, so checkBufferSize(..)
shouldn't need to write the current buffer to the socket.

I'll do some more digging.
--
Mark Rotteveel