The HASingletonController doesn't understand the "split brain" problem.
Take for example a JBossMQ destination (queue) which needs to be "restored" from the database
when a new singleton is elected.
The scenario goes as follows:
STEP1 (original state):
STEP2 (unplug server1 from the network):
server2 will now restore the queue from the database
BUT! server1 has the view
STEP3 (plug server1 back into the network)
We are back to the original state, but since server1 thinks it never left the cluster,
it doesn't restore the changes (from the database) that server2 made to the queue between STEP2 and STEP3.
This is because it doesn't restart the HASingleton on server1.
There needs to be some extra processing in the "merge" when two masters agree to form a cluster
that ensures that whoever they elect as the new master gets its HASingleton(s) restarted.
Otherwise, it won't have the up-to-date state from the other master.