Openbravo Issue Tracking System - Openbravo ERP
View Issue Details
0037893Openbravo ERPA. Platformpublic2018-02-13 10:162018-02-22 18:19
AugustoMauch 
alostale 
immediateminorhave not tried
closedfixed 
5
 
3.0PR18Q2 
AugustoMauch
Core
Production - Confirmed Stable
2016-04-26
3.0PR17Q3
https://code.openbravo.com/erp/devel/pi/rev/dafb9b081971 [^]
No
0037893: ConcurrentModificationException when working with SessionListener.activeHttpSessions
The following exception has been found in a customer log:

b45df575 2018-02-12 16:53:13,566 [ajp-bio-127.0.0.1-8009-exec-54] ERROR org.openbravo.erpCommon.security.SessionListener - Error getting active session from context
java.util.ConcurrentModificationException
        at java.util.HashMap$HashIterator.nextEntry(HashMap.java:923)
        at java.util.HashMap$KeyIterator.next(HashMap.java:957)
        at org.openbravo.erpCommon.security.SessionListener.getActiveSession(SessionListener.java:178)
        at org.openbravo.erpCommon.obps.ActivationKey.shouldDeactivateSession(ActivationKey.java:1175)
        at org.openbravo.erpCommon.obps.ActivationKey.deactivateTimeOutSessions(ActivationKey.java:1131)
        at org.openbravo.erpCommon.obps.ActivationKey.checkOPSLimitations(ActivationKey.java:976)
        at org.openbravo.erpCommon.obps.ActivationKey.checkOPSLimitations(ActivationKey.java:923)

The access to the SessionListener.activeHttpSessions Set is not being properly managed, as it is possible to add/remove elements from it while it is being iterated.
-
No tags attached.
related to defect 0037899 closed alostale Session in POS can prevent an ERP session (which counts for concurrent user limit) from being closed 
depends on backport 00378943.0PR18Q1 closed alostale ConcurrentModificationException when working with SessionListener.activeHttpSessions 
depends on backport 00378953.0PR17Q4.1 closed alostale ConcurrentModificationException when working with SessionListener.activeHttpSessions 
caused by feature request 0032821 closed platform Mobile Core. Reinforce CU Licensing 
has duplicate defect 0037892 closed platform Expired sessions are not cleared out after reaching the limit of concurrent users 
blocks design defect 0034664 acknowledged Triage Platform Base multi thread unsafeties 
Issue History
2018-02-13 10:16AugustoMauchNew Issue
2018-02-13 10:16AugustoMauchAssigned To => platform
2018-02-13 10:16AugustoMauchModules => Core
2018-02-13 10:16AugustoMauchTriggers an Emergency Pack => No
2018-02-13 10:20alostaleRegression level => Production - Confirmed Stable
2018-02-13 10:20alostaleRegression date => 2016-04-26
2018-02-13 10:20alostaleRegression introduced in release => 3.0PR17Q3
2018-02-13 10:20alostaleRegression introduced by commit => https://code.openbravo.com/erp/devel/pi/rev/dafb9b081971 [^]
2018-02-13 10:20alostalePrioritynormal => immediate
2018-02-13 10:20alostaleRelationship addeddepends on 0032821
2018-02-13 10:21alostaleRelationship replacedcaused by 0032821
2018-02-13 10:22alostaleRelationship addedblocks 0034664
2018-02-13 10:22alostaleAssigned Toplatform => alostale
2018-02-13 10:23alostaleStatusnew => scheduled
2018-02-13 10:23alostaleStatusscheduled => feedback
2018-02-13 10:25alostaleStatusfeedback => scheduled
2018-02-13 11:11plujanRelationship addedhas duplicate 0037892
2018-02-13 11:26AugustoMauchRelationship addedrelated to 0037899
2018-02-13 12:57hgbotCheckin
2018-02-13 12:57hgbotNote Added: 0102350
2018-02-13 12:57hgbotStatusscheduled => resolved
2018-02-13 12:57hgbotResolutionopen => fixed
2018-02-13 12:57hgbotFixed in SCM revision => http://code.openbravo.com/erp/devel/pi/rev/d126554d216bef98a3bea0d94dee2c8ef69a5198 [^]
2018-02-13 12:57hgbotCheckin
2018-02-13 12:57hgbotNote Added: 0102352
2018-02-13 13:06AugustoMauchReview Assigned To => AugustoMauch
2018-02-13 13:06AugustoMauchNote Added: 0102358
2018-02-13 13:06AugustoMauchStatusresolved => closed
2018-02-13 13:06AugustoMauchFixed in Version => 3.0PR18Q2
2018-02-22 18:19hudsonbotCheckin
2018-02-22 18:19hudsonbotNote Added: 0102749
2018-02-22 18:19hudsonbotCheckin
2018-02-22 18:19hudsonbotNote Added: 0102751

Notes
(0102350)
hgbot   
2018-02-13 12:57   
Repository: erp/devel/pi
Changeset: d126554d216bef98a3bea0d94dee2c8ef69a5198
Author: Asier Lostalé <asier.lostale <at> openbravo.com>
Date: Tue Feb 13 12:06:02 2018 +0100
URL: http://code.openbravo.com/erp/devel/pi/rev/d126554d216bef98a3bea0d94dee2c8ef69a5198 [^]

fixed bug 37893, fixed bug 37899: incorrect CU handling in concurrency and POS

  Concurrent Users management had two different problems:
   * If a backoffice session was reused in POS closing backoffice browser, a CU
     session was counted and it was not deactivated while POS session was active.
     In this situation, the session should be deactivated if CU limit has been
     reached.
   * Code for creating and checking active http sessions in context was not thread
     safe, so it was possible to get an error when checking if session was active while
     other sessions were created/destroyed in paralell. This has been fixed by
     synchronizing on active session set. Having solved previous issue this should
     not create excessive contentention as it will be executed only if: CU limit has
     been reached and there are sessions created by mobile modules exclude POS.

---
M src/org/openbravo/erpCommon/obps/ActivationKey.java
M src/org/openbravo/erpCommon/security/SessionListener.java
---
(0102352)
hgbot   
2018-02-13 12:57   
Repository: erp/devel/pi
Changeset: 4f7e83a9ad57b7d485958c844a8452c48fdd6264
Author: Asier Lostalé <asier.lostale <at> openbravo.com>
Date: Tue Feb 13 12:08:43 2018 +0100
URL: http://code.openbravo.com/erp/devel/pi/rev/4f7e83a9ad57b7d485958c844a8452c48fdd6264 [^]

related to bug 37893: added test case

  Which ensures sessions can be created and checked concurrently.

---
M src-test/src/org/openbravo/test/AllAntTaskTests.java
A src-test/src/org/openbravo/test/system/Sessions.java
---
(0102358)
AugustoMauch   
2018-02-13 13:06   
Code reviewed and verified in pi@4f7e83a9ad57
(0102749)
hudsonbot   
2018-02-22 18:19   
A changeset related to this issue has been promoted main and to the
Central Repository, after passing a series of tests.

Promotion changeset: https://code.openbravo.com/erp/devel/main/rev/980a6ad5bbf5 [^]
Maturity status: Test
(0102751)
hudsonbot   
2018-02-22 18:19   
A changeset related to this issue has been promoted main and to the
Central Repository, after passing a series of tests.

Promotion changeset: https://code.openbravo.com/erp/devel/main/rev/980a6ad5bbf5 [^]
Maturity status: Test