rejectedSessions = 0 ;
sessionReplaceCounter = 0 ;
counterNoStateTransfered = 0 ;
- maxActive = getActiveSessions() ;
+ setMaxActive(getActiveSessions());
sessionCounter = getActiveSessions() ;
counterReceive_EVT_ALL_SESSION_DATA = 0;
counterReceive_EVT_GET_ALL_SESSIONS = 0;
// Number of sessions created by this manager
protected int sessionCounter=0;
- protected int maxActive=0;
+ protected volatile int maxActive=0;
+
+ private final Object maxActiveUpdateLock = new Object();
// number of duplicated session ids - anything >0 means we have problems
protected int duplicates=0;
sessions.put(session.getIdInternal(), session);
int size = sessions.size();
if( size > maxActive ) {
- maxActive = size;
+ synchronized(maxActiveUpdateLock) {
+ if( size > maxActive ) {
+ maxActive = size;
+ }
+ }
}
}
public void setMaxActive(int maxActive) {
- this.maxActive = maxActive;
+ synchronized (maxActiveUpdateLock) {
+ this.maxActive = maxActive;
+ }
}