-
Bug
-
Resolution: Done
-
Major
-
JBossAS-4.0.3 SP1, JBossAS-4.0.4.GA, JBossAS-4.0.5.GA, JBossAS-4.2.0.CR1
-
None
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):
cluster=server1, server2
master=server1
STEP2 (unplug server1 from the network):
cluster=server2
master=server2
server2 will now restore the queue from the database
BUT! server1 has the view
cluster=server1
master=server1
STEP3 (plug server1 back into the network)
cluster=server1, server2
master=server1
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.