[
https://jira.jboss.org/jira/browse/JBREM-1040?page=com.atlassian.jira.plu...
]
Ron Sigal commented on JBREM-1040:
----------------------------------
From support case #192039:
Remoting client tries to use a pooled connection which has timed out on the server side.
Client: uses jbossall-client.jar from AS 4.0.5 (jboss-remoting.jar version 1.4.3)
Server: AS 4.3.0 (jboss-remoting 2.2.x).
Stacktrace:
[java] java.rmi.MarshalException: Failed to communicate. Problem during
marshalling/unmarshalling; nested exception is:
[java] java.net.SocketException: Software caused connection abort: socket write error
[java] at
org.jboss.remoting.transport.socket.SocketClientInvoker.transport(SocketClientInvoker.java:306)
[java] at org.jboss.remoting.RemoteClientInvoker.invoke(RemoteClientInvoker.java:143)
[java] at org.jboss.remoting.Client.invoke(Client.java:525)
[java] at org.jboss.remoting.Client.invoke(Client.java:488)
[java] at
org.jboss.invocation.unified.interfaces.UnifiedInvokerProxy.invoke(UnifiedInvokerProxy.java:175)
[java] at
org.jboss.invocation.InvokerInterceptor.invokeInvoker(InvokerInterceptor.java:365)
[java] at
org.jboss.invocation.MarshallingInvokerInterceptor.invoke(MarshallingInvokerInterceptor.java:63)
[java] at
org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:61)
[java] at org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:70)
[java] at
org.jboss.proxy.ejb.StatelessSessionInterceptor.invoke(StatelessSessionInterceptor.java:112)
[java] at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:100)
[java] at $Proxy1.remove(Unknown Source)
[java] at test.jboss.TestClient.main(TestClient.java:150)
[java] Caused by: java.net.SocketException: Software caused connection abort: socket
write error
[java] at java.net.SocketOutputStream.socketWrite0(Native Method)
[java] at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
[java] at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
[java] at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:69)
[java] at java.io.BufferedOutputStream.write(BufferedOutputStream.java:113)
[java] at
java.io.ObjectOutputStream$BlockDataOutputStream.drain(ObjectOutputStream.java:1637)
[java] at
java.io.ObjectOutputStream$BlockDataOutputStream.setBlockDataMode(ObjectOutputStream.java:1546)
[java] at
java.io.ObjectOutputStream.writeFatalException(ObjectOutputStream.java:1350)
[java] at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:281)
[java] at
org.jboss.remoting.serialization.impl.java.JavaSerializationManager.sendObject(JavaSerializationManager.java:81)
[java] at
org.jboss.remoting.marshal.serializable.SerializableMarshaller.write(SerializableMarshaller.java:84)
[java] at
org.jboss.invocation.unified.marshall.InvocationMarshaller.write(InvocationMarshaller.java:66)
[java] at
org.jboss.remoting.transport.socket.SocketClientInvoker.transport(SocketClientInvoker.java:273)
[java] ... 12 more
[java] Exception in thread "main"
Explanation:
The reason the connection check mechanism isn't working on the client side is that we
introduced a faster mechanism in Remoting 2. When ServerSocketWrapper.close() is called,
it writes two 254 bytes before closing the socket. This is the only time the server
writes anything that wasn't solicited by the client, so, if the client sees bytes on
the input stream, it concludes that the server side closed the connection. But then
ClientSocketWrapper.checkConnection() (which, by default, doesn't run in Remoting 2)
doesn't throw an EOFException, so it looks like the connection is usable. I've
attached a jboss-remoting.jar in which ClientSocketWrapper.checkConnection() throws
EOFException if it reads 254. It will identify itself as JBossRemoting Version
1.4.7.GA-preview (Wormer).
Sometimes ClientSocketWrapper.checkConnection() doesn't detect
closed connection in JBoss Remoting 1.4.3.GA
-----------------------------------------------------------------------------------------------------------
Key: JBREM-1040
URL:
https://jira.jboss.org/jira/browse/JBREM-1040
Project: JBoss Remoting
Issue Type: Bug
Security Level: Public(Everyone can see)
Affects Versions: 1.4.6.GA
Reporter: Takayoshi Kimura
Assignee: Takayoshi Kimura
In a same test described in JBREM-1017, the client sometimes doesn't detect closed
connection. After read a CLOSED byte (254), the client gets IOException: Broken pipe when
try to write an invocation.
This issue is environment specific or timing issue, so doesn't always happen.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira