If BackupManager is used, when a primary node is switched, DeltaSession#isPrimarySession is not changed to true. Non-primary node changes into a primary node when a primary node is stopped or we get a non-primary session. If a primary node is stopped, a primary node is switched. In AbstractReplicatedMap, when a primary node is switched, MapOwner(BackupManager)#objectMadePrimay is called. However, isPrimarySession does not change to true in this method. =====BackupManager#objectMadePrimay===== public void objectMadePrimay(Object key, Object value) { if (value!=null && value instanceof DeltaSession) { DeltaSession session = (DeltaSession)value; synchronized (session) { session.access(); session.endAccess(); } } } ===== If we get a non-primary session, a primary node is switched. However, isPrimarySession does not change to true. It is only a change of primary node. I made a patch. It contains the following. isPrimarySession is set to true in BackupManager#objectMadePrimay. When get() is called in non-primary node, MapOwner#objectMadePrimay is called. Best regards.
Created attachment 26024 [details] I made a patch.
Fixed in trunk and proposed for 6.0.x
This fix applied to 6.0, will be in 6.0.30 onwards.