I encountered the same problem in Openfire 4.2.3 with Hazelcast 2.3. Make sure that your external component is not connected to Openfire until clustering is completely initialized.
When Openfire is started, hazelcast plugin is not loaded until all internal components are started. If any external component connects to any Openfire node before clustering is initialized, the routing table for the external component will have an “empty” nodeID (namely DEFAULT_NODE_ID) which cannot be removed until Openfire is restarted. When the external component loses its connection, the ComponentManager is unable to remove the component session from Hazelcast cache because of this “empty” nodeID entry. If the external component tries to reconnect, it will get a “conflict” error.
I am checking with the community if there is a fix.
Update: if you are interested in a fix, I posted it to