|
|
@@ -502,6 +502,7 @@ struct totemsrp_instance {
|
|
|
struct memb_commit_token *commit_token;
|
|
|
|
|
|
totemsrp_stats_t stats;
|
|
|
+
|
|
|
void * token_recv_event_handle;
|
|
|
void * token_sent_event_handle;
|
|
|
char commit_token_storage[9000];
|
|
|
@@ -1789,6 +1790,8 @@ static void memb_state_operational_enter (struct totemsrp_instance *instance)
|
|
|
instance->memb_state = MEMB_STATE_OPERATIONAL;
|
|
|
|
|
|
instance->stats.operational_entered++;
|
|
|
+ instance->stats.continuous_gather = 0;
|
|
|
+
|
|
|
instance->my_received_flg = 1;
|
|
|
|
|
|
reset_pause_timeout (instance);
|
|
|
@@ -1853,6 +1856,15 @@ static void memb_state_gather_enter (
|
|
|
|
|
|
instance->memb_state = MEMB_STATE_GATHER;
|
|
|
instance->stats.gather_entered++;
|
|
|
+ instance->stats.continuous_gather++;
|
|
|
+
|
|
|
+ if (instance->stats.continuous_gather > MAX_NO_CONT_GATHER) {
|
|
|
+ log_printf (instance->totemsrp_log_level_warning,
|
|
|
+ "Totem is unable to form a cluster because of an "
|
|
|
+ "operating system or network fault. The most common "
|
|
|
+ "cause of this message is that the local firewall is "
|
|
|
+ "configured improperly.\n");
|
|
|
+ }
|
|
|
|
|
|
return;
|
|
|
}
|
|
|
@@ -1897,6 +1909,7 @@ static void memb_state_commit_enter (
|
|
|
reset_token_timeout (instance); // REVIEWED
|
|
|
|
|
|
instance->stats.commit_entered++;
|
|
|
+ instance->stats.continuous_gather = 0;
|
|
|
|
|
|
/*
|
|
|
* reset all flow control variables since we are starting a new ring
|
|
|
@@ -2093,6 +2106,8 @@ originated:
|
|
|
|
|
|
instance->memb_state = MEMB_STATE_RECOVERY;
|
|
|
instance->stats.recovery_entered++;
|
|
|
+ instance->stats.continuous_gather = 0;
|
|
|
+
|
|
|
return;
|
|
|
}
|
|
|
|