Hello,
The current trunk limit the value of phi_convict_threshold from 5 to 16
in DatabaseDescriptor.java.
And phi value is calculated in FailureDetector.java as

  PHI_FACTOR x time_since_last_gossip / mean_heartbeat_interval

And the PHI_FACTOR is a predefined value:
PHI_FACTOR = 1 / Log(10) =~ 0.43

So if you use default phi_convict_threshold = 8, it means FailureDetector
wait for 8 / 0.43 = 18.6 times of "missing heartbeats" before it detects
node failure.

Even if you set the minimum value 5, it needs 5 / 0.43 = 11.6 heartbeat
miss for failure detection.
I think it is a bit much for cassandra ring which build on reliable network
in single datacenter.
If DatabaseDescriptor.java will accepts smaller phi_convict_threshold,
we will be able to configure cassandra to detect failure rapidly ( or
shoot my foot ).
Anyway, I can't find any reason to limit minimum value of phi_convict_threshold
to 5.

maki

Reply via email to