commit: r663 - trunk/daemon

[email protected] Mon, 20 Jan 2014 22:49:35 -0500
Newsgroups gmane.network.spread.cvs
Message-ID <[email protected]>
Author: jschultz
Date: 2014-01-20 22:49:35 -0500 (Mon, 20 Jan 2014)
New Revision: 663

Modified:
   trunk/daemon/configuration.c
   trunk/daemon/configuration.h
   trunk/daemon/membership.c
   trunk/daemon/membership.h
   trunk/daemon/network.c
   trunk/daemon/protocol.c
Log:
svn merge -r626:662 branches/spread_4_2_debug trunk

plus deconflict



Modified: trunk/daemon/configuration.c
===================================================================
--- trunk/daemon/configuration.c	2014-01-21 03:19:09 UTC (rev 662)
+++ trunk/daemon/configuration.c	2014-01-21 03:49:35 UTC (rev 663)
@@ -705,7 +705,8 @@
                 if( config->segments[i].num_procs > 0 )
                         return( config->segments[i].procs[0]->id );
         }
-        Alarm( EXIT, "Conf_leader: Empty configuration %c",Conf_print(config));
+	Conf_print( config );
+        Alarm( EXIT, "Conf_leader: Empty configuration\n" );
 	return( -1 );
 }
 
@@ -721,7 +722,8 @@
                         return( config->segments[i].procs[j]->id );
 		}
         }
-        Alarm( EXIT, "Conf_last: Empty configuration %c",Conf_print(config));
+	Conf_print( config );
+        Alarm( EXIT, "Conf_last: Empty configuration\n" );
 	return( -1 );
 }
 
@@ -770,8 +772,8 @@
 	{
 		return( config->segments[seg_index].procs[0]->id );
 	}
-        Alarm( EXIT, "Conf_seg_leader: Empty segment %d in Conf %c",
-		seg_index, Conf_print(config));
+	Conf_print( config );
+        Alarm( EXIT, "Conf_seg_leader: Empty segment %d in Conf\n", seg_index );
 	return( -1 );
 }
 
@@ -784,8 +786,8 @@
 		j = config->segments[seg_index].num_procs-1;
 		return( config->segments[seg_index].procs[j]->id );
 	}
-        Alarm( EXIT, "Conf_seg_leader: Empty segment %d in Conf %c",
-		seg_index, Conf_print(config));
+	Conf_print( config );
+        Alarm( EXIT, "Conf_seg_leader: Empty segment %d in Conf\n", seg_index );
         return(-1);
 }
 
@@ -805,7 +807,7 @@
 	sprintf( str, "%u.%u.%u.%u", i1, i2, i3, i4 );
 }
 
-char	Conf_print(configuration *config)
+int	Conf_print(configuration *config)
 {
 	int 	s,p,ret;
 	char	ip[16];
@@ -829,11 +831,11 @@
 		}
 	}
 	Alarm( PRINT, "====================\n" );
-	return( '\n' );
+	return( 0 );
 }
 
 
-char	Conf_print_procs(configuration *config)
+int	Conf_print_procs(configuration *config)
 {
 	int 	i;
 	char	ip[16];
@@ -849,7 +851,7 @@
                        ip, config->allprocs[i].num_if);
         }
 	Alarm( PRINT, "====================\n" );
-	return( '\n' );
+	return( 0 );
 }
 
 bool    Conf_get_dangerous_monitor_state(void)

Modified: trunk/daemon/configuration.h
===================================================================
--- trunk/daemon/configuration.h	2014-01-21 03:19:09 UTC (rev 662)
+++ trunk/daemon/configuration.h	2014-01-21 03:49:35 UTC (rev 663)
@@ -113,8 +113,8 @@
 int             Conf_append_id_to_seg( segment *seg, int32u id);
 int	        Conf_num_procs_in_seg( configuration *config, int16 seg_index );
 void		Conf_id_to_str( int32u id, char *str );
