eclipse-ee4j / glassfish-shoal

Shoal
Other
5 stars 9 forks source link

Exception occurs showing Member no longer in the group, when sending messages to an alive member #70

Closed glassfishrobot closed 14 years ago

glassfishrobot commented 16 years ago

When sending messages, the call to GroupCommunicationProviderImpl.sendMessage() with a specified target member token, checks to see if this member continues to exist in the ClusterViewManager's ClusterView. This check is done by getting the memberToken String's corresponding peer id by calling clusterManager.getID(targetMemberIdentityToken)

This results in call to NetworkManager.getPeerID() each time. Multiple calls to NetworkManager.getPeerID() passing in the exact same parameter for instanceName returns a different Jxta UUID over a period of time.

This is a problem in itself as the consistent hashing algorithm is expected to guarantee exact same uuid generation for a given constant seed.

Using Leehui's MultiThreadMessageSender test, it is easy to see this problem as it reports frequently that a target instance is no longer in the group while sending a message as the call has resulted in a new uuid that does not exist in the cluster view manager for that known target member token.

To work around this issue, calls to getPeerID should return a cached PeerID which was originally generated during the first call to establish the Peer in the PeerGroup.

Environment

Operating System: All Platform: Windows

Affected Versions

[current]

glassfishrobot commented 6 years ago
glassfishrobot commented 16 years ago

@glassfishrobot Commented Reported by shreedhar_ganapathy

glassfishrobot commented 16 years ago

@glassfishrobot Commented shreedhar_ganapathy said: Fix checked in per CVS check messages : https://shoal.dev.java.net/servlets/ReadMsg?list=cvs&msgNo=631 https://shoal.dev.java.net/servlets/ReadMsg?list=cvs&msgNo=632

getPeerID() now consults a instanceToPeerID hashtable for pre existence of the peer id for a given instanceName token string. If not creates it and adds to hash table. The hash table is cleared during NetworkManager.stop()

glassfishrobot commented 16 years ago

@glassfishrobot Commented shreedhar_ganapathy said: Sheetal has already integrated this fix into Shoal branch for Sailfin 0.5 (SGCS 1.0).

glassfishrobot commented 16 years ago

@glassfishrobot Commented Was assigned to shreedhar_ganapathy

glassfishrobot commented 7 years ago

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

glassfishrobot commented 14 years ago

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