There are three patches here. The main fix is in Monitor-Phi-JMX.patch. This fully resolves the reported issue.
While inspecting this code, I noticed a small unlikely race condition. If two phi values come in at the same time as the first one for a host, one could be lost due to the way the values are being added to the Hashtable. The second patch resolves that window, by switching to a ConcurrentHashMap and using putIfAbsent to atomically check for a prior value.
I doubt this could actually happen in the wild but it's still good defensive coding. Also, it removes Hashtable which is always synchronized.
The third patch will start generating debug log messages when PHI starts getting close. It's a great way to see that phi_convict_threshold might be too low. It's not WARN or even INFO because this could generate a lot of logs, but arguably it could be. If someone has trouble with nodes going offline, they can turn up the debugging levels and see that phi_convict_threshold is the culprit.
There is also some other code cleanup in the Phi-Log-Debug-When-Close patch.