-char 		Conf_print(configuration *config);
-char	        Conf_print_procs(configuration *config);
+int 		Conf_print(configuration *config);
+int	        Conf_print_procs(configuration *config);
 
 bool            Conf_in_reload_state(void);
 void            Conf_reload_state_begin(void);

Modified: trunk/daemon/membership.c
===================================================================
--- trunk/daemon/membership.c	2014-01-21 03:19:09 UTC (rev 662)
+++ trunk/daemon/membership.c	2014-01-21 03:49:35 UTC (rev 663)
@@ -79,6 +79,8 @@
 	int16		num_trans;
 } ring_info;
 
+bool                    Memb_Just_Installed = FALSE;  /* tracks if we just installed a reg memb due to last token we sent */
+
 static	configuration	Membership;
 static	membership_id	Membership_id;
 static	configuration	Future_membership;
@@ -866,10 +868,11 @@
     }
 
     Token_alive = 0;
-    E_dequeue( Memb_token_loss_event,    0, NULL );
-    E_dequeue( Send_join_event,	   0, NULL );
-    E_dequeue( Form_or_fail_event,	   0, NULL );
-    E_dequeue( Prot_token_hurry_event,   0, NULL );
+    Memb_Just_Installed = FALSE;
+    E_dequeue( Memb_token_loss_event,         0, NULL );
+    E_dequeue( Send_join_event,               0, NULL );
+    E_dequeue( Form_or_fail_event,            0, NULL );
+    E_dequeue( Prot_token_hurry_event,        0, NULL );
     E_dequeue( Memb_lookup_new_members_event, 0, NULL );
     Last_token->type = 0;
     Last_token->seq  = 0;
@@ -1433,7 +1436,7 @@
 	rg_info->aru		= Aru;
 	rg_info->highest_seq	= Highest_seq;
 
-	/*Alarmp(SPLOG_INFO, MEMB, "Create_form1: putting Aru = %d and Highest_Seq = %d on rg_info form1 token\n", Aru, Highest_seq);*/
+	Alarmp(SPLOG_INFO, MEMB, "Create_form1: putting Aru = %d and Highest_Seq = %d on rg_info form1 token\n", Aru, Highest_seq);
 
 	/* update holes */
 	rg_info->num_holes	= 0;
@@ -1491,14 +1494,16 @@
 	if( F_members.num_pending > 0 )
 	{
 		/* send to next member in pending list */
-		Net_ucast_token( F_members.members[F_members.num_members], 
-			   &send_scat );
-		Net_ucast_token( F_members.members[F_members.num_members], 
-			   &send_scat );
+		Net_ucast_token( F_members.members[F_members.num_members], &send_scat );
+		Net_ucast_token( F_members.members[F_members.num_members], &send_scat );
+		/*Net_ucast_token( F_members.members[F_members.num_members], &send_scat );*/
+
 	}else if( F_reps.rep_index < F_reps.num_reps){
 		/* send to next rep */
 		Net_ucast_token( F_reps.reps[F_reps.rep_index].proc_id, &send_scat );
 		Net_ucast_token( F_reps.reps[F_reps.rep_index].proc_id, &send_scat );
+		/*Net_ucast_token( F_reps.reps[F_reps.rep_index].proc_id, &send_scat );*/
+
 	}else{
 		/* singleton membership */
 		F_members.num_pending = 1;
@@ -1508,6 +1513,8 @@
 		form_token.rtr_len = send_scat.elements[1].len +
 			send_scat.elements[2].len + send_scat.elements[3].len;
 		Net_ucast_token( My.id, &send_scat );
+		Net_ucast_token( My.id, &send_scat );
+		/*Net_ucast_token( My.id, &send_scat );*/
 	}
 
 	E_dequeue( Send_join_event, 0, NULL );
@@ -1721,7 +1728,7 @@
 	new_rg_info->aru	 = Aru;
 	new_rg_info->highest_seq = Highest_seq;
 
