Closed glassfishrobot closed 14 years ago
@glassfishrobot Commented Reported by @jfialli
@glassfishrobot Commented @jfialli said: Bongae confirmed that putting a synchronized block on OutputPipe corrected the issue. There will be an RFE submitted to change this synchronization solution to a more performant pool of OutputPipes (one pipe to be used by one thread at any point in time).
@glassfishrobot Commented @jfialli said: fix checked into shoal on May 21.
@glassfishrobot Commented This issue was imported from java.net JIRA SHOAL-88
@glassfishrobot Commented Marked as fixed on Wednesday, June 23rd 2010, 4:11:06 am
Reported initially by Bongjae Chang. Following extracted from his emails.
To reproduce issue on same machine,
one command is java -cp xxx com.sun.enterprise.shoal.multithreadmessagesendertest.MultiThreadMessageSender server1 server2 100
another command is java -cp xxx com.sun.enterprise.shoal.multithreadmessagesendertest.MultiThreadMessageSender server2 server1 0
One will notice many failures in log that message was not sent.
com.sun.enterprise.ee.cms.core.GMSException: message com.sun.enterprise.ee.cms.spi.GMSMessage@1b6c03 6 not sent to urn:jxta:uuid-59616261646162614A78746150325033A113B2FFB4B64F038C858B9EB8FC413803, send returned false at com.sun.enterprise.ee.cms.impl.jxta.GroupCommunicationProviderImpl.sendMessage(GroupCommu nicationProviderImpl.java:291) at com.sun.enterprise.ee.cms.impl.jxta.GroupHandleImpl.sendMessage(GroupHandleImpl.java:133)
at com.sun.enterprise.shoal.jointest.MultiThreadSenderTest$1.run(MultiThreadSenderTest.java: 103) at java.lang.Thread.run(Thread.java:717)
It seems that JXTA's OutputPipe.send() returns false continuously because of overflow. Shoal already tried to send it again with MAX_SEND_RETRIES which is 4 in JxtaUtil#send().
But, it seems that the MAX_SEND_RETRIES value is not enough in my test which has over 100 sender thread simultaneously.
When I set MAX_SEND_RETRIES to over 1000 experimentally, I found that all packets could be sent to the remote server successfully, but there was a marked decline in the sending performance. So, I think that it is not good idea that MAX_SEND_RETRIES has too large value in my test.
Environment
Operating System: All Platform: All
Affected Versions
[current]