eclipse-ee4j / glassfish-shoal

Shoal
Other
5 stars 9 forks source link

GroupHandle.sendMessage fails frequently when too many concurrent threads sending at same time #88

Closed glassfishrobot closed 14 years ago

glassfishrobot commented 15 years ago

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]

glassfishrobot commented 6 years ago
glassfishrobot commented 15 years ago

@glassfishrobot Commented Reported by @jfialli

glassfishrobot commented 15 years ago

@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 15 years ago

@glassfishrobot Commented @jfialli said: fix checked into shoal on May 21.

glassfishrobot commented 7 years ago

@glassfishrobot Commented This issue was imported from java.net JIRA SHOAL-88

glassfishrobot commented 14 years ago

@glassfishrobot Commented Marked as fixed on Wednesday, June 23rd 2010, 4:11:06 am