Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-4456086

Server thread hangs when fragments don't complete because client-side error

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P3 P3
    • 1.4.0
    • 1.4.0
    • other-libs
    • None
    • beta2
    • unknown
    • solaris_2.6
    • Not verified

        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.
                                                                              

              hcarr Harold Carr
              hcarr Harold Carr
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

                Created:
                Updated:
                Resolved:
                Imported:
                Indexed: