Thanks for patch Bongjae.
The changes are ok. Can you describe your testing scenarios?
I am interested in finding how the new code behaves during the discovery
phase where :
- Nodes are started at the time
- Nodes start time varies, but with the discovery timeout
- Late (after discovery phase) startup for some nodes
Also how the code behaves when a node is shutdown and :
- restarted before it is determined to be failed
- restated after it has been ejected from the cluster
- and finally, the same as above, for the master node
Thanks,
Mohamed
Bongjae Chang wrote:
> Hi Sheetal.
> I changed a litle code, so if possible, I want you to review these
> newly later.
> I am very sorry for sending patches again.
>
> changed code is only "void addToView()" in ClusterViewManager.java.
> See the following comment.
> ---------------------------------------------------------------
> void addToView(final List<SystemAdvertisement> newView,
> final boolean authoritative,
> final ClusterViewEvent cvEvent) {
> //TODO: need to review the use cases of the callers of method
> if (cvEvent == null) {
> return;
> }
>
> if (authoritative) {
> // 2008.06.13, edited by carryel
> // this addToView() method can be called with no changes
> of view by MasterNode.processChangeEvent() method
> // if we only notify listeners when there are changes,
> sometimes some events can be missed.
> // ex) members should receive JOINED_AND_READY_EVENT
> though there are not changes.
> // though we always notify listeners regardless of
> changes, notification's duplication can be checked in ViewWindow
> // ex) ADD_EVENT
> addToView( newView );
> notifyListeners( cvEvent );
> /*
> boolean changed = addToView( newView );
> if (changed) {
> //only if there are changes that we notify
> notifyListeners(cvEvent);
> }
> */
> }
> }
> ---------------------------------------------------------------
>
> Original code(not my patch) had no problems about
> JOINED_AND_READY_EVENT notification.
> Of course, original code had problems about other notifications. ex)
> ADD_EVENT can be duplicated
>
> Original code's intension is "only if there are changes, we notify
> listeners". But the logic of detecting changes was strange. The
> following is original code.
> ---------------------------------------------------------------
> In addToView() method
>
> boolean changed = false;
> reset();
> viewLock.lock();
> ...
> for( SystemAdvertisement elem : new View ) {
> if( !view.containsKey( elem.getID().toString() ) ) {
> changed = true;
> }
> ...
> }
> ---------------------------------------------------------------
> if we call reset() before detecting changes, the result will always be
> "change = true" because reset() method will clear TreeMap.
>
> So I edited this. The following is my code.
> ---------------------------------------------------------------
> private boolean addToView( final List<SystemAdvertisement> newView ) {
> boolean changed = false;
> // 2008.06.10, removed and edited by carryel
> // We need old view's snapshot for becoming aware of changes
> before reset()
> // Though reset() also uses viewLock for view.clear(),
> // if reset() is called before addToView() acquires the
> viewLock, view can be changed in a short time
> // If view was changed in a short time, unexpected result
> occurred in becoming aware of changes
> // So for safety, if we need to become aware of real changes,
> snapshooting and view.clear() should be called in addToView()'s viewLock
> //LOG.log( Level.FINER, "Resetting View" );
> //reset();
> lockLog( "addToView()" );
> viewLock.lock();
> // old view's snapshot
> TreeMap oldView = (TreeMap)view.clone();
> // we should clear view after old view's snapshot
> view.clear();
> view.put(advertisement.getID().toString(), advertisement);
> try {
> // 2008.06.10, commented by carryel, we don't need put
> manager.getSystemAdvertisement(). this operation is maybe duplicated.
> if( !newView.contains( manager.getSystemAdvertisement() ) ) {
> view.put(
> manager.getSystemAdvertisement().getID().toString(),
> manager.getSystemAdvertisement() );
> }
> for( SystemAdvertisement elem : newView ) {
> LOG.log( Level.FINER,
> new StringBuffer().append( "Adding " )
> .append( elem.getID() ).append( " to
> view" )
> .toString() );
> if( !changed && !oldView.containsKey(
> elem.getID().toString() ) ) {
> //if( !changed && !view.containsKey(
> elem.getID().toString() ) ) {
> changed = true;
> }
> // Always add the wire version of the adv
> view.put( elem.getID().toString(), elem );
> }
> } finally {
> viewLock.unlock();
> }
> return changed;
> }
> ---------------------------------------------------------------
> This code works well in detecting changes. But there was side-effect
> as I explained above. So I changed a little. :-)
>
> PS) members receive JOINED_AND_READY_EVENT from
> MasterNode.processChangeEvent() except master.
> Though there is no changes in view, master uses only VIEW_CHANGE_EVENT
> for sending members JOINED_AND_READY_EVENT. I think this is some strange.
>
> --
> Bongjae Chang
>
>
>
> ----- Original Message -----
> *From:* Sheetal Vartak <mailto:Sheetal.Vartak_at_Sun.COM>
> *To:* dev_at_shoal.dev.java.net <mailto:dev_at_shoal.dev.java.net>
> *Sent:* Wednesday, June 11, 2008 4:25 AM
> *Subject:* Re: [Shoal-Dev] Strange behavior about join notifications.
>
> Hi Bongjae,
>
> Thanks for looking into this.
> Your previous code changes look good and can be checked in. But
> please wait for now since I am in the middle of integrating the
> Shoal code into Glassfish. Once I am done, I will let you know
> when you can check in your changes.
> For the new changes that you sent today, I will need sometime to
> review them due to some other issues I am looking at.
>
> Thanks a bunch for contributing.
> Sheetal
>
> On Jun 10, 2008, at 8:32 AM, Bongjae Chang wrote:
>
>> Hi Shreedhar.
>>
>> I also try to test members for a join notification in the
>> concurrent case.
>> In other words, when "A" and "B" joined the group concurrently ,
>> some problems also occurred.
>>
>> (a) sometimes, join notifications are duplicated
>> (b) sometimes, any member as well as group leader didn't receive
>> some join notifications.
>>
>> The following is error log.
>> ["A"'s log]
>> ------------------------------------------------------------------------
>> 2008. 6. 10 오후 11:04:58
>> com.sun.enterprise.shoal.jointest.SimpleJoinTest runSimpleSample
>> 정보: Starting SimpleJoinTest....
>> 2008. 6. 10 오후 11:04:58
>> com.sun.enterprise.shoal.jointest.SimpleJoinTest initializeGMS
>> 정보: Initializing Shoal for member:
>> a2ed5cb6-3cc7-4060-91d6-3fc8b6854049 group:TestGroup
>> 2008. 6. 10 오후 11:04:58
>> com.sun.enterprise.shoal.jointest.SimpleJoinTest runSimpleSample
>> 정보: Registering for group event notifications
>> 2008. 6. 10 오후 11:04:58
>> com.sun.enterprise.shoal.jointest.SimpleJoinTest runSimpleSample
>> 정보: Joining Group TestGroup
>> 2008. 6. 10 오후 11:04:59
>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow getMemberTokens
>> 정보: GMS View Change Received for group TestGroup : Members in
>> view for (before change analysis) are :
>> 1: MemberId: a2ed5cb6-3cc7-4060-91d6-3fc8b6854049, MemberType:
>> CORE, Address:
>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CEC3B82201E1B545DB8E9ECF621244468F03
>>
>> 2008. 6. 10 오후 11:04:59
>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow newViewObserved
>> 정보: Analyzing new membership snapshot received as part of event
>> : MASTER_CHANGE_EVENT
>> 2008. 6. 10 오후 11:05:10
>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow getMemberTokens
>> 정보: GMS View Change Received for group TestGroup : Members in
>> view for (before change analysis) are :
>> 1: MemberId: e9d80499-0f8b-4e2d-8856-3f31dcc25f96, MemberType:
>> CORE, Address:
>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CE2E6E148CC1DB479EA7D0C6A0AF50B5A103
>> 2: MemberId: a2ed5cb6-3cc7-4060-91d6-3fc8b6854049, MemberType:
>> CORE, Address:
>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CEC3B82201E1B545DB8E9ECF621244468F03
>>
>> 2008. 6. 10 오후 11:05:10
>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow newViewObserved
>> 정보: Analyzing new membership snapshot received as part of event
>> : MASTER_CHANGE_EVENT
>> 2008. 6. 10 오후 11:05:10
>> com.sun.enterprise.shoal.jointest.SimpleJoinTest$JoinNotificationCallBack
>> processNotification
>> 정보: ****JoinNotification received: GroupLeader = false,
>> Signal.getMemberToken() = e9d80499-0f8b-4e2d-8856-3f31dcc25f96,
>> ServerName = a2ed5cb6-3cc7-4060-91d6-3fc8b6854049, Leader =
>> e9d80499-0f8b-4e2d-8856-3f31dcc25f96
>> *2008. 6. 10 오후 11:05:10
>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow getMemberTokens
>> 정보: GMS View Change Received for group TestGroup : Members in
>> view for (before change analysis) are :
>> 1: MemberId: e9d80499-0f8b-4e2d-8856-3f31dcc25f96, MemberType:
>> CORE, Address:
>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CE2E6E148CC1DB479EA7D0C6A0AF50B5A103
>> 2: MemberId: a2ed5cb6-3cc7-4060-91d6-3fc8b6854049, MemberType:
>> CORE, Address:
>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CEC3B82201E1B545DB8E9ECF621244468F03
>>
>> 2008. 6. 10 오후 11:05:10
>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow newViewObserved
>> 정보: Analyzing new membership snapshot received as part of event
>> : ADD_EVENT
>> 2008. 6. 10 오후 11:05:10
>> com.sun.enterprise.shoal.jointest.SimpleJoinTest$JoinNotificationCallBack
>> processNotification
>> 정보: ****JoinNotification received: GroupLeader = false,
>> Signal.getMemberToken() = a2ed5cb6-3cc7-4060-91d6-3fc8b6854049,
>> ServerName = a2ed5cb6-3cc7-4060-91d6-3fc8b6854049, Leader =
>> e9d80499-0f8b-4e2d-8856-3f31dcc25f96
>> *2008. 6. 10 오후 11:05:10
>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow getMemberTokens
>> 정보: GMS View Change Received for group TestGroup : Members in
>> view for (before change analysis) are :
>> 1: MemberId: e9d80499-0f8b-4e2d-8856-3f31dcc25f96, MemberType:
>> CORE, Address:
>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CE2E6E148CC1DB479EA7D0C6A0AF50B5A103
>> 2: MemberId: a2ed5cb6-3cc7-4060-91d6-3fc8b6854049, MemberType:
>> CORE, Address:
>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CEC3B82201E1B545DB8E9ECF621244468F03
>>
>> 2008. 6. 10 오후 11:05:10
>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow newViewObserved
>> 정보: Analyzing new membership snapshot received as part of event
>> : ADD_EVENT
>> 2008. 6. 10 오후 11:05:10
>> com.sun.enterprise.shoal.jointest.SimpleJoinTest$JoinNotificationCallBack
>> processNotification
>> 정보: ****JoinNotification received: GroupLeader = false,
>> Signal.getMemberToken() = a2ed5cb6-3cc7-4060-91d6-3fc8b6854049,
>> ServerName = a2ed5cb6-3cc7-4060-91d6-3fc8b6854049, Leader =
>> e9d80499-0f8b-4e2d-8856-3f31dcc25f96*
>> ------------------------------------------------------------------------
>> "A" received duplicated
>> JoinNotifications(a2ed5cb6-3cc7-4060-91d6-3fc8b6854049).
>>
>>
>> ["B"'s log]
>> ------------------------------------------------------------------------
>> 2008. 6. 10 오후 11:04:54
>> com.sun.enterprise.shoal.jointest.SimpleJoinTest runSimpleSample
>> 정보: Starting SimpleJoinTest....
>> 2008. 6. 10 오후 11:04:54
>> com.sun.enterprise.shoal.jointest.SimpleJoinTest initializeGMS
>> 정보: Initializing Shoal for member:
>> e9d80499-0f8b-4e2d-8856-3f31dcc25f96 group:TestGroup
>> 2008. 6. 10 오후 11:04:55
>> com.sun.enterprise.shoal.jointest.SimpleJoinTest runSimpleSample
>> 정보: Registering for group event notifications
>> 2008. 6. 10 오후 11:04:55
>> com.sun.enterprise.shoal.jointest.SimpleJoinTest runSimpleSample
>> 정보: Joining Group TestGroup
>> 2008. 6. 10 오후 11:04:56
>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow getMemberTokens
>> 정보: GMS View Change Received for group TestGroup : Members in
>> view for (before change analysis) are :
>> 1: MemberId: e9d80499-0f8b-4e2d-8856-3f31dcc25f96, MemberType:
>> CORE, Address:
>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CE2E6E148CC1DB479EA7D0C6A0AF50B5A103
>>
>> 2008. 6. 10 오후 11:04:56
>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow newViewObserved
>> 정보: Analyzing new membership snapshot received as part of event
>> : MASTER_CHANGE_EVENT
>> 2008. 6. 10 오후 11:05:01
>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow getMemberTokens
>> 정보: GMS View Change Received for group TestGroup : Members in
>> view for (before change analysis) are :
>> 1: MemberId: e9d80499-0f8b-4e2d-8856-3f31dcc25f96, MemberType:
>> CORE, Address:
>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CE2E6E148CC1DB479EA7D0C6A0AF50B5A103
>> 2: MemberId: a2ed5cb6-3cc7-4060-91d6-3fc8b6854049, MemberType:
>> CORE, Address:
>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CEC3B82201E1B545DB8E9ECF621244468F03
>>
>> 2008. 6. 10 오후 11:05:01
>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow newViewObserved
>> 정보: Analyzing new membership snapshot received as part of event
>> : MASTER_CHANGE_EVENT
>> 2008. 6. 10 오후 11:05:04
>> com.sun.enterprise.shoal.jointest.SimpleJoinTest$JoinNotificationCallBack
>> processNotification
>> 정보: ****JoinNotification received: GroupLeader = true,
>> Signal.getMemberToken() = a2ed5cb6-3cc7-4060-91d6-3fc8b6854049,
>> ServerName = e9d80499-0f8b-4e2d-8856-3f31dcc25f96, Leader =
>> e9d80499-0f8b-4e2d-8856-3f31dcc25f96
>> *2008. 6. 10 오후 11:05:09
>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow getMemberTokens
>> 정보: GMS View Change Received for group TestGroup : Members in
>> view for (before change analysis) are :
>> 1: MemberId: e9d80499-0f8b-4e2d-8856-3f31dcc25f96, MemberType:
>> CORE, Address:
>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CE2E6E148CC1DB479EA7D0C6A0AF50B5A103
>> 2: MemberId: a2ed5cb6-3cc7-4060-91d6-3fc8b6854049, MemberType:
>> CORE, Address:
>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CEC3B82201E1B545DB8E9ECF621244468F03
>>
>> 2008. 6. 10 오후 11:05:09
>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow newViewObserved
>> 정보: Analyzing new membership snapshot received as part of event
>> : ADD_EVENT
>> 2008. 6. 10 오후 11:05:12
>> com.sun.enterprise.shoal.jointest.SimpleJoinTest$JoinNotificationCallBack
>> processNotification
>> 정보: ****JoinNotification received: GroupLeader = true,
>> Signal.getMemberToken() = a2ed5cb6-3cc7-4060-91d6-3fc8b6854049,
>> ServerName = e9d80499-0f8b-4e2d-8856-3f31dcc25f96, Leader =
>> e9d80499-0f8b-4e2d-8856-3f31dcc25f96
>> *2008. 6. 10 오후 11:05:12
>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow getMemberTokens
>> 정보: GMS View Change Received for group TestGroup : Members in
>> view for (before change analysis) are :
>> 1: MemberId: e9d80499-0f8b-4e2d-8856-3f31dcc25f96, MemberType:
>> CORE, Address:
>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CE2E6E148CC1DB479EA7D0C6A0AF50B5A103
>> 2: MemberId: a2ed5cb6-3cc7-4060-91d6-3fc8b6854049, MemberType:
>> CORE, Address:
>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CEC3B82201E1B545DB8E9ECF621244468F03
>>
>> 2008. 6. 10 오후 11:05:12
>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow newViewObserved
>> 정보: Analyzing new membership snapshot received as part of event
>> : ADD_EVENT
>> 2008. 6. 10 오후 11:05:15
>> com.sun.enterprise.shoal.jointest.SimpleJoinTest$JoinNotificationCallBack
>> processNotification
>> 정보: ****JoinNotification received: GroupLeader = true,
>> Signal.getMemberToken() = a2ed5cb6-3cc7-4060-91d6-3fc8b6854049,
>> ServerName = e9d80499-0f8b-4e2d-8856-3f31dcc25f96, Leader =
>> e9d80499-0f8b-4e2d-8856-3f31dcc25f96
>> *
>> ------------------------------------------------------------------------
>> "B" also received duplicated
>> JoinNotifications(a2ed5cb6-3cc7-4060-91d6-3fc8b6854049).
>> And because "B" is group leader, "B" don't receive own join
>> notification as I reported before.
>>
>>
>>
>>
>> When "A", "B" and "C" joined the group concurrently, the
>> following is error log
>>
>> ["A"'s log]
>> ------------------------------------------------------------------------
>> 2008. 6. 10 오후 10:17:41
>> com.sun.enterprise.shoal.jointest.SimpleJoinTest runSimpleSample
>> 정보: Starting SimpleJoinTest....
>> 2008. 6. 10 오후 10:17:41
>> com.sun.enterprise.shoal.jointest.SimpleJoinTest initializeGMS
>> 정보: Initializing Shoal for member:
>> 197c66d7-f56c-4119-8b1e-18dc330e39d3 group:TestGroup
>> 2008. 6. 10 오후 10:17:41
>> com.sun.enterprise.shoal.jointest.SimpleJoinTest runSimpleSample
>> 정보: Registering for group event notifications
>> 2008. 6. 10 오후 10:17:41
>> com.sun.enterprise.shoal.jointest.SimpleJoinTest runSimpleSample
>> 정보: Joining Group TestGroup
>> 2008. 6. 10 오후 10:17:42
>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow getMemberTokens
>> 정보: GMS View Change Received for group TestGroup : Members in
>> view for (before change analysis) are :
>> 1: MemberId: 197c66d7-f56c-4119-8b1e-18dc330e39d3, MemberType:
>> CORE, Address:
>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CE7D33395A50CC479CAA67ACEEEBD3BDDC03
>>
>> 2008. 6. 10 오후 10:17:42
>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow newViewObserved
>> 정보: Analyzing new membership snapshot received as part of event
>> : MASTER_CHANGE_EVENT
>> 2008. 6. 10 오후 10:17:47
>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow getMemberTokens
>> 정보: GMS View Change Received for group TestGroup : Members in
>> view for (before change analysis) are :
>> 1: MemberId: 197c66d7-f56c-4119-8b1e-18dc330e39d3, MemberType:
>> CORE, Address:
>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CE7D33395A50CC479CAA67ACEEEBD3BDDC03
>> 2: MemberId: 0c3c5b33-9a7d-4d85-ba1d-7a09a52d4e4b, MemberType:
>> CORE, Address:
>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CE9D818A456DA94CB5B53CB024FD26DA8B03
>> 3: MemberId: 468996ee-2d54-4c58-af46-72d903154e31, MemberType:
>> CORE, Address:
>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CEBCDB7FE3F44D47DE944388A09B8081BE03
>>
>> 2008. 6. 10 오후 10:17:47
>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow newViewObserved
>> 정보: Analyzing new membership snapshot received as part of event
>> : MASTER_CHANGE_EVENT
>> 2008. 6. 10 오후 10:17:53
>> com.sun.enterprise.shoal.jointest.SimpleJoinTest$JoinNotificationCallBack
>> processNotification
>> 정보: ****JoinNotification received: GroupLeader = true,
>> Signal.getMemberToken() = 0c3c5b33-9a7d-4d85-ba1d-7a09a52d4e4b,
>> ServerName = 197c66d7-f56c-4119-8b1e-18dc330e39d3, Leader =
>> 197c66d7-f56c-4119-8b1e-18dc330e39d3
>> *2008. 6. 10 오후 10:17:53
>> com.sun.enterprise.shoal.jointest.SimpleJoinTest$JoinNotificationCallBack
>> processNotification
>> 정보: ****JoinNotification received: GroupLeader = true,
>> Signal.getMemberToken() = 468996ee-2d54-4c58-af46-72d903154e31,
>> ServerName = 197c66d7-f56c-4119-8b1e-18dc330e39d3, Leader =
>> 197c66d7-f56c-4119-8b1e-18dc330e39d3
>> *------------------------------------------------------------------------
>>
>>
>> ["B"'s log]
>> ------------------------------------------------------------------------
>> 2008. 6. 10 오후 10:17:41
>> com.sun.enterprise.shoal.jointest.SimpleJoinTest runSimpleSample
>> 정보: Starting SimpleJoinTest....
>> 2008. 6. 10 오후 10:17:41
>> com.sun.enterprise.shoal.jointest.SimpleJoinTest initializeGMS
>> 정보: Initializing Shoal for member:
>> 0c3c5b33-9a7d-4d85-ba1d-7a09a52d4e4b group:TestGroup
>> 2008. 6. 10 오후 10:17:41
>> com.sun.enterprise.shoal.jointest.SimpleJoinTest runSimpleSample
>> 정보: Registering for group event notifications
>> 2008. 6. 10 오후 10:17:41
>> com.sun.enterprise.shoal.jointest.SimpleJoinTest runSimpleSample
>> 정보: Joining Group TestGroup
>> 2008. 6. 10 오후 10:17:42
>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow getMemberTokens
>> 정보: GMS View Change Received for group TestGroup : Members in
>> view for (before change analysis) are :
>> 1: MemberId: 0c3c5b33-9a7d-4d85-ba1d-7a09a52d4e4b, MemberType:
>> CORE, Address:
>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CE9D818A456DA94CB5B53CB024FD26DA8B03
>>
>> 2008. 6. 10 오후 10:17:42
>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow newViewObserved
>> 정보: Analyzing new membership snapshot received as part of event
>> : MASTER_CHANGE_EVENT
>> 2008. 6. 10 오후 10:17:47
>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow getMemberTokens
>> 정보: GMS View Change Received for group TestGroup : Members in
>> view for (before change analysis) are :
>> 1: MemberId: 197c66d7-f56c-4119-8b1e-18dc330e39d3, MemberType:
>> CORE, Address:
>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CE7D33395A50CC479CAA67ACEEEBD3BDDC03
>> 2: MemberId: 0c3c5b33-9a7d-4d85-ba1d-7a09a52d4e4b, MemberType:
>> CORE, Address:
>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CE9D818A456DA94CB5B53CB024FD26DA8B03
>>
>> 2008. 6. 10 오후 10:17:47
>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow newViewObserved
>> 정보: Analyzing new membership snapshot received as part of event
>> : MASTER_CHANGE_EVENT
>> 2008. 6. 10 오후 10:17:47
>> com.sun.enterprise.shoal.jointest.SimpleJoinTest$JoinNotificationCallBack
>> processNotification
>> 정보: ****JoinNotification received: GroupLeader = false,
>> Signal.getMemberToken() = 197c66d7-f56c-4119-8b1e-18dc330e39d3,
>> ServerName = 0c3c5b33-9a7d-4d85-ba1d-7a09a52d4e4b, Leader =
>> 197c66d7-f56c-4119-8b1e-18dc330e39d3
>> *2008. 6. 10 오후 10:17:47
>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow getMemberTokens
>> 정보: GMS View Change Received for group TestGroup : Members in
>> view for (before change analysis) are :
>> 1: MemberId: 197c66d7-f56c-4119-8b1e-18dc330e39d3, MemberType:
>> CORE, Address:
>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CE7D33395A50CC479CAA67ACEEEBD3BDDC03
>> 2: MemberId: 0c3c5b33-9a7d-4d85-ba1d-7a09a52d4e4b, MemberType:
>> CORE, Address:
>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CE9D818A456DA94CB5B53CB024FD26DA8B03
>> 3: MemberId: 468996ee-2d54-4c58-af46-72d903154e31, MemberType:
>> CORE, Address:
>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CEBCDB7FE3F44D47DE944388A09B8081BE03
>>
>> 2008. 6. 10 오후 10:17:47
>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow newViewObserved
>> 정보: Analyzing new membership snapshot received as part of event
>> : MASTER_CHANGE_EVENT
>> 2008. 6. 10 오후 10:17:47
>> com.sun.enterprise.shoal.jointest.SimpleJoinTest$JoinNotificationCallBack
>> processNotification
>> 정보: ****JoinNotification received: GroupLeader = false,
>> Signal.getMemberToken() = 468996ee-2d54-4c58-af46-72d903154e31,
>> ServerName = 0c3c5b33-9a7d-4d85-ba1d-7a09a52d4e4b, Leader =
>> 197c66d7-f56c-4119-8b1e-18dc330e39d3*
>> ------------------------------------------------------------------------
>>
>> ["C"'s log]
>> ------------------------------------------------------------------------
>> 2008. 6. 10 오후 10:17:42
>> com.sun.enterprise.shoal.jointest.SimpleJoinTest runSimpleSample
>> 정보: Starting SimpleJoinTest....
>> 2008. 6. 10 오후 10:17:42
>> com.sun.enterprise.shoal.jointest.SimpleJoinTest initializeGMS
>> 정보: Initializing Shoal for member:
>> 468996ee-2d54-4c58-af46-72d903154e31 group:TestGroup
>> 2008. 6. 10 오후 10:17:42
>> com.sun.enterprise.shoal.jointest.SimpleJoinTest runSimpleSample
>> 정보: Registering for group event notifications
>> 2008. 6. 10 오후 10:17:42
>> com.sun.enterprise.shoal.jointest.SimpleJoinTest runSimpleSample
>> 정보: Joining Group TestGroup
>> 2008. 6. 10 오후 10:17:43
>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow getMemberTokens
>> 정보: GMS View Change Received for group TestGroup : Members in
>> view for (before change analysis) are :
>> 1: MemberId: 468996ee-2d54-4c58-af46-72d903154e31, MemberType:
>> CORE, Address:
>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CEBCDB7FE3F44D47DE944388A09B8081BE03
>>
>> 2008. 6. 10 오후 10:17:43
>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow newViewObserved
>> 정보: Analyzing new membership snapshot received as part of event
>> : MASTER_CHANGE_EVENT
>> 2008. 6. 10 오후 10:17:47
>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow getMemberTokens
>> 정보: GMS View Change Received for group TestGroup : Members in
>> view for (before change analysis) are :
>> 1: MemberId: 197c66d7-f56c-4119-8b1e-18dc330e39d3, MemberType:
>> CORE, Address:
>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CE7D33395A50CC479CAA67ACEEEBD3BDDC03
>> 2: MemberId: 468996ee-2d54-4c58-af46-72d903154e31, MemberType:
>> CORE, Address:
>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CEBCDB7FE3F44D47DE944388A09B8081BE03
>>
>> 2008. 6. 10 오후 10:17:47
>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow newViewObserved
>> 정보: Analyzing new membership snapshot received as part of event
>> : MASTER_CHANGE_EVENT
>> 2008. 6. 10 오후 10:17:47
>> com.sun.enterprise.shoal.jointest.SimpleJoinTest$JoinNotificationCallBack
>> processNotification
>> 정보: ****JoinNotification received: GroupLeader = false,
>> Signal.getMemberToken() = 197c66d7-f56c-4119-8b1e-18dc330e39d3,
>> ServerName = 468996ee-2d54-4c58-af46-72d903154e31, Leader =
>> 197c66d7-f56c-4119-8b1e-18dc330e39d3
>> *2008. 6. 10 오후 10:17:47
>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow getMemberTokens
>> 정보: GMS View Change Received for group TestGroup : Members in
>> view for (before change analysis) are :
>> 1: MemberId: 197c66d7-f56c-4119-8b1e-18dc330e39d3, MemberType:
>> CORE, Address:
>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CE7D33395A50CC479CAA67ACEEEBD3BDDC03
>> 2: MemberId: 0c3c5b33-9a7d-4d85-ba1d-7a09a52d4e4b, MemberType:
>> CORE, Address:
>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CE9D818A456DA94CB5B53CB024FD26DA8B03
>> 3: MemberId: 468996ee-2d54-4c58-af46-72d903154e31, MemberType:
>> CORE, Address:
>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CEBCDB7FE3F44D47DE944388A09B8081BE03
>>
>> 2008. 6. 10 오후 10:17:47
>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow newViewObserved
>> 정보: Analyzing new membership snapshot received as part of event
>> : MASTER_CHANGE_EVENT
>> 2008. 6. 10 오후 10:17:47
>> com.sun.enterprise.shoal.jointest.SimpleJoinTest$JoinNotificationCallBack
>> processNotification
>> 정보: ****JoinNotification received: GroupLeader = false,
>> Signal.getMemberToken() = 0c3c5b33-9a7d-4d85-ba1d-7a09a52d4e4b,
>> ServerName = 468996ee-2d54-4c58-af46-72d903154e31, Leader =
>> 197c66d7-f56c-4119-8b1e-18dc330e39d3
>> *------------------------------------------------------------------------
>> All members missed some join notification.
>>
>>
>> I also tried to fix these problems.
>> I think it is so difficult that I explain all contents in detail
>> about solutions.
>> So I attached patch codes included comments.
>> When I try to test it, it seems that all problems which I
>> reported till now are fixed.
>>
>> If you can afford to review these codes, please point out my
>> mistakes.
>> I hope this patch will be of a little help and I am looking
>> forward to your feedback.
>>
>> Thanks.
>>
>> --
>> Bongjae Chang
>>
>>
>>
>> ----- Original Message -----
>> *From:* Bongjae Chang <mailto:carryel_at_korea.com>
>> *To:* dev_at_shoal.dev.java.net <mailto:dev_at_shoal.dev.java.net>
>> *Sent:* Friday, June 06, 2008 1:07 AM
>> *Subject:* Re: [Shoal-Dev] Strange behavior about join
>> notifications.
>>
>> Hi Shreedhar.
>>
>> I attached my patch. Attached files are MasterNode.java and
>> ClusterViewManager.java
>>
>> In MasterNode.java, only /processMasterNodeResponse()/
>> method changed.
>>
>> In ClusterViewManager.java, /setMaster( List ,
>> SystemAdvertisement)/ and /addToView( List )/ method added newly.
>>
>> I made effort to preserve original logic and codes if possible.
>>
>> Thanks.
>>
>> --
>> Bongjae Chang
>>
>>
>>
>> ----- Original Message -----
>> *From:* Shreedhar Ganapathy
>> <mailto:Shreedhar.Ganapathy_at_Sun.COM>
>> *To:* dev_at_shoal.dev.java.net <mailto:dev_at_shoal.dev.java.net>
>> *Sent:* Thursday, June 05, 2008 11:32 PM
>> *Subject:* Re: [Shoal-Dev] Strange behavior about join
>> notifications.
>>
>> Excellent investigation!
>> Solution sounds reasonably good.
>> Could you send us a patch and we can try it out in our
>> internal test setup?
>>
>> Bongjae Chang wrote:
>>>
>>> I reviewed join notification's logic about (b).
>>>
>>> /(b) when new member joined, this member don't receive
>>> some members' join notifications.(In other words, this
>>> member receives only own notification and group leader's
>>> notification)/
>>>
>>> This is normal case. e.g) member "B"'s behavior
>>>
>>> 1. When new member("C") joins the group, the group
>>> leader(master) sends MASTERNODERESPONSE to group members
>>> with ADD_EVENT(about "C") and own view's snapshot finally.
>>>
>>> 2. Members receive MASTERNODERESPONSE and process
>>> processMasterNodeResponse().
>>>
>>> 3. In processMasterNodeResponse(), ADD_EVENT notified
>>> with master view's snapshot by ClusterViewManager.
>>>
>>> 4. Then, ViewWindow analyzes the event packet(ADD_EVENT).
>>>
>>> 5. Finally, members receive a join notification about
>>> new member(about "C").
>>>
>>>
>>>
>>> But In new memeber("C"), some problem occurred. There is
>>> no logic about notifying other members' ADD_EVENT(about "B")
>>>
>>> 1. When new member("C") joins the group, the group
>>> leader(master) sends MASTERNODERESPONSE to group members
>>> with ADD_EVENT and own view's snapshot finally.[same above]
>>>
>>> 2. "C" receive MASTERNODERESPONSE and process
>>> processMasterNodeResponse()[same above]
>>>
>>> 3. In processMasterNodeResponse(), MASTER_CHANGE_EVENT
>>> notified *without master view's snapshot* because
>>> current master is self.
>>>
>>> 4. Then, ViewWindow analyzes the event
>>> packet(MASTER_CHANGE_EVENT). Of course when
>>> ViewWindow receives MASTER_CHANGE_EVENT, ViewWindow
>>> notifies join notifications based on view history if
>>> previous view doesn't have any members. Maybe this is
>>> the logic for notifying other members' join
>>> notifications in new member("C"). But *current
>>> view based on event packet(MASTER_CHANGE_EVENT) is not
>>> master view unfortunately*. Current view has only "C"'s
>>> local view(currently only master member and own member
>>> added). So only master's join notification occurred.
>>> 5. In processMasterNodeResponse(), ADD_EVENT notified
>>> with master view's snapshot by ClusterViewManager.[same
>>> above]
>>> 6. Then, ViewWindow analyzes the event
>>> packet(ADD_EVENT).[same above]
>>> 7. new member("C") receives own join notification.[same
>>> above]
>>>
>>>
>>>
>>> So, I think this problem can be fixed *if
>>> MASTER_CHANGE_EVENT notified with master view's snapshot
>>> *above 3. Then above 4, ViewWindow can find that
>>> previous view doesn't have other members as well as
>>> master member. And then above 5, In processMasterNode(),
>>> ClusterViewManager can notifies only ADD_EVENT without
>>> master view's snapshot because MASTER_CHANGE_EVENT
>>> included master view's snapshot already notified .
>>>
>>> Actually, I tried to apply this patch, I could verify
>>> that this problem(b) is resolved.
>>>
>>> If this issue(b) is indentified as a bug and my
>>> suggestion doesn't have a mistake or error logically, I
>>> will send the patch code to the dev alias.
>>>
>>> Please point out mistakes and I ask you for advice.
>>>
>>> Thanks.
>>> --
>>> Bongjae Chang
>>>
>>>
>>>
>>> ----- Original Message -----
>>> *From:* Bongjae Chang <mailto:carryel_at_korea.com>
>>> *To:* dev_at_shoal.dev.java.net
>>> <mailto:dev_at_shoal.dev.java.net>
>>> *Sent:* Thursday, June 05, 2008 2:38 PM
>>> *Subject:* [Shoal-Dev] Strange behavior about join
>>> notifications.
>>>
>>> Hi.
>>> When I tried to test join notifications, I
>>> found some problems.
>>>
>>> Assuming that "A", "B" and "C" are members in
>>> "TestGroup". Sometimes when new member join, this
>>> member can't receive join notifications of others
>>> that already joined.
>>>
>>> This scenario is following.
>>> 1. First, "A" joined and became a group leader.
>>> 2. after 1, "B" joined. Then "B" received "A"'s a
>>> join notification and own("C") join notification in
>>> "B". No problem.
>>> 3. after 2, "C" joined. At this time, "C" must
>>> receive "A", "B" and "C" join notifications in "C".
>>> But "C" didn't receive "B"'s a join notification.
>>>
>>> Like above, assuming that "A", "B", "C" and "D" are
>>> members in "TestGroup", "D" didn't receive "B" and
>>> "C"'s join notifications.
>>>
>>> I think there are some bugs.
>>> (a) above 1, the group leader don't receive own join
>>> notification.
>>> (b) above 3, when new member joined, this member
>>> don't receive some members' join notifications.(In
>>> other words, this member receives only own
>>> notification and group leader's notification)
>>>
>>> You can also see this result from following logs.
>>>
>>> /"A"(the group leader): member
>>> id="6a92713c-d83e-49a8-8aaa-ad12046a1acb"/
>>> /"B": member id="77ff0a1c-b9a1-417a-b04c-0028ef6da921"/
>>> /"C": member id="6a8e7161-92ef-4b9e-a5e1-d9a8c7665b4a"/
>>> /When memebers receive a join notification,
>>> "***JoinNotification received: ServerName =
>>> [MY_MEMBER_ID], Signal.getMemberToken() =
>>> [MEMBER_ID]" printed./
>>>
>>> ["A"'s log]
>>> ------------------------------------------------------------------------
>>> 2008. 6. 5 오후 1:36:17
>>> com.sun.enterprise.shoal.jointest.SimpleJoinTest
>>> runSimpleSample
>>> 정보: Starting SimpleJoinTest....
>>> 2008. 6. 5 오후 1:36:18
>>> com.sun.enterprise.shoal.jointest.SimpleJoinTest
>>> initializeGMS
>>> 정보: Initializing Shoal for member:
>>> 6a92713c-d83e-49a8-8aaa-ad12046a1acb group:TestGroup
>>> 2008. 6. 5 오후 1:36:18
>>> com.sun.enterprise.shoal.jointest.SimpleJoinTest
>>> runSimpleSample
>>> 정보: Registering for group event notifications
>>> 2008. 6. 5 오후 1:36:18
>>> com.sun.enterprise.shoal.jointest.SimpleJoinTest
>>> runSimpleSample
>>> 정보: Joining Group TestGroup
>>> 2008. 6. 5 오후 1:36:18
>>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow
>>> getMemberTokens
>>> 정보: GMS View Change Received for group TestGroup :
>>> Members in view for (before change analysis) are :
>>> 1: MemberId: 6a92713c-d83e-49a8-8aaa-ad12046a1acb,
>>> MemberType: CORE, Address:
>>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CE15F3706F0E794BF595FCEE9EEA90FCE103
>>>
>>> 2008. 6. 5 오후 1:36:18
>>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow
>>> newViewObserved
>>> 정보: Analyzing new membership snapshot received as
>>> part of event : MASTER_CHANGE_EVENT
>>> 2008. 6. 5 오후 1:36:41
>>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow
>>> getMemberTokens
>>> 정보: GMS View Change Received for group TestGroup :
>>> Members in view for (before change analysis) are :
>>> 1: MemberId: 6a92713c-d83e-49a8-8aaa-ad12046a1acb,
>>> MemberType: CORE, Address:
>>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CE15F3706F0E794BF595FCEE9EEA90FCE103
>>> 2: MemberId: 77ff0a1c-b9a1-417a-b04c-0028ef6da921,
>>> MemberType: CORE, Address:
>>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CEC9482BF0C6A44D55B407E7E3A8D1339803
>>>
>>> 2008. 6. 5 오후 1:36:41
>>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow
>>> newViewObserved
>>> 정보: Analyzing new membership snapshot received as
>>> part of event : ADD_EVENT
>>> 2008. 6. 5 오후 1:36:44
>>> com.sun.enterprise.shoal.jointest.SimpleJoinTest$JoinNotificationCallBack
>>> processNotification
>>> *정보: ***JoinNotification received: ServerName =
>>> 6a92713c-d83e-49a8-8aaa-ad12046a1acb,
>>> Signal.getMemberToken() =
>>> 77ff0a1c-b9a1-417a-b04c-0028ef6da921
>>> *2008. 6. 5 오후 1:37:00
>>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow
>>> getMemberTokens
>>> 정보: GMS View Change Received for group TestGroup :
>>> Members in view for (before change analysis) are :
>>> 1: MemberId: 6a8e7161-92ef-4b9e-a5e1-d9a8c7665b4a,
>>> MemberType: CORE, Address:
>>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CE0F6B7D5CD8CC447180F2D059E273AD5103
>>> 2: MemberId: 6a92713c-d83e-49a8-8aaa-ad12046a1acb,
>>> MemberType: CORE, Address:
>>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CE15F3706F0E794BF595FCEE9EEA90FCE103
>>> 3: MemberId: 77ff0a1c-b9a1-417a-b04c-0028ef6da921,
>>> MemberType: CORE, Address:
>>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CEC9482BF0C6A44D55B407E7E3A8D1339803
>>>
>>> 2008. 6. 5 오후 1:37:00
>>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow
>>> newViewObserved
>>> 정보: Analyzing new membership snapshot received as
>>> part of event : ADD_EVENT
>>> 2008. 6. 5 오후 1:37:03
>>> com.sun.enterprise.shoal.jointest.SimpleJoinTest$JoinNotificationCallBack
>>> processNotification
>>> *정보: ***JoinNotification received: ServerName =
>>> 6a92713c-d83e-49a8-8aaa-ad12046a1acb,
>>> Signal.getMemberToken() =
>>> 6a8e7161-92ef-4b9e-a5e1-d9a8c7665b4a*
>>> ------------------------------------------------------------------------
>>> "A"'s log don't have own join
>>> notification(6a92713c-d83e-49a8-8aaa-ad12046a1acb).
>>>
>>>
>>> ["B"'s log]
>>> ------------------------------------------------------------------------
>>> 2008. 6. 5 오후 1:36:40
>>> com.sun.enterprise.shoal.jointest.SimpleJoinTest
>>> runSimpleSample
>>> 정보: Starting SimpleJoinTest....
>>> 2008. 6. 5 오후 1:36:40
>>> com.sun.enterprise.shoal.jointest.SimpleJoinTest
>>> initializeGMS
>>> 정보: Initializing Shoal for member:
>>> 77ff0a1c-b9a1-417a-b04c-0028ef6da921 group:TestGroup
>>> 2008. 6. 5 오후 1:36:40
>>> com.sun.enterprise.shoal.jointest.SimpleJoinTest
>>> runSimpleSample
>>> 정보: Registering for group event notifications
>>> 2008. 6. 5 오후 1:36:40
>>> com.sun.enterprise.shoal.jointest.SimpleJoinTest
>>> runSimpleSample
>>> 정보: Joining Group TestGroup
>>> 2008. 6. 5 오후 1:36:41
>>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow
>>> getMemberTokens
>>> 정보: GMS View Change Received for group TestGroup :
>>> Members in view for (before change analysis) are :
>>> 1: MemberId: 77ff0a1c-b9a1-417a-b04c-0028ef6da921,
>>> MemberType: CORE, Address:
>>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CEC9482BF0C6A44D55B407E7E3A8D1339803
>>>
>>> 2008. 6. 5 오후 1:36:41
>>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow
>>> newViewObserved
>>> 정보: Analyzing new membership snapshot received as
>>> part of event : MASTER_CHANGE_EVENT
>>> 2008. 6. 5 오후 1:36:41
>>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow
>>> getMemberTokens
>>> 정보: GMS View Change Received for group TestGroup :
>>> Members in view for (before change analysis) are :
>>> 1: MemberId: 6a92713c-d83e-49a8-8aaa-ad12046a1acb,
>>> MemberType: CORE, Address:
>>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CE15F3706F0E794BF595FCEE9EEA90FCE103
>>> 2: MemberId: 77ff0a1c-b9a1-417a-b04c-0028ef6da921,
>>> MemberType: CORE, Address:
>>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CEC9482BF0C6A44D55B407E7E3A8D1339803
>>>
>>> 2008. 6. 5 오후 1:36:41
>>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow
>>> newViewObserved
>>> 정보: Analyzing new membership snapshot received as
>>> part of event : MASTER_CHANGE_EVENT
>>> 2008. 6. 5 오후 1:36:41
>>> com.sun.enterprise.shoal.jointest.SimpleJoinTest$JoinNotificationCallBack
>>> processNotification
>>> *정보: ***JoinNotification received: ServerName =
>>> 77ff0a1c-b9a1-417a-b04c-0028ef6da921,
>>> Signal.getMemberToken() =
>>> 6a92713c-d83e-49a8-8aaa-ad12046a1acb
>>> *2008. 6. 5 오후 1:36:41
>>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow
>>> getMemberTokens
>>> 정보: GMS View Change Received for group TestGroup :
>>> Members in view for (before change analysis) are :
>>> 1: MemberId: 6a92713c-d83e-49a8-8aaa-ad12046a1acb,
>>> MemberType: CORE, Address:
>>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CE15F3706F0E794BF595FCEE9EEA90FCE103
>>> 2: MemberId: 77ff0a1c-b9a1-417a-b04c-0028ef6da921,
>>> MemberType: CORE, Address:
>>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CEC9482BF0C6A44D55B407E7E3A8D1339803
>>>
>>> 2008. 6. 5 오후 1:36:41
>>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow
>>> newViewObserved
>>> 정보: Analyzing new membership snapshot received as
>>> part of event : ADD_EVENT
>>> 2008. 6. 5 오후 1:36:41
>>> com.sun.enterprise.shoal.jointest.SimpleJoinTest$JoinNotificationCallBack
>>> processNotification
>>> *정보: ***JoinNotification received: ServerName =
>>> 77ff0a1c-b9a1-417a-b04c-0028ef6da921,
>>> Signal.getMemberToken() =
>>> 77ff0a1c-b9a1-417a-b04c-0028ef6da921
>>> *2008. 6. 5 오후 1:37:00
>>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow
>>> getMemberTokens
>>> 정보: GMS View Change Received for group TestGroup :
>>> Members in view for (before change analysis) are :
>>> 1: MemberId: 6a8e7161-92ef-4b9e-a5e1-d9a8c7665b4a,
>>> MemberType: CORE, Address:
>>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CE0F6B7D5CD8CC447180F2D059E273AD5103
>>> 2: MemberId: 6a92713c-d83e-49a8-8aaa-ad12046a1acb,
>>> MemberType: CORE, Address:
>>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CE15F3706F0E794BF595FCEE9EEA90FCE103
>>> 3: MemberId: 77ff0a1c-b9a1-417a-b04c-0028ef6da921,
>>> MemberType: CORE, Address:
>>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CEC9482BF0C6A44D55B407E7E3A8D1339803
>>>
>>> 2008. 6. 5 오후 1:37:00
>>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow
>>> newViewObserved
>>> 정보: Analyzing new membership snapshot received as
>>> part of event : ADD_EVENT
>>> 2008. 6. 5 오후 1:37:00
>>> com.sun.enterprise.shoal.jointest.SimpleJoinTest$JoinNotificationCallBack
>>> processNotification
>>> *정보: ***JoinNotification received: ServerName =
>>> 77ff0a1c-b9a1-417a-b04c-0028ef6da921,
>>> Signal.getMemberToken() =
>>> 6a8e7161-92ef-4b9e-a5e1-d9a8c7665b4a*
>>> ------------------------------------------------------------------------
>>>
>>> ["C"'s log]
>>> ------------------------------------------------------------------------
>>> 2008. 6. 5 오후 1:36:59
>>> com.sun.enterprise.shoal.jointest.SimpleJoinTest
>>> runSimpleSample
>>> 정보: Starting SimpleJoinTest....
>>> 2008. 6. 5 오후 1:36:59
>>> com.sun.enterprise.shoal.jointest.SimpleJoinTest
>>> initializeGMS
>>> 정보: Initializing Shoal for member:
>>> 6a8e7161-92ef-4b9e-a5e1-d9a8c7665b4a group:TestGroup
>>> 2008. 6. 5 오후 1:36:59
>>> com.sun.enterprise.shoal.jointest.SimpleJoinTest
>>> runSimpleSample
>>> 정보: Registering for group event notifications
>>> 2008. 6. 5 오후 1:36:59
>>> com.sun.enterprise.shoal.jointest.SimpleJoinTest
>>> runSimpleSample
>>> 정보: Joining Group TestGroup
>>> 2008. 6. 5 오후 1:37:00
>>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow
>>> getMemberTokens
>>> 정보: GMS View Change Received for group TestGroup :
>>> Members in view for (before change analysis) are :
>>> 1: MemberId: 6a8e7161-92ef-4b9e-a5e1-d9a8c7665b4a,
>>> MemberType: CORE, Address:
>>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CE0F6B7D5CD8CC447180F2D059E273AD5103
>>>
>>> 2008. 6. 5 오후 1:37:00
>>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow
>>> newViewObserved
>>> 정보: Analyzing new membership snapshot received as
>>> part of event : MASTER_CHANGE_EVENT
>>> 2008. 6. 5 오후 1:37:00
>>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow
>>> getMemberTokens
>>> 정보: GMS View Change Received for group TestGroup :
>>> Members in view for (before change analysis) are :
>>> 1: MemberId: 6a8e7161-92ef-4b9e-a5e1-d9a8c7665b4a,
>>> MemberType: CORE, Address:
>>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CE0F6B7D5CD8CC447180F2D059E273AD5103
>>> 2: MemberId: 6a92713c-d83e-49a8-8aaa-ad12046a1acb,
>>> MemberType: CORE, Address:
>>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CE15F3706F0E794BF595FCEE9EEA90FCE103
>>>
>>> 2008. 6. 5 오후 1:37:00
>>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow
>>> newViewObserved
>>> 정보: Analyzing new membership snapshot received as
>>> part of event : MASTER_CHANGE_EVENT
>>> 2008. 6. 5 오후 1:37:00
>>> com.sun.enterprise.shoal.jointest.SimpleJoinTest$JoinNotificationCallBack
>>> processNotification
>>> *정보: ***JoinNotification received: ServerName =
>>> 6a8e7161-92ef-4b9e-a5e1-d9a8c7665b4a,
>>> Signal.getMemberToken() =
>>> 6a92713c-d83e-49a8-8aaa-ad12046a1acb
>>> *2008. 6. 5 오후 1:37:00
>>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow
>>> getMemberTokens
>>> 정보: GMS View Change Received for group TestGroup :
>>> Members in view for (before change analysis) are :
>>> 1: MemberId: 6a8e7161-92ef-4b9e-a5e1-d9a8c7665b4a,
>>> MemberType: CORE, Address:
>>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CE0F6B7D5CD8CC447180F2D059E273AD5103
>>> 2: MemberId: 6a92713c-d83e-49a8-8aaa-ad12046a1acb,
>>> MemberType: CORE, Address:
>>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CE15F3706F0E794BF595FCEE9EEA90FCE103
>>> 3: MemberId: 77ff0a1c-b9a1-417a-b04c-0028ef6da921,
>>> MemberType: CORE, Address:
>>> urn:jxta:uuid-0836778E36C54F728D5B934A965395CEC9482BF0C6A44D55B407E7E3A8D1339803
>>>
>>> 2008. 6. 5 오후 1:37:00
>>> com.sun.enterprise.ee.cms.impl.jxta.ViewWindow
>>> newViewObserved
>>> 정보: Analyzing new membership snapshot received as
>>> part of event : ADD_EVENT
>>> 2008. 6. 5 오후 1:37:00
>>> com.sun.enterprise.shoal.jointest.SimpleJoinTest$JoinNotificationCallBack
>>> processNotification
>>> *정보: ***JoinNotification received: ServerName =
>>> 6a8e7161-92ef-4b9e-a5e1-d9a8c7665b4a,
>>> Signal.getMemberToken() =
>>> 6a8e7161-92ef-4b9e-a5e1-d9a8c7665b4a*
>>> ------------------------------------------------------------------------
>>> "C"'s log don't have "B"'s join
>>> notification(77ff0a1c-b9a1-417a-b04c-0028ef6da921).
>>>
>>> And I attached a simple test code.
>>>
>>>
>>> PS) When I call GMSFactory.startGMSModule()
>>> without properties param(like null), simple NPE
>>> occurred. The following is exception.
>>> ------------------------------------------------------------------------
>>> Exception in thread "main"
>>> java.lang.NullPointerException
>>> at
>>> com.sun.enterprise.jxtamgmt.ClusterManager.<init>(ClusterManager.java:161)
>>> at
>>> com.sun.enterprise.ee.cms.impl.jxta.GroupCommunicationProviderImpl.initializeGroupCommunicationProvider(GroupCommunicationProviderImpl.java:138)
>>> at
>>> com.sun.enterprise.ee.cms.impl.jxta.GMSContext.join(GMSContext.java:122)
>>> at
>>> com.sun.enterprise.ee.cms.impl.common.GroupManagementServiceImpl.join(GroupManagementServiceImpl.java:331)
>>> at
>>> com.sun.enterprise.shoal.jointest.SimpleJoinTest.runSimpleSample(SimpleJoinTest.java:40)
>>> at
>>> com.sun.enterprise.shoal.jointest.SimpleJoinTest.main(SimpleJoinTest.java:20)
>>> at
>>> sun.reflect.NativeMethodAccessorImpl.invoke0(Native
>>> Method)
>>> at
>>> sun.reflect.NativeMethodAccessorImpl.invoke(Unknown
>>> Source)
>>> at
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown
>>> Source)
>>> at java.lang.reflect.Method.invoke(Unknown Source)
>>> at
>>> com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)
>>> ------------------------------------------------------------------------
>>>
>>>
>>> In ClusterManager.java:161
>>> ------------------------------------------------------------------------
>>> /this.bindInterfaceAddress =
>>> (String)props.get(JxtaConfigConstants.BIND_INTERFACE_ADDRESS.toString());/
>>> ------------------------------------------------------------------------
>>>
>>> Maybe, this is "Fix for the power outage issue"'s
>>> side-effect by sheetalv. :-)
>>>
>>> --
>>> Bongjae Chang
>>>
>>>
>>>
>>> ------------------------------------------------------------------------
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail:
>>> dev-unsubscribe_at_shoal.dev.java.net
>>> For additional commands, e-mail:
>>> dev-help_at_shoal.dev.java.net
>>>
>>
>> ------------------------------------------------------------------------
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe_at_shoal.dev.java.net
>> <mailto:dev-unsubscribe_at_shoal.dev.java.net>
>> For additional commands, e-mail: dev-help_at_shoal.dev.java.net
>> <mailto:dev-help_at_shoal.dev.java.net>
>>
>> <HealthMonitor.java><MasterNode.java><ViewWindow.java><ClusterViewManager.java><SimpleJoinTest.java>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe_at_shoal.dev.java.net
>> <mailto:dev-unsubscribe_at_shoal.dev.java.net>
>> For additional commands, e-mail: dev-help_at_shoal.dev.java.net
>> <mailto:dev-help_at_shoal.dev.java.net>
>
> ------------------------------------------------------------------------
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe_at_shoal.dev.java.net
> For additional commands, e-mail: dev-help_at_shoal.dev.java.net