[Spread-cvs] commit: r618 - branches/spread_4_2_debug/daemon

jschultz at spread.org jschultz at spread.org
Fri Nov 8 16:28:31 EST 2013


Author: jschultz
Date: 2013-11-08 16:28:31 -0500 (Fri, 08 Nov 2013)
New Revision: 618

Modified:
   branches/spread_4_2_debug/daemon/membership.c
   branches/spread_4_2_debug/daemon/net_types.h
   branches/spread_4_2_debug/daemon/protocol.c
Log:
Additional printing plus potential bug fix


Modified: branches/spread_4_2_debug/daemon/membership.c
===================================================================
--- branches/spread_4_2_debug/daemon/membership.c	2013-11-07 19:09:37 UTC (rev 617)
+++ branches/spread_4_2_debug/daemon/membership.c	2013-11-08 21:28:31 UTC (rev 618)
@@ -665,13 +665,13 @@
     switch( State )
     {
 	case OP:
-	    Alarm( MEMB, "Handle_form1 in OP\n");
-		if( Conf_leader( &Membership ) == My.id ) /* do nothing */;
-		else Fill_form1( scat );
+	    
+	        if( Conf_leader( &Membership ) == My.id ) { Alarm( MEMB, "Handle_form1 in OP (leader swallow)\n");
+		} else { Alarm( MEMB, "Handle_form1 in OP\n"); Fill_form1( scat ); }
 		break;
 
 	case SEG:
-	    Alarm( MEMB, "Handle_form1 in SEG\n");
+	    Alarm( MEMB, "Handle_form1 in SEG (swallow)\n");
 		/* swallow this token */
 		break;
 
@@ -686,12 +686,12 @@
 		break;
 
 	case FORM:
-	    Alarm( MEMB, "Handle_form1 in FORM\n");
+	    Alarm( MEMB, "Handle_form1 in FORM (swallow)\n");
 		/* swallow this token */
 		break;
 
 	case EVS:
-	    Alarm( MEMB, "Handle_form1 in EVS\n");
+	    Alarm( MEMB, "Handle_form1 in EVS (swallow)\n");
 		/* swallow this token */
 		break;
 
@@ -703,22 +703,22 @@
     switch( State )
     {
 	case OP:
-		Alarm( MEMB, "Handle_form2 in OP\n");
+		Alarm( MEMB, "Handle_form2 in OP (swallow)\n");
 		/* swallow this token */
 		break;
 
 	case SEG:
-		Alarm( MEMB, "Handle_form2 in SEG\n");
+		Alarm( MEMB, "Handle_form2 in SEG (swalow)\n");
 		/* swallow this token */
 		break;
 
 	case REPRESENTED:
-		Alarm( MEMB, "Handle_form2 in REPRESENTED\n");
+		Alarm( MEMB, "Handle_form2 in REPRESENTED (swallow)\n");
 		/* swallow this token */
 		break;
 
 	case GATHER:
-		Alarm( MEMB, "Handle_form2 in GATHER\n");
+		Alarm( MEMB, "Handle_form2 in GATHER (swallow)\n");
 		/* swallow this token */
 		break;
 
@@ -728,7 +728,7 @@
 		break;
 
 	case EVS:
-		Alarm( MEMB, "Handle_form2 in EVS\n");
+		Alarm( MEMB, "Handle_form2 in EVS (swallow)\n");
 		/* swallow this token */
 		break;
     }
@@ -1474,6 +1474,8 @@
         int             num_to_copy;
         members_info    valid_members;
 	
+	Memb_print_form_token(scat);
+
 	num_bytes  = 0;
 
 	form_token = (token_header *)scat->elements[0].buf;
@@ -1736,9 +1738,7 @@
 		if( ! Packets[pack_entry].exist )
 		{
 			*new_holes_procs_ptr	= *my_holes_procs_ptr;
-			Alarm( MEMB ,
-		"INSERT HOLE 3 IS %d My_aru is %d, Highest_seq is %d\n",
-				*new_holes_procs_ptr,My_aru, Highest_seq);
+			Alarm( MEMB, "INSERT HOLE 3 IS %d My_aru is %d, Highest_seq is %d\n", *new_holes_procs_ptr,My_aru, Highest_seq);
 			new_holes_procs_ptr++;
 			num_bytes	+= sizeof(int32);
 			new_rg_info->num_holes++;
@@ -1819,16 +1819,14 @@
 	if( m_info->num_pending > 0 )
 	{
 		/* 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 );
+		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 );
+		Net_ucast_token( r_info->reps[r_info->rep_index].proc_id, &send_scat );
+
 	}else{
 		/* prepare form2 token */
 		Sort_members( m_info );
@@ -1873,6 +1871,8 @@
 	int		ret;
 	int		i;
         int32           memb_time = 0;
+
+	Memb_print_form_token(scat);
 	
 	num_bytes  = 0;
 
@@ -2030,7 +2030,7 @@
 		/* build first regular token */
 		send_scat.num_elements = 1;
 
-		form_token->type = 0;
+		form_token->type = 0; /*EVS_TYPE;*/
 		form_token->seq = 0;
 		form_token->aru = Last_seq;
 		form_token->flow_control = 0;
@@ -2043,7 +2043,7 @@
 	Token_alive = 1;
 	E_queue( Memb_token_loss, 0, NULL, Token_timeout );
     	
-	Last_token->type = 0;
+	Last_token->type = 0; /*EVS_TYPE;*/
 	Last_token->seq  = 0;
 	Last_token->aru  = 0;
 

Modified: branches/spread_4_2_debug/daemon/net_types.h
===================================================================
--- branches/spread_4_2_debug/daemon/net_types.h	2013-11-07 19:09:37 UTC (rev 617)
+++ branches/spread_4_2_debug/daemon/net_types.h	2013-11-08 21:28:31 UTC (rev 618)
@@ -60,6 +60,7 @@
 #define		FORM1_TYPE		0x00001000
 #define		FORM2_TYPE		0x00002000
 #define		FORM_TYPE		0x00003000
+/*#define         EVS_TYPE		0x00004000*/
 
 #define		ARQ_TYPE		0x000f0000
 #define	        RETRANS_TYPE		0x00f00000
@@ -92,6 +93,7 @@
 #define		Is_form( type )		( type &  FORM_TYPE	  )
 #define		Is_form1( type )	( type &  FORM1_TYPE	  )
 #define		Is_form2( type )	( type &  FORM2_TYPE	  )
+/*#define         Is_evs( type )          ( (type) & EVS_TYPE )*/
 
 #define		Get_arq( type )		( (type &  ARQ_TYPE) >> 16)
 #define		Set_arq( type, val )	( (type & ~ARQ_TYPE) | ((val << 16)&ARQ_TYPE) )

Modified: branches/spread_4_2_debug/daemon/protocol.c
===================================================================
--- branches/spread_4_2_debug/daemon/protocol.c	2013-11-07 19:09:37 UTC (rev 617)
+++ branches/spread_4_2_debug/daemon/protocol.c	2013-11-08 21:28:31 UTC (rev 618)
@@ -73,6 +73,8 @@
 /* Used to indicate a need to reload configuration at end of current membership */
 static  bool            Prot_Need_Conf_Reload  = FALSE;
 
+static  bool            Just_Installed = FALSE;
+
 /* ### Pack: 1 line */
 static	packet_info	Buffered_packets[ARCH_SCATTER_SIZE];
 
@@ -465,7 +467,7 @@
 	if ( r2 == 0 ) return; */
 
         Alarm( PROTOCOL, 
-	       "Prot_handle_token: received token: type = 0x%08X; transmitter = 0x%08X; seq = %d; proc_id = 0x%08X;\n"
+	       "Prot_handle_token: ENTERED: received token: type = 0x%08X; transmitter = 0x%08X; seq = %d; proc_id = 0x%08X;\n"
 	       "\taru = %d; aru_last_id = 0x%08X;\n", 
 	       Token->type, Token->transmiter_id, Token->seq, Token->proc_id, Token->aru, Token->aru_last_id );
 
@@ -474,13 +476,13 @@
 	{
                 Alarm(PROTOCOL, "Prot_handle_token: it is a Form Token.\n");
                 Memb_handle_token( &New_token );
-		return;
+		goto END;
 	}
 
 	/* The Veto property for tokens - swallow this token */
 	if( ! Memb_token_alive() ) {
                 Alarm(PROTOCOL, "Prot_handle_token: Veto Property. Memb not alive.\n");
-		return;
+		goto END;
         }
 
 	if( ret != sizeof(token_header) + Token->rtr_len )
@@ -488,7 +490,7 @@
 		Alarm( PRINT, 
 		    "Prot_handle_token: recv token len is %d, should be %d\n",
 		    ret,sizeof(token_header) + Token->rtr_len );
-		return;
+		goto END;
 	}
 
 	if( !Same_endian( Token->type ) ) 
@@ -499,7 +501,7 @@
         {
             Alarm( PRINT, "Prot_handle_token: Token Sequence number (%ld) approaching 2^31 so trigger membership to reset it.\n", Token->seq);
             /* return swallows token and will break ring and trigger membership */
-            return;
+            goto END;
         }
 
 	if( Conf_leader( Memb_active_ptr() ) == My.id )
@@ -510,8 +512,13 @@
 			"Prot_handle_token: leader swallowing token %d %d %d\n", 
 			 Get_arq(Token->type),Get_retrans(Token->type),Get_arq(Last_token->type) );
 		    /* received double token - swallow it */
-		    return; 
+		    goto END; 
+
+		} else if (Just_Installed) {
+		  Just_Installed = FALSE;
+		  Last_token->aru = 0;
 		}
