-
Bug
-
Resolution: Fixed
-
P3
-
1.4.0
-
None
-
beta2
-
unknown
-
solaris_2.6
-
Not verified
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-2043461 | 1.4.0 | Harold Carr | P3 | Closed | Won't Fix |
While fixing "4452578: RI hangs when a return object is not
serializable" I noticed that a similar thing can happen on the server
side. If the client sends at least one fragment of a request and then
gets a client-side ORB (e.g., tries to marshal a non-serializable
object) then a server side ORB thread will hang waiting for further
fragments. (The client side does report the error to the client
application, but it does not send further fragments.).
Everytime this happens it causes new threads to hang. If this happens
N times then the server-side ORB will have N threads waiting.
Example stack trace of waiting (i.e, hung) thread:
RequestProcessor[0][1] where
[1] java.lang.Object.wait (native method)
[2] java.lang.Object.wait (Object:420)
[3] com.sun.corba.ee.internal.iiop.BufferManagerReadStream.underflow (BufferManagerReadStream:65)
[4] com.sun.corba.ee.internal.iiop.CDRInputStream_1_1.grow (CDRInputStream_1_1:76)
[5] com.sun.corba.ee.internal.iiop.CDRInputStream_1_0.read_octet_array (CDRInputStream_1_0:570)
[6] com.sun.corba.ee.internal.iiop.CDRInputStream.read_octet_array (CDRInputStream:209)
[7] com.sun.corba.ee.internal.core.UnknownServiceContext.<init> (UnknownServiceContext:31)
[8] com.sun.corba.ee.internal.core.ServiceContexts.<init> (ServiceContexts:103)
[9] com.sun.corba.ee.internal.iiop.messages.RequestMessage_1_2.read (RequestMessage_1_2:127)
[10] com.sun.corba.ee.internal.iiop.IIOPInputStream.unmarshalHeader (IIOPInputStream:126)
[11] com.sun.corba.ee.internal.iiop.RequestProcessor.process (RequestProcessor:78)
[12] com.sun.corba.ee.internal.orbutil.ThreadPool$PooledThread.run (ThreadPool$PooledThread:99)
RequestProcessor[0][1]
This is a waste of scare resources.
serializable" I noticed that a similar thing can happen on the server
side. If the client sends at least one fragment of a request and then
gets a client-side ORB (e.g., tries to marshal a non-serializable
object) then a server side ORB thread will hang waiting for further
fragments. (The client side does report the error to the client
application, but it does not send further fragments.).
Everytime this happens it causes new threads to hang. If this happens
N times then the server-side ORB will have N threads waiting.
Example stack trace of waiting (i.e, hung) thread:
RequestProcessor[0][1] where
[1] java.lang.Object.wait (native method)
[2] java.lang.Object.wait (Object:420)
[3] com.sun.corba.ee.internal.iiop.BufferManagerReadStream.underflow (BufferManagerReadStream:65)
[4] com.sun.corba.ee.internal.iiop.CDRInputStream_1_1.grow (CDRInputStream_1_1:76)
[5] com.sun.corba.ee.internal.iiop.CDRInputStream_1_0.read_octet_array (CDRInputStream_1_0:570)
[6] com.sun.corba.ee.internal.iiop.CDRInputStream.read_octet_array (CDRInputStream:209)
[7] com.sun.corba.ee.internal.core.UnknownServiceContext.<init> (UnknownServiceContext:31)
[8] com.sun.corba.ee.internal.core.ServiceContexts.<init> (ServiceContexts:103)
[9] com.sun.corba.ee.internal.iiop.messages.RequestMessage_1_2.read (RequestMessage_1_2:127)
[10] com.sun.corba.ee.internal.iiop.IIOPInputStream.unmarshalHeader (IIOPInputStream:126)
[11] com.sun.corba.ee.internal.iiop.RequestProcessor.process (RequestProcessor:78)
[12] com.sun.corba.ee.internal.orbutil.ThreadPool$PooledThread.run (ThreadPool$PooledThread:99)
RequestProcessor[0][1]
This is a waste of scare resources.
- backported by
-
JDK-2043461 Server thread hangs when fragments don't complete because client-side error
-
- Closed
-
- relates to
-
JDK-6372405 Server thread hangs when fragments don't complete because of connection abort
-
- Resolved
-
-
JDK-4452578 RI hangs when a return object is not serializable.
-
- Closed
-