Project:
View Issue Details[ Jump to Notes ] | [ Issue History ] [ Print ] | |||||||
ID | ||||||||
0049558 | ||||||||
Type | Category | Severity | Reproducibility | Date Submitted | Last Update | |||
defect | [Retail Modules] Web POS | major | have not tried | 2022-06-15 11:28 | 2022-08-22 14:23 | |||
Reporter | AugustoMauch | View Status | public | |||||
Assigned To | AugustoMauch | |||||||
Priority | normal | Resolution | fixed | Fixed in Version | ||||
Status | closed | Fix in branch | Fixed in SCM revision | |||||
Projection | none | ETA | none | Target Version | ||||
OS | Any | Database | Any | Java version | ||||
OS Version | Database version | Ant version | ||||||
Product Version | SCM revision | |||||||
Review Assigned To | ||||||||
Regression level | ||||||||
Regression date | ||||||||
Regression introduced in release | ||||||||
Regression introduced by commit | ||||||||
Triggers an Emergency Pack | No | |||||||
Summary | 0049558: Performance problem on LabelsComponent.getMobileAppDependantModuleIdList | |||||||
Description | A 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 Reproduce | This 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 | |||||||
Tags | No tags attached. | |||||||
Attached Files | jstack-2022-06-13_12.45.01.txt [^] (264,932 bytes) 2022-06-15 11:28 | |||||||
Relationships [ Relation Graph ] [ Dependency Graph ] | ||||||||||||||||||||||
|
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 |