+
 	}else{
 		if( Get_arq(Token->type) == Get_arq(Last_token->type) )
 		{
@@ -529,20 +536,26 @@
 			    "Prot_handle_token: not leader, swallow same token %d %d\n",
 	   			Get_arq(Token->type), Get_retrans(Token->type) );
 		    }
-		    return;
+		    goto END;
 
 		} else if ( Get_arq(Token->type) != ( ( Get_arq( Last_token->type ) + 1 ) % 0x10 ) ) {
 		  Alarm( PROTOCOL, 
 			 "Prot_handle_token: not leader, swallowing very outdated token: ARQ(%d) RETRANS(%d) vs. Last ARQ(%d)\n",
 			 Get_arq(Token->type), Get_retrans(Token->type), Get_arq(Last_token->type) );
-		  return;
+		  goto END;
 
 		} else {
                         if ( Get_retrans(Token->type) > 0 ) {
                                 GlobalStatus.token_hurry++;
                         }
+
+			if (Just_Installed) {
+			  Just_Installed = FALSE;
+			  Last_token->aru = 0;
+			}
                 }
 	}
+
 	if( Highest_seq < Token->seq ) Highest_seq = Token->seq;
 		
 	/* Handle retransmissions */
@@ -663,7 +676,6 @@
 
 	E_queue( Memb_token_loss, 0, NULL, Token_timeout );
 
