I've just seen a group go wrong and I think that the first sign of trouble was this line of trace:
... showing a member trying to forward to a null coordinator.
This comes shortly after a new view was installed so SEQUENCER should have seen the VIEW_CHANGE. I think that the suspect code is in handleViewChange()
Surely the intention isn't to call setCoord only if the coodinator hasn't changed?
I see that setCoord will get called in due course by the flusher. But perhaps it would be safer to do something like:
... and possibly the call to setCoord in flush() can then be removed?