Anonymous | Login
Project:
RSS
  
News | My View | View Issues | Roadmap | Summary

View Issue DetailsJump to Notes ] Issue History ] Print ]
ID
0039006
TypeCategorySeverityReproducibilityDate SubmittedLast Update
backport[Openbravo ERP] A. Platformmajorrandom2018-07-20 08:132018-07-27 10:27
ReporteralostaleView Statuspublic 
Assigned Toalostale 
PriorityurgentResolutionfixedFixed in Version3.0PR18Q3
StatusclosedFix in branchFixed in SCM revision09564d201f76
ProjectionnoneETAnoneTarget Version3.0PR18Q3
OSAnyDatabaseAnyJava version
OS VersionDatabase versionAnt version
Product VersionSCM revision 
Review Assigned Tocaristu
Web browser
ModulesCore
Regression level
Regression date
Regression introduced in release
Regression introduced by commit
Triggers an Emergency PackNo
Summary

0039006: BaseComponentProvider is not thread safe

DescriptionBaseComponentProvider has a field (appDependencies) which is thread unsafe.

This static field is a HashMap which is not thread safe, it is generally initialized by different ComponentProviders in their static initializers for example in MobileCoreComponentProvider:

  static {
    // Set dependency on Mobile Core app
    BaseComponentProvider.setAppDependencies(MobileCoreConstants.RETAIL_CORE,
        Arrays.asList(MobileCoreConstants.APP_IDENTIFIER));
  }


If two different threads execute static initializer of different ComponentProviders concurrently, the contents of this field can be uncertain.
Steps To ReproduceUnclear and random.

It could cause the following problem:

1. In an instance with retail
2. Load login page
  -> ERROR: Nothing is loaded an error page is seen saying "The WebPOS cannot be loaded"

This can occur the first time login page is loaded. If it occurs, WebPOS won't be loadable till Tomcat is restarted, if it does not occur 1st load, subsequent ones will continue working.

See https://ci.openbravo.com/view/try-retail/job/try-ret-test-pgsql-suite8/4853/artifact/SANDBOX/automation/pi-mobile/last-results/try-ret-test-pgsql-suite8/screenshots/15%3A01%3A44%20FAILED%3A%20ATT010_AttributesLayaways.png [^]
Proposed SolutionChange appDependencies from HashMap to ConcurrentHashMap.
TagsNo tags attached.
Attached Files

- Relationships Relation Graph ] Dependency Graph ]
blocks defect 0039005 closedalostale BaseComponentProvider is not thread safe 

-  Notes
(0105821)
hgbot (developer)
2018-07-20 09:05

Repository: erp/backports/3.0PR18Q3
Changeset: 09564d201f76928ccbdf9ea5372913ce6c3e8c35
Author: Asier Lostalé <asier.lostale <at> openbravo.com>
Date: Fri Jul 20 08:30:59 2018 +0200
URL: http://code.openbravo.com/erp/backports/3.0PR18Q3/rev/09564d201f76928ccbdf9ea5372913ce6c3e8c35 [^]

fixed bug 39006: BaseComponentProvider is not thread safe

  Static appDependencies has been changed from HashMap to ConcurrentHashMap,
  this field can potentially be concurrently initialized from several classes
  being HashMap not thread safe can lead to inconsistent results.

---
M modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/BaseComponentProvider.java
---
(0105973)
caristu (developer)
2018-07-27 10:27

Code reviewed

- Issue History
Date Modified Username Field Change
2018-07-20 08:33 alostale Type defect => backport
2018-07-20 08:33 alostale Target Version => 3.0PR18Q3
2018-07-20 09:05 hgbot Checkin
2018-07-20 09:05 hgbot Note Added: 0105821
2018-07-20 09:05 hgbot Status scheduled => resolved
2018-07-20 09:05 hgbot Resolution open => fixed
2018-07-20 09:05 hgbot Fixed in SCM revision => http://code.openbravo.com/erp/backports/3.0PR18Q3/rev/09564d201f76928ccbdf9ea5372913ce6c3e8c35 [^]
2018-07-27 10:27 caristu Note Added: 0105973
2018-07-27 10:27 caristu Status resolved => closed
2018-07-27 10:27 caristu Fixed in Version => 3.0PR18Q3


Copyright © 2000 - 2009 MantisBT Group
Powered by Mantis Bugtracker