Project:
View Issue Details[ Jump to Notes ] | [ Issue History ] [ Print ] | |||||||
ID | ||||||||
0056788 | ||||||||
Type | Category | Severity | Reproducibility | Date Submitted | Last Update | |||
defect | [Retail Modules] Web POS | major | always | 2024-10-15 14:04 | 2024-12-09 15:48 | |||
Reporter | malsasua | View Status | public | |||||
Assigned To | meriem_azaf | |||||||
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 | 0056788: Performance problem on KernelUtils.getModulesOrderedByDependency | |||||||
Description | the function getModulesOrderedByDependency in KernelUtils is not efficient: https://gitlab.com/openbravo/product/openbravo/-/blob/release/24Q4/modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/KernelUtils.java?ref_type=heads#L275 [^] This function is executed for each login, and when a lot of logins are done simultaneously after restart tomcat, it could cause a performance issue | |||||||
Steps To Reproduce | restart tomcat and do multiple logins simultaneously | |||||||
Proposed Solution | similar fix to https://issues.openbravo.com/view.php?id=49546 [^] | |||||||
Tags | No tags attached. | |||||||
Attached Files | ||||||||
Relationships [ Relation Graph ] [ Dependency Graph ] | |
Notes | |
(0170525) AugustoMauch (administrator) 2024-10-17 11:19 |
@Miguel, what you report is surprising because getModulesOrderedByDependency is caching the result, so even if it is executed often, it will only be costly once: https://gitlab.com/openbravo/product/openbravo/-/blob/master/modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/KernelUtils.java#L252. [^] Can you share with us the research that was done to determine getModulesOrderedByDependency is causing performance problems? |
(0171137) malsasua (developer) 2024-10-30 08:50 |
In the jstack, we saw dozens of threads halted during the process. The issue occurred because Tomcat was restarted while the stores were open. As a result, when Tomcat started, a large number of login requests came in simultaneously. |
(0172380) malsasua (developer) 2024-11-21 09:06 |
Checked with platform team: The KernelUtils.getModulesOrderedByDependency function is cached during the first login. Possible root cause: If the function takes a few minutes to execute and a significant number of login requests arrive simultaneously after a Tomcat restart, it could result in all threads waiting at this point. Possible fix: Cache the result of the function when Tomcat starts. While this might slow down the Tomcat startup process, it could prevent thread blockage during login bursts. |
(0172780) hgbot (developer) 2024-11-29 15:35 |
Merge Request created: https://gitlab.com/openbravo/product/openbravo/-/merge_requests/1464 [^] |
(0173077) hgbot (developer) 2024-12-09 15:48 |
Merge request merged: https://gitlab.com/openbravo/product/openbravo/-/merge_requests/1464 [^] |
(0173078) hgbot (developer) 2024-12-09 15:48 |
Directly closing issue as related merge request is already approved. Repository: https://gitlab.com/openbravo/product/openbravo [^] Changeset: ef184b1dd931f9c2d4db10b49ea30b9d6216eef5 Author: meriem azaf <m.azaf@orisha.com> Date: 09-12-2024 14:18:33 URL: https://gitlab.com/openbravo/product/openbravo/-/commit/ef184b1dd931f9c2d4db10b49ea30b9d6216eef5 [^] Fixes ISSUE-56788: Performance problem on KernelUtils.getModulesOrderedByDependency The function getModulesOrderedByDependency in KernelUtils is not efficient,this function is executed for each login, and when a lot of logins are done simultaneously after restart tomcat, it could cause a performance issue. To fix it, we change this function to be synchronized. --- M modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/KernelUtils.java --- |
Issue History | |||
Date Modified | Username | Field | Change |
2024-10-15 14:04 | malsasua | New Issue | |
2024-10-15 14:04 | malsasua | Assigned To | => Retail |
2024-10-15 14:04 | malsasua | Triggers an Emergency Pack | => No |
2024-10-15 17:07 | malsasua | Description Updated | View Revisions |
2024-10-15 17:07 | malsasua | Steps to Reproduce Updated | View Revisions |
2024-10-17 06:45 | guillermogil | Assigned To | Retail => Triage Platform Base |
2024-10-17 11:18 | AugustoMauch | Assigned To | Triage Platform Base => malsasua |
2024-10-17 11:19 | AugustoMauch | Note Added: 0170525 | |
2024-10-17 11:20 | AugustoMauch | Status | new => feedback |
2024-10-30 08:50 | malsasua | Note Added: 0171136 | |
2024-10-30 08:50 | malsasua | Note Deleted: 0171136 | |
2024-10-30 08:50 | malsasua | Note Added: 0171137 | |
2024-10-30 08:50 | malsasua | Status | feedback => new |
2024-11-18 12:04 | guillermogil | Assigned To | malsasua => Triage Platform Base |
2024-11-21 09:06 | malsasua | Note Added: 0172380 | |
2024-11-29 12:23 | AugustoMauch | Status | new => scheduled |
2024-11-29 12:23 | AugustoMauch | Assigned To | Triage Platform Base => meriem_azaf |
2024-11-29 15:35 | hgbot | Note Added: 0172780 | |
2024-12-09 15:48 | hgbot | Resolution | open => fixed |
2024-12-09 15:48 | hgbot | Status | scheduled => closed |
2024-12-09 15:48 | hgbot | Note Added: 0173077 | |
2024-12-09 15:48 | hgbot | Fixed in Version | => PR25Q1 |
2024-12-09 15:48 | hgbot | Note Added: 0173078 |
Copyright © 2000 - 2009 MantisBT Group |