-	/*Alarmp(SPLOG_INFO, MEMB, "Fill_form1: Putting Aru = %d and Highest_seq = %d on new_rg_info of form1 token\n", Aru, Highest_seq);*/
+	Alarmp(SPLOG_INFO, MEMB, "Fill_form1: Putting Aru = %d and Highest_seq = %d on new_rg_info of form1 token\n", Aru, Highest_seq);
 
 	if( my_rg_info == NULL )
 	{
@@ -1794,14 +1801,12 @@
 
 	    if( my_rg_info->aru         > Aru ) {
 		new_rg_info->aru 	= my_rg_info->aru;
-		/*Alarmp( SPLOG_INFO, MEMB, "my_rg_info->aru (%d) > Aru (%d) -> setting new_rg_info->aru to my_rg_info\n", 
-		  my_rg_info->aru, Aru );*/
+		Alarmp( SPLOG_INFO, MEMB, "my_rg_info->aru (%d) > Aru (%d) -> setting new_rg_info->aru to my_rg_info\n", my_rg_info->aru, Aru );
 	    }
 
 	    if( my_rg_info->highest_seq > Highest_seq ) {
 		new_rg_info->highest_seq= my_rg_info->highest_seq;
-		/*Alarmp( SPLOG_INFO, MEMB, "my_rg_info->highest_seq (%d) > Highest_seq (%d) -> setting new_rg_info->highest_seq to my_rg_info\n", 
-		  my_rg_info->highest_seq, Highest_seq );*/
+		Alarmp( SPLOG_INFO, MEMB, "my_rg_info->highest_seq (%d) > Highest_seq (%d) -> setting new_rg_info->highest_seq to my_rg_info\n", my_rg_info->highest_seq, Highest_seq );
 	    }
 
 	    for( i=0; i < my_rg_info->num_holes; i++ )
@@ -1893,11 +1898,13 @@
 		/* send to next member in pending list */
 		Net_ucast_token( m_info->members[m_info->num_members], &send_scat );
 		Net_ucast_token( m_info->members[m_info->num_members], &send_scat );
+		/*Net_ucast_token( m_info->members[m_info->num_members], &send_scat );*/
 
 	}else if( r_info->rep_index < r_info->num_reps){
 		/* send to next rep */
 		Net_ucast_token( r_info->reps[r_info->rep_index].proc_id, &send_scat );
 		Net_ucast_token( r_info->reps[r_info->rep_index].proc_id, &send_scat );
+		/*Net_ucast_token( r_info->reps[r_info->rep_index].proc_id, &send_scat );*/
 
 	}else{
 		/* prepare form2 token */
@@ -1911,6 +1918,7 @@
 				send_scat.elements[2].len + send_scat.elements[3].len;
 		Net_ucast_token( m_info->members[0], &send_scat );
 		Net_ucast_token( m_info->members[0], &send_scat );
+		/*Net_ucast_token( m_info->members[0], &send_scat );*/
 	}
 
 	E_dequeue( Send_join_event, 0, NULL );
@@ -2041,8 +2049,7 @@
                       *num_rings, num_bytes, Membership_id.proc_id, Membership_id.time); 
         }
 
-	/*Alarmp( SPLOG_INFO, MEMB, "Read_form2: updating Highest_seq %d -> %d; Aru %d -> %d\n", 
-	  Highest_seq, my_rg_info->highest_seq, Aru, my_rg_info->aru );*/
+	Alarmp( SPLOG_INFO, MEMB, "Read_form2: updating Highest_seq %d -> %d; Aru %d -> %d\n", Highest_seq, my_rg_info->highest_seq, Aru, my_rg_info->aru );
 
 	Highest_seq = my_rg_info->highest_seq;
 	Aru	    = my_rg_info->aru;
