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

View Issue DetailsJump to Notes ] Issue History ] Print ]
ID
0049558
TypeCategorySeverityReproducibilityDate SubmittedLast Update
defect[Retail Modules] Web POSmajorhave not tried2022-06-15 11:282022-08-22 14:23
ReporterAugustoMauchView Statuspublic 
Assigned ToAugustoMauch 
PrioritynormalResolutionfixedFixed in Version
StatusclosedFix in branchFixed in SCM revision
ProjectionnoneETAnoneTarget Version
OSAnyDatabaseAnyJava version
OS VersionDatabase versionAnt version
Product VersionSCM revision 
Review Assigned To
Regression level
Regression date
Regression introduced in release
Regression introduced by commit
Triggers an Emergency PackNo
Summary

0049558: Performance problem on LabelsComponent.getMobileAppDependantModuleIdList

DescriptionA client recently had some performance problem caused in part by the implementation of the LabelsComponent.getMobileAppDependantModuleIdList. That method is invoked every time a user opens the login screen, as part of the request done to MobileCoreLoginUtilsServlet. Given a module id, the method returns the list of modules that depend from it.


There are two problems in that method:
- Even though that information is not going to change until a new module is installed (and that requires rebuilding the app and restarting tomcat), it is computed everytime, when it could be cached
- At some point the method wants to check if two modules are the same, and instead of comparing their IDs, it is comparing the whole module object, and doing that requires hibernate to inialize the whole object

Steps To ReproduceThis issue is not easy to reproduce because it requires lots of simultaneous login requests on an environment that is already under heavy load.

We were able to find out what the problem was by analyzing the jstack log. You can find in the attached jstack file that there were several threads working on the getMobileAppDependantModuleIdList function, in particular in the BasicLazyInitializer class as a result of comparing whole module objects instead of just their ids
Proposed Solution- When comparing modules, compare their ids instead of the whole object
- Cache the list of dependencies of each requested module instead of compute it every time a user logs in
TagsNo tags attached.
Attached Filestxt file icon jstack-2022-06-13_12.45.01.txt [^] (264,932 bytes) 2022-06-15 11:28

- Relationships Relation Graph ] Dependency Graph ]
depends on backport 0050024RR22Q2.3 closedAugustoMauch Performance problem on LabelsComponent.getMobileAppDependantModuleIdList 
has duplicate defect 0049546 closedRetail the function getDependantModules is not efficient 
related to design defect 0053470 newTriage Platform Base Bad translation between the 2 nodes 

-  Notes
(0138364)
hgbot (developer)
2022-06-15 11:58

Merge Request created: https://gitlab.com/openbravo/product/pmods/org.openbravo.mobile.core/-/merge_requests/379 [^]
(0138444)
hgbot (developer)
2022-06-16 18:55

Directly closing issue as related merge request is already approved.

Repository: https://gitlab.com/openbravo/product/pmods/org.openbravo.mobile.core [^]
Changeset: d1ff623e09ebf3f2b6bc79084ba62f2c46606508
Author: Augusto Mauch <augusto.mauch@openbravo.com>
Date: 15-06-2022 12:15:28
URL: https://gitlab.com/openbravo/product/pmods/org.openbravo.mobile.core/-/commit/d1ff623e09ebf3f2b6bc79084ba62f2c46606508 [^]

Fixes ISSUE-49558: Improves performance of LabelsComponent.getMobileAppDependantModuleIdList

Two improvements have been done:
- List of dependencies of a given module is now cached
- When comparing modules, its ids are compared instead of the whole object

---
M src/org/openbravo/mobile/core/login/LabelsComponent.java
---
(0138445)
hgbot (developer)
2022-06-16 18:55

Merge request merged: https://gitlab.com/openbravo/product/pmods/org.openbravo.mobile.core/-/merge_requests/379 [^]
(0140295)
AugustoMauch (administrator)
2022-08-22 14:15

Reopened to create backports

- Issue History
Date Modified Username Field Change
2022-06-15 11:28 AugustoMauch New Issue
2022-06-15 11:28 AugustoMauch Assigned To => AugustoMauch
2022-06-15 11:28 AugustoMauch Triggers an Emergency Pack => No
2022-06-15 11:28 AugustoMauch File Added: jstack-2022-06-13_12.45.01.txt
2022-06-15 11:31 AugustoMauch Steps to Reproduce Updated View Revisions
2022-06-15 11:31 AugustoMauch Proposed Solution updated
2022-06-15 11:31 AugustoMauch Status new => scheduled
2022-06-15 11:52 AugustoMauch Description Updated View Revisions
2022-06-15 11:58 hgbot Note Added: 0138364
2022-06-16 18:55 hgbot Resolution open => fixed
2022-06-16 18:55 hgbot Status scheduled => closed
2022-06-16 18:55 hgbot Fixed in Version => RR22Q3
2022-06-16 18:55 hgbot Note Added: 0138444
2022-06-16 18:55 hgbot Note Added: 0138445
2022-06-17 07:08 marvintm Relationship added has duplicate 0049546
2022-08-22 14:15 AugustoMauch Note Added: 0140295
2022-08-22 14:15 AugustoMauch Status closed => new
2022-08-22 14:15 AugustoMauch Resolution fixed => open
2022-08-22 14:15 AugustoMauch Fixed in Version RR22Q3 =>
2022-08-22 14:16 AugustoMauch Status new => scheduled
2022-08-22 14:23 AugustoMauch Status scheduled => resolved
2022-08-22 14:23 AugustoMauch Resolution open => fixed
2022-08-22 14:23 AugustoMauch Status resolved => closed
2024-03-18 13:14 alostale Relationship added related to 0053470


Copyright © 2000 - 2009 MantisBT Group
Powered by Mantis Bugtracker