Project:
| View Issue Details[ Jump to Notes ] | [ Issue History ] [ Print ] | |||||||
| ID | ||||||||
| 0033625 | ||||||||
| Type | Category | Severity | Reproducibility | Date Submitted | Last Update | |||
| defect | [Retail Modules] Web POS | minor | have not tried | 2016-08-04 14:17 | 2016-08-18 09:18 | |||
| Reporter | shuehner | View Status | public | |||||
| Assigned To | mtaal | |||||||
| Priority | normal | Resolution | fixed | Fixed in Version | ||||
| Status | closed | Fix in branch | Fixed in SCM revision | 99c6f8f71b50 | ||||
| Projection | none | ETA | none | Target Version | ||||
| OS | Any | Database | Any | Java version | ||||
| OS Version | Database version | Ant version | ||||||
| Product Version | SCM revision | |||||||
| Merge Request Status | ||||||||
| Review Assigned To | migueldejuana | |||||||
| OBNetwork customer | No | |||||||
| Support ticket | ||||||||
| Regression level | ||||||||
| Regression date | ||||||||
| Regression introduced in release | ||||||||
| Regression introduced by commit | ||||||||
| Triggers an Emergency Pack | No | |||||||
| Summary | 0033625: (Order|Invoice|Cahsup)ImportEntryProcessor countEntries has bad performance with many rows in c_import_entry | |||||||
| Description | Those processors do some functional pre-checks to delay processing of a row if some related rows are still pending to be processed. I.e. delay cashup until all 'its' orders+invoices have been processed. The current code forces an exact select count(*) of all pending rows when it only needs 'are there any rows'. By rewriting that code the query can be made a lot faster by letting the db stop processing after a single matching row has been found. | |||||||
| Steps To Reproduce | Current code: select count(*) from C_IMPORT_ENTRY c_import_e0_ where c_import_e0_.ImportStatus='Initial' and (c_import_e0_.Typeofdata='Order' or c_import_e0_.Typeofdata='OBPOS_Invoice' or c_import_e0_.Typeofdata='FIN_Finacc_Transaction' or c_import_e0_.Typeofdata='OBPOS_App_Cashup') and c_import_e0_.Created<now() and c_import_e0_.EM_Obpos_Applications_ID='73B564E1CE044A618E033BD5EF636F46' and c_import_e0_.C_IMPORT_ENTRY_ID<>'E1C1635' Explain analyze of postgres with db having huge import entry backlog: Limit (cost=820959.69..820959.70 rows=1 width=0) (actual time=548.171..548.171 rows=1 loops=1) =================== new code select 1 from C_IMPORT_ENTRY c_import_e0_ where c_import_e0_.ImportStatus='Initial' and (c_import_e0_.Typeofdata='Order' or c_import_e0_.Typeofdata='OBPOS_Invoice' or c_import_e0_.Typeofdata='FIN_Finacc_Transaction' or c_import_e0_.Typeofdata='OBPOS_App_Cashup') and c_import_e0_.Created<now() and c_import_e0_.EM_Obpos_Applications_ID='73B564E1CE044A618E033BD5EF636F46' and c_import_e0_.C_IMPORT_ENTRY_ID<>'E1C1635' limit 1; Explain in same env: Limit (cost=0.00..2.28 rows=1 width=0) (actual time=0.016..0.016 rows=1 loops=1) | |||||||
| Tags | Performance | |||||||
| Attached Files | ||||||||
Relationships [ Relation Graph ]
[ Dependency Graph ]
|
|
Notes |
|
|
(0088820) shuehner (administrator) 2016-08-04 14:20 |
Note: very first part of the patch adding new filter condition is an unrelated fix (deadlock avoidance + functional fix after addition of separate InvoiceLoader (apart from OrderLoader)) Not to be committed in there but should reach code in parallel already. |
|
(0088883) hgbot (developer) 2016-08-08 12:43 |
Repository: erp/pmods/org.openbravo.retail.posterminal Changeset: 99c6f8f71b500fcb1ea967aba5bccbccefe07bc9 Author: Martin Taal <martin.taal <at> openbravo.com> Date: Mon Aug 08 12:43:01 2016 +0200 URL: http://code.openbravo.com/erp/pmods/org.openbravo.retail.posterminal/rev/99c6f8f71b500fcb1ea967aba5bccbccefe07bc9 [^] Fixes issue 33625: (Order|Invoice|Cahsup)ImportEntryProcessor countEntries has bad performance with many rows in c_import_entry Replace the count query with a select 1 with check on size of result in several retail import entry processors. Select 1 is more performant than count(*). --- M src/org/openbravo/retail/posterminal/importprocess/CashManagementImportEntryProcessor.java M src/org/openbravo/retail/posterminal/importprocess/CashUpImportEntryProcessor.java M src/org/openbravo/retail/posterminal/importprocess/CustomerAddrImportEntryProcessor.java M src/org/openbravo/retail/posterminal/importprocess/OrderImportEntryProcessor.java M src/org/openbravo/retail/posterminal/importprocess/QuotationsRejectEntryProcessor.java M src/org/openbravo/retail/posterminal/importprocess/VoidLayawayEntryProcessor.java --- |
|
(0089200) migueldejuana (viewer) 2016-08-18 09:18 |
Verified |
Issue History |
|||
| Date Modified | Username | Field | Change |
| 2016-08-04 14:17 | shuehner | New Issue | |
| 2016-08-04 14:17 | shuehner | Assigned To | => Retail |
| 2016-08-04 14:17 | shuehner | OBNetwork customer | => No |
| 2016-08-04 14:17 | shuehner | Triggers an Emergency Pack | => No |
| 2016-08-04 14:18 | shuehner | Tag Attached: Performance | |
| 2016-08-04 14:18 | shuehner | File Added: 33625_prototype.diff | |
| 2016-08-04 14:20 | shuehner | Note Added: 0088820 | |
| 2016-08-07 10:08 | mtaal | Assigned To | Retail => mtaal |
| 2016-08-07 12:01 | mtaal | File Added: 33625.diff | |
| 2016-08-08 12:43 | hgbot | Checkin | |
| 2016-08-08 12:43 | hgbot | Note Added: 0088883 | |
| 2016-08-08 12:43 | hgbot | Status | new => resolved |
| 2016-08-08 12:43 | hgbot | Resolution | open => fixed |
| 2016-08-08 12:43 | hgbot | Fixed in SCM revision | => http://code.openbravo.com/erp/pmods/org.openbravo.retail.posterminal/rev/99c6f8f71b500fcb1ea967aba5bccbccefe07bc9 [^] |
| 2016-08-08 12:44 | mtaal | Review Assigned To | => migueldejuana |
| 2016-08-18 09:18 | migueldejuana | Note Added: 0089200 | |
| 2016-08-18 09:18 | migueldejuana | Status | resolved => closed |
| Copyright © 2000 - 2009 MantisBT Group |