@@ -2100,6 +2107,7 @@
 	{
 		Net_send_token( &send_scat );
 		Net_send_token( &send_scat );
+		/*Net_send_token( &send_scat );*/
 		Token_rounds = 0;
 
 	}else{
@@ -2108,12 +2116,14 @@
 
 		form_token->type = 0;
 		form_token->seq = 0;
-		form_token->aru = Last_seq;  /* TODO: is this right? if so, shouldn't we set Last_token this way too below? */
+		form_token->aru = INT32_MAX;   /* leader will lower to his My_aru */
+		form_token->aru_last_id = -1;  /* leader will set to My.id */
 		form_token->flow_control = 0;
 		form_token->rtr_len = 0;
 
 		Net_send_token( &send_scat );
 		Net_send_token( &send_scat );
+		/*Net_send_token( &send_scat );*/
 		Token_rounds = 1;
 	}
 	Token_alive = 1;
@@ -2124,6 +2134,9 @@
 	Last_token->seq  = 0;
 	Last_token->aru  = 0;
 
+	Aru = 0;
+	Alarmp( SPLOG_INFO, MEMB, "Read_form2: updating Aru to %d!\n", Aru );
+
 	State = EVS;
 	GlobalStatus.state = EVS;
 }
@@ -2286,8 +2299,7 @@
 	int	pack_entry;
 	int	i;
 
-	/*Alarmp( SPLOG_INFO, MEMB, "Backoff_membership entered: Last_discarded = %d; Highest_seq = %d; Aru = %d; My_aru = %d\n", 
-	  Last_discarded, Highest_seq, Aru, My_aru );*/
+	Alarmp( SPLOG_INFO, MEMB, "Backoff_membership entered: Last_discarded = %d; Highest_seq = %d; Aru = %d; My_aru = %d\n", Last_discarded, Highest_seq, Aru, My_aru );
 
 	pack_entry=-1;
 	for( i=Last_discarded+1; i <= Highest_seq; i++ )
@@ -2311,8 +2323,7 @@
 		My_aru++;
 	}
 
-	/*Alarmp( SPLOG_INFO, MEMB, "Backoff_membership leaving: Last_discarded = %d; Highest_seq = %d; Aru = %d; My_aru = %d\n", 
-	  Last_discarded, Highest_seq, Aru, My_aru );*/
+	Alarmp( SPLOG_INFO, MEMB, "Backoff_membership leaving: Last_discarded = %d; Highest_seq = %d; Aru = %d; My_aru = %d\n", Last_discarded, Highest_seq, Aru, My_aru );
 }
 
 void	Memb_commit()
@@ -2381,6 +2392,7 @@
 
 	Alarm( MEMB, "Memb_regular\n");
 	Transitional = 0;
+	Memb_Just_Installed = TRUE;
 
 	GlobalStatus.membership_changes++;
 
@@ -2403,9 +2415,11 @@
 	Foreign_found = 0;
 	if( Conf_leader( &Membership ) == My.id )
 		E_queue( Memb_lookup_new_members_event, 0, NULL, Lookup_timeout );
-	printf("Membership id is ( %d, %d)\n", Membership_id.proc_id, Membership_id.time );
-	printf("%c", Conf_print( &Membership ) );
 
+	Alarm( PRINT, "Membership id is ( %d, %d)\n", Membership_id.proc_id, Membership_id.time );
+	Conf_print( &Membership );
+	Alarm( PRINT, "\n" );
+
         Shift_to_op();
 }
 

Modified: trunk/daemon/membership.h
===================================================================
--- trunk/daemon/membership.h	2014-01-21 03:19:09 UTC (rev 662)
+++ trunk/daemon/membership.h	2014-01-21 03:49:35 UTC (rev 663)
@@ -68,4 +68,6 @@
 void		Memb_regular();
 void	        Memb_print_form_token( sys_scatter *scat );
 
+extern bool     Memb_Just_Installed;
+
 #endif /* INC_MEMBERSHIP */

Modified: trunk/daemon/network.c
===================================================================
--- trunk/daemon/network.c	2014-01-21 03:19:09 UTC (rev 662)
+++ trunk/daemon/network.c	2014-01-21 03:49:35 UTC (rev 663)
@@ -166,9 +166,10 @@
 	Net_membership = memb;
 	my_seg = Net_membership.segments[My.seg_index];
 	my_index_in_seg = Conf_id_in_seg( &my_seg, My.id );
