[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