Issue Details (XML | Word | Printable)

Key: GLASSFISH-18722
Type: Bug Bug
Status: Open Open
Priority: Critical Critical
Assignee: Harshad Vilekar
Reporter: amitagarwal
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
glassfish

[PERF] Standalone client fails receiving 1k or longer string via IIOP (Blocking IIOP-based perf tests)

Created: 13/May/12 08:14 AM   Updated: 15/Feb/13 07:31 AM
Component/s: orb
Affects Version/s: 4.0_b36
Fix Version/s: 4.0.1

Time Tracking:
Not Specified

Tags: PSRBUG Sev2_Candidate vikkumar_func
Participants: amitagarwal, Harshad Vilekar and Scott Oaks


 Description  « Hide

Accessing a remote EJB to get 1k, 100k strings via a standalone client fails with error. This issue is present in 3.1.2 as well. In Solaris this happens all the time, for Linux it happens more on secure listener and sometimes on non-secure listener too.

java.rmi.MarshalException: CORBA COMM_FAILURE 1330446373 No; nested exception is:
org.omg.CORBA.COMM_FAILURE: WARNING: 00410037: Timeout while reading data in buffer manager vmcid: OMG minor code: 37 completed: No
at com.sun.corba.ee.impl.javax.rmi.CORBA.Util.mapSystemException(Util.java:258)
at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.privateInvoke(StubInvocationHandlerImpl.java:211)
at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.invoke(StubInvocationHandlerImpl.java:150)
at com.sun.corba.ee.impl.presentation.rmi.codegen.CodegenStubBase.invoke(CodegenStubBase.java:227)
at weblogic.performance.benchmarks.rmi._EJBRMIBenchmarks_DynamicStub.getString(weblogic/performance/benchmarks/rmi/_EJBRMIBenchmarks_DynamicStub.java)
at weblogic.performance.benchmarks.rmi.clients.GetStringUser.op(RMIUser.java:148)
at weblogic.performance.benchmarks.rmi.clients.RMIUser.execute(RMIUser.java:70)
at weblogic.performance.utils.controller.ClientThread.run(ClientThread.java:81)
Caused by: org.omg.CORBA.COMM_FAILURE: WARNING: 00410037: Timeout while reading data in buffer manager vmcid: OMG minor code: 37 completed: No
at $Proxy28.bufferReadManagerTimeout(Unknown Source)
at com.sun.corba.ee.impl.encoding.BufferManagerReadStream.underflow(BufferManagerReadStream.java:142)
at com.sun.corba.ee.impl.encoding.CDRInputStream_1_1.grow(CDRInputStream_1_1.java:113)
at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_octet_array(CDRInputStream_1_0.java:714)
at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.getConvertedChars(CDRInputStream_1_0.java:2335)
at com.sun.corba.ee.impl.encoding.CDRInputStream_1_2.read_wstring(CDRInputStream_1_2.java:171)
at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1077)
at com.sun.corba.ee.impl.encoding.CDRInputObject.read_value(CDRInputObject.java:531)
at com.sun.corba.ee.impl.presentation.rmi.DynamicMethodMarshallerImpl$14.read(DynamicMethodMarshallerImpl.java:383)
at com.sun.corba.ee.impl.presentation.rmi.DynamicMethodMarshallerImpl.readResult(DynamicMethodMarshallerImpl.java:482)
at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.privateInvoke(StubInvocationHandlerImpl.java:201)
... 6 more
java.rmi.MarshalException: CORBA COMM_FAILURE 1330446373 No; nested exception is:
org.omg.CORBA.COMM_FAILURE: WARNING: 00410037: Timeout while reading data in buffer manager vmcid: OMG minor code: 37 completed: No
at com.sun.corba.ee.impl.javax.rmi.CORBA.Util.mapSystemException(Util.java:258)
at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.privateInvoke(StubInvocationHandlerImpl.java:211)
at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.invoke(StubInvocationHandlerImpl.java:150)
at com.sun.corba.ee.impl.presentation.rmi.codegen.CodegenStubBase.invoke(CodegenStubBase.java:227)
at weblogic.performance.benchmarks.rmi._EJBRMIBenchmarks_DynamicStub.getString(weblogic/performance/benchmarks/rmi/_EJBRMIBenchmarks_DynamicStub.java)
at weblogic.performance.benchmarks.rmi.clients.GetStringUser.op(RMIUser.java:148)
at weblogic.performance.benchmarks.rmi.clients.RMIUser.execute(RMIUser.java:70)
at weblogic.performance.utils.controller.ClientThread.run(ClientThread.java:81)
Caused by: org.omg.CORBA.COMM_FAILURE: WARNING: 00410037: Timeout while reading data in buffer manager vmcid: OMG minor code: 37 completed: No
at $Proxy28.bufferReadManagerTimeout(Unknown Source)
at com.sun.corba.ee.impl.encoding.BufferManagerReadStream.underflow(BufferManagerReadStream.java:142)
at com.sun.corba.ee.impl.encoding.CDRInputStream_1_1.grow(CDRInputStream_1_1.java:113)
at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_octet_array(CDRInputStream_1_0.java:714)
at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.getConvertedChars(CDRInputStream_1_0.java:2335)
at com.sun.corba.ee.impl.encoding.CDRInputStream_1_2.read_wstring(CDRInputStream_1_2.java:171)
at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1077)
at com.sun.corba.ee.impl.encoding.CDRInputObject.read_value(CDRInputObject.java:531)
at com.sun.corba.ee.impl.presentation.rmi.DynamicMethodMarshallerImpl$14.read(DynamicMethodMarshallerImpl.java:383)
at com.sun.corba.ee.impl.presentation.rmi.DynamicMethodMarshallerImpl.readResult(DynamicMethodMarshallerImpl.java:482)
at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.privateInvoke(StubInvocationHandlerImpl.java:201)
... 6 more
null



Harshad Vilekar added a comment - 11/Feb/13 03:56 PM

Looking at the issue now. Tried the test case provided by Amit, and could duplicate the client side exception on my Linux box with the latest GF 4.0 build.


Scott Oaks added a comment - 04/Dec/12 11:46 PM

In May at perf team meetings, we discussed that the ORBDebug output would be too large for this test to make sense of, and that we expected the behavior might change after the summertime ORB integrations (but the latter isn't hte case; this is still an issue).


Harshad Vilekar added a comment - 14/May/12 11:06 PM

Could you rerun the test with the flag : "-Dcom.sun.corba.ee.ORBDebug=transport". Please set this on both the client and the GlassFish server. And include the server log and the client side output.

Also, is it possible to attach the test that duplicates the issue ? I ran a simple app that invokes a remote method that returns a string of size > 100K. The call is repeated 1000 times, but it couldn't duplicate the failure on my Solaris / Linux box.