-	if( my_index_in_seg < 0 )
-		Alarm( EXIT,"Net_set_membership: I am not in membership %c",
-			Conf_print( &Net_membership ) );
+	if( my_index_in_seg < 0 ) {
+		Conf_print( &Net_membership );
+		Alarm( EXIT, "Net_set_membership: I am not in membership\n" );
+	}
 	else if( my_index_in_seg == 0) {
 		Segment_leader = 1;
 		Alarm( NETWORK,"Net_set_membership: I am a Segment leader\n");
@@ -479,11 +480,9 @@
         token_ptr->conf_hash = Cn->hash_code;
 	token_ptr->transmiter_id = My.id;
 
-	Alarmp( SPLOG_INFO, NETWORK, 
-		"Net_send_token: type = 0x%08X; transmitter_id = 0x%08X; seq = %d; proc_id = 0x%08X\n"
-		"\taru = %d; aru_last_id = 0x%08X; Token_address = 0x%08X\n", 
-		token_ptr->type, token_ptr->transmiter_id, token_ptr->seq, token_ptr->proc_id, 
-		token_ptr->aru, token_ptr->aru_last_id, Token_address );
+	Alarmp( SPLOG_INFO, PROTOCOL, 
+		"Net_send_token: type = 0x%08X; transmitter_id = 0x%08X; seq = %d; proc_id = 0x%08X; aru = %d; aru_last_id = 0x%08X; Token_address = 0x%08X\n", 
+		token_ptr->type, token_ptr->transmiter_id, token_ptr->seq, token_ptr->proc_id, token_ptr->aru, token_ptr->aru_last_id, Token_address );
 
         if ( token_ptr->rtr_len > (MAX_PACKET_SIZE - sizeof(token_header) ) )
         {

Modified: trunk/daemon/protocol.c
===================================================================
--- trunk/daemon/protocol.c	2014-01-21 03:19:09 UTC (rev 662)
+++ trunk/daemon/protocol.c	2014-01-21 03:49:35 UTC (rev 663)
@@ -74,8 +74,6 @@
 
 static  int32           Prev_proc_id; /* predecessor in ring (i.e. process that sends me the token) */
 static  bool            Token_has_priority; /* true when token channels have higher priority than bcast channels */
-
-static	int32		Set_aru;
 static	int		Token_counter;
 
 /* Used ONLY in Prot_handle_bcast, inited in Prot_init */
@@ -92,10 +90,6 @@
 
 /* Used to indicate a need to reload configuration at end of current membership */
 static  bool            Prot_Need_Conf_Reload  = FALSE;
-
-/* Used to indicate if we just installed a reg memb due to last token we sent */
-static  bool            Just_Installed = FALSE;
-
 static	down_queue	Protocol_down_queue[2]; /* only used in spread3 */
 
 static	void	Prot_handle_bcast(int fd, int dmy, void *dmy_ptr);
@@ -146,7 +140,6 @@
             Highest_fifo_seq     = INITIAL_SEQUENCE_NEAR_WRAP;
             My_aru	    	 = INITIAL_SEQUENCE_NEAR_WRAP;
             Aru		         = INITIAL_SEQUENCE_NEAR_WRAP;
-            Set_aru		 = INITIAL_SEQUENCE_NEAR_WRAP -1;
             Last_discarded	 = INITIAL_SEQUENCE_NEAR_WRAP;
             Last_delivered	 = INITIAL_SEQUENCE_NEAR_WRAP;
         } else {
@@ -154,7 +147,6 @@
             Highest_fifo_seq     = 0;
             My_aru	    	 = 0;
             Aru		         = 0;
-            Set_aru		 = -1;
             Last_discarded	 = 0;
             Last_delivered	 = 0;
         }
@@ -524,7 +516,7 @@
         }
 
         Alarmp( SPLOG_INFO, PROTOCOL, 
-	       "Prot_handle_token: type = 0x%08X; transmitter = 0x%08X; seq = %d; proc_id = 0x%08X; aru = %d; aru_last_id = 0x%08X;\n", 
+	       "\nProt_handle_token: type = 0x%08X; transmitter = 0x%08X; seq = %d; proc_id = 0x%08X; aru = %d; aru_last_id = 0x%08X;\n", 
 	       Token->type, Token->transmiter_id, Token->seq, Token->proc_id, Token->aru, Token->aru_last_id );
 
 	if( ret != sizeof(token_header) + Token->rtr_len )