-
 	/* calculating Aru */
 	if( Token->aru > Last_token->aru ) {
 		Alarm(MEMB, "Prot_handle_token: updating Aru from Last_token; Aru %d -> %d\n", Aru, Last_token->aru);
@@ -715,6 +727,9 @@
 	GlobalStatus.highest_seq = Highest_seq;
 	GlobalStatus.aru = Aru;
 	GlobalStatus.token_rounds = Token_rounds;
+
+ END:
+	Alarm( PROTOCOL, "Prot_handle_token: LEAVING!\n");
 }
 
 /* Provide boolean result of whether the membership system needs to initiate a configuration reload
@@ -858,33 +873,28 @@
                         old_ptr += sizeof(int32);
                         pack_entry = *req_seq & PACKET_MASK;
                         if( *req_seq < Aru ) 
-                                Alarm( EXIT, 
-                "Answer_retrans: retrans of %d requested while Aru is %d\n",
-                                *req_seq,Aru );
+                                Alarm( EXIT, "Answer_retrans: retrans of %d requested while Aru is %d\n", *req_seq, Aru );
 
                         if( Packets[pack_entry].exist )
                         {
                                 pack_ptr = Packets[pack_entry].head;
-                                Send_pack.elements[0].buf = 
-                                    (char *)Packets[pack_entry].head;
-                                Send_pack.elements[1].buf = 
-                                    (char *)Packets[pack_entry].body;
-                                Send_pack.elements[1].len = 
-                                    pack_ptr->data_len; 
+                                Send_pack.elements[0].buf = (char *)Packets[pack_entry].head;
+                                Send_pack.elements[1].buf = (char *)Packets[pack_entry].body;
+                                Send_pack.elements[1].len = pack_ptr->data_len; 
 
                                 if( ring_rtr_ptr->proc_id != -1 )
                                 {
                                     ret = Net_ucast ( ring_rtr_ptr->proc_id, &Send_pack );
 				    GlobalStatus.u_retrans++;
 
-                                    Alarm( PROTOCOL, 
-        "Answer_retrans: retransmit to proc %d\n", ring_rtr_ptr->proc_id );
+                                    Alarm( PROTOCOL, "Answer_retrans: retransmit %d to proc %d\n", *req_seq, ring_rtr_ptr->proc_id );
+
                                 }else if( ring_rtr_ptr->seg_index != -1 ) {
                                     ret = Net_scast ( ring_rtr_ptr->seg_index, &Send_pack );
 				    GlobalStatus.s_retrans++;
 
-                                    Alarm( PROTOCOL, 
-        "Answer_retrans: retransmit to seg %d\n", ring_rtr_ptr->seg_index );
+                                    Alarm( PROTOCOL, "Answer_retrans: retransmit %d to seg %d\n", *req_seq, ring_rtr_ptr->seg_index );
+
                                 }else{
 #if 1
                                     ret = Net_queue_bcast ( &Send_pack );
@@ -893,8 +903,7 @@
 #endif
 				    if( ret > 0 ) GlobalStatus.b_retrans++;
 
-                                    Alarm( PROTOCOL, 
-        "Answer_retrans: retransmit to all\n");
+                                    Alarm( PROTOCOL, "Answer_retrans: retransmit %d to all\n", *req_seq);
                                 }
 				if( ret > 0 )
 				{
@@ -1320,6 +1329,8 @@
             Last_delivered	 = 0;
         }
 
+	Just_Installed = TRUE;
+
 	Alarm(MEMB, "Discard_packets: Updated Aru to %d for next membership\n", Aru);
 
 	GlobalStatus.my_aru	 = My_aru;




More information about the Spread-cvs mailing list