@@ -554,10 +546,11 @@
 		    /* received double token - swallow it */
 		    goto END; 
 
-		} else if (Memb_state() == OP && Just_Installed) {
-		    Just_Installed  = FALSE;
-		    Last_token->aru = 0;      /* wipe out EVS aru on last token due to transitioning from EVS -> OP */
+		} else if (Memb_Just_Installed) {
+		    Memb_Just_Installed  = FALSE;
 		    /* NOTE: we do this now rather than just when we installed to allow proper token retransmissions */
+		    Last_token->aru = 0;  /* wipe out EVS aru on last token due to transitioning from EVS -> OP */
+		    Alarmp(SPLOG_INFO, PROTOCOL, "Prot_handle_token: leader just installed; setting Last_token->aru = 0!\n");
 		}
 
 	}else{
@@ -587,10 +580,11 @@
 
 		} else {
 
-			if (Memb_state() == OP && Just_Installed) {
-			  Just_Installed  = FALSE;
-			  Last_token->aru = 0;      /* wipe out EVS aru on last token due to transitioning from EVS -> OP */
+			if (Memb_Just_Installed) {
+			  Memb_Just_Installed  = FALSE;
 			  /* NOTE: we do this now rather than just when we installed to allow proper token retransmissions */
+			  Last_token->aru = 0;  /* wipe out EVS aru on last token due to transitioning from EVS -> OP */
+			  Alarmp(SPLOG_INFO, PROTOCOL, "Prot_handle_token: not-leader just installed; setting Last_token->aru = 0!\n");
 			}
 
                         if ( Get_retrans(Token->type) > 0 ) {
@@ -711,21 +705,18 @@
 	Token->rtr_len = new_ptr;
 	New_token.elements[1].len = new_ptr;
 
-	/* Calculating Token->aru and Set_aru */
-	if( ( Token->aru == Set_aru    ) ||
-            ( Token->aru_last_id == My.id ) ||
-	    ( Token->aru == Token->seq && Memb_state() != EVS ) )  /* NOTE: Token->seq is meaningless in EVS */
-	{
-		Token->aru = My_aru;
-                Token->aru_last_id = My.id;
-		if( My_aru < Highest_seq ) Set_aru = My_aru;
-		else Set_aru = -1;
-	}else if( Token->aru > My_aru ) {
-		Token->aru = My_aru;
-                Token->aru_last_id = My.id;
-		Set_aru    = My_aru;
-	}else{
-		Set_aru    = -1;
+	/* Calculating Token->aru and Token->aru_last_id */
+
+	Alarmp( SPLOG_INFO, PROTOCOL, "Prot_handle_token: calculating Token->aru and Token->aru_last_id: Token->aru = %d, My_aru = %d, Token->aru_last_id = 0x%08X, My.id = 0x%08X, Token->seq = %d, Memb_state() = %d\n",
+		Token->aru, My_aru, Token->aru_last_id, My.id, Token->seq, Memb_state() );
+
+	if ( Token->aru > My_aru         ||                           /* this daemon is missing packets: lower aru to My_aru */
+	     Token->aru_last_id == My.id ||                           /* this daemon last updated aru: try raising to My_aru */
+	     ( Token->aru == Token->seq && Memb_state() != EVS ) ) {  /* everyone has everything so far: try raising to My_aru; NOTE: Token->seq is meaningless in EVS */
+
+		Token->aru         = My_aru;
+		Token->aru_last_id = My.id;
+		Alarmp( SPLOG_INFO, PROTOCOL, "Prot_handle_token: setting Token->aru = %d, Token->aru_last_id = 0x%08X\n", Token->aru, Token->aru_last_id );
 	}
 	
 	Token->proc_id = My.id;
@@ -770,12 +761,26 @@
 
 	/* calculating Aru */
 	if( Token->aru > Last_token->aru ) {
-	        /*Alarmp( SPLOG_INFO, PROTOCOL, "Prot_handle_token: updating Aru from Last_token; Aru %d -> %d\n", Aru, Last_token->aru );*/
+
+		if ( Last_token->aru >= Aru ) {
+		        Alarmp( SPLOG_INFO, PROTOCOL, "Prot_handle_token: updating Aru from Last_token: Aru %d -> %d; (Token->aru = %d)\n", Aru, Last_token->aru, Token->aru );
+
+		} else {
+			Alarmp( SPLOG_FATAL, PROTOCOL, "Prot_handle_token: illegally lowering Aru from Last_token: Aru %d -> %d; (Token->aru = %d)\n", Aru, Last_token->aru, Token->aru );
+		}
+
 		Aru = Last_token->aru;
 	} else {
-	        /*Alarmp( SPLOG_INFO, PROTOCOL, "Prot_handle_token: updating Aru from Token; Aru %d -> %d\n", Aru, Token->aru );*/
+
+		if ( Token->aru >= Aru ) {
+		        Alarmp( SPLOG_INFO, PROTOCOL, "Prot_handle_token: updating Aru from Token: Aru %d -> %d; (Last_token->aru = %d)\n", Aru, Token->aru, Last_token->aru);
+		} else {
+		        Alarmp( SPLOG_FATAL, PROTOCOL, "Prot_handle_token: illegally lowering Aru from Token: Aru %d -> %d; (Last_token->aru = %d)\n", Aru, Token->aru, Last_token->aru);			
+		}
+
 		Aru = Token->aru;
 	}
+
 	if( Highest_seq == Aru ) Token_counter++;
 	else Token_counter = 0;
 
@@ -821,7 +826,7 @@
 	GlobalStatus.token_rounds = Token_rounds;
 
  END:
-	/*Alarmp( SPLOG_INFO, PROTOCOL, "Prot_handle_token: LEAVING!\n" )*/;
+	Alarmp( SPLOG_INFO, PROTOCOL, "Prot_handle_token: LEAVING!\n\n" );
 }
 
 /* Provide boolean result of whether the membership system needs to initiate a configuration reload
@@ -1626,7 +1631,6 @@
 
 	/* calculate and deliver regular membership */
 	Memb_regular();
-	Just_Installed = TRUE;
 
 	Log_membership();
 	reg_memb_id = Memb_id();
@@ -1653,7 +1657,6 @@
             Highest_fifo_seq     = INITIAL_SEQUENCE_NEAR_WRAP;
             My_aru	    	 = INITIAL_SEQUENCE_NEAR_WRAP;
             Aru		         = INITIAL_SEQUENCE_NEAR_WRAP;
-            Set_aru		 = INITIAL_SEQUENCE_NEAR_WRAP - 1;
             Last_discarded	 = INITIAL_SEQUENCE_NEAR_WRAP;
             Last_delivered	 = INITIAL_SEQUENCE_NEAR_WRAP;
         } else {
@@ -1661,12 +1664,11 @@
             Highest_fifo_seq     = 0;
             My_aru	    	 = 0;
             Aru		         = 0;
-            Set_aru		 = -1;
             Last_discarded	 = 0;
             Last_delivered	 = 0;
         }
 
-	/*Alarmp( SPLOG_INFO, PROTOCOL, "Discard_packets: Updated Aru to %d for next membership\n", Aru );*/
+	Alarmp( SPLOG_INFO, PROTOCOL, "Discard_packets: Updated Aru to %d for next membership\n", Aru );
 
 	GlobalStatus.my_aru	 = My_aru;
 	Token_counter 	= 0;