Openbravo Issue Tracking System - Retail Modules
View Issue Details
0033162Retail ModulesWeb POSpublic2016-06-06 15:052017-11-30 09:29
shuehner 
shuehner 
normalmajorhave not tried
closedfixed 
5
 
RR16Q3 
marvintm
No
0033162: CashCloseProcessor.createReconciliation missing limit 1 to find last created one (reads all)
The code in createReconciliation wants to read the last reconciliation (ordered b y date) but does not add any limit to query.

so instead it loads all of the entries (for this account) instead of the single entry it needs.
    OBCriteria<FIN_Reconciliation> reconciliationsForAccount = OBDal.getInstance()
        .createCriteria(FIN_Reconciliation.class);
    reconciliationsForAccount.add(Restrictions.eq("account", account));
    reconciliationsForAccount.addOrderBy("creationDate", false);
    List<FIN_Reconciliation> reconciliations = reconciliationsForAccount.list();
    if (reconciliations.size() == 0) {
      startingBalance = account.getInitialBalance();
    } else {
      startingBalance = reconciliations.get(0).getEndingBalance();
    }
add setMaxResults(1)
Performance
depends on backport 0033213RR16Q2.1 closed Retail CashCloseProcessor.createReconciliation missing limit 1 to find last created one (reads all) 
Issue History
2016-06-06 15:05shuehnerNew Issue
2016-06-06 15:05shuehnerAssigned To => Retail
2016-06-06 15:05shuehnerTriggers an Emergency Pack => No
2016-06-06 15:05shuehnerTag Attached: Performance
2016-06-09 15:47hgbotCheckin
2016-06-09 15:47hgbotNote Added: 0087127
2016-06-09 15:47hgbotCheckin
2016-06-09 15:47hgbotNote Added: 0087128
2016-06-09 15:47hgbotStatusnew => resolved
2016-06-09 15:47hgbotResolutionopen => fixed
2016-06-09 15:47hgbotFixed in SCM revision => http://code.openbravo.com/erp/pmods/org.openbravo.retail.posterminal/rev/ee2aa06af166b613e26d63fa3ff302ffce35f4b8 [^]
2016-06-09 15:55shuehnerAssigned ToRetail => shuehner
2016-06-09 15:56shuehnerReview Assigned To => marvintm
2016-06-09 15:56shuehnerNote Added: 0087136
2016-06-09 15:56shuehnerSeverityminor => major
2016-06-10 09:08marvintmStatusresolved => new
2016-06-10 09:08marvintmResolutionfixed => open
2016-06-10 09:09marvintmStatusnew => scheduled
2016-06-10 09:09marvintmStatusscheduled => resolved
2016-06-10 09:09marvintmFixed in Version => RR15Q3
2016-06-10 09:09marvintmResolutionopen => fixed
2016-06-10 09:09marvintmStatusresolved => closed
2016-07-05 10:09hgbotCheckin
2016-07-05 10:09hgbotNote Added: 0088191
2016-07-05 10:09hgbotCheckin
2016-07-05 10:09hgbotNote Added: 0088192
2016-07-05 10:09hgbotStatusclosed => resolved
2016-07-05 10:09hgbotFixed in SCM revisionhttp://code.openbravo.com/erp/pmods/org.openbravo.retail.posterminal/rev/ee2aa06af166b613e26d63fa3ff302ffce35f4b8 [^] => http://code.openbravo.com/retail/backports/3.0RR16Q2.1/org.openbravo.retail.posterminal/rev/fa428be2be9030fe1c20d4f44b119552f7a261f6 [^]
2016-07-05 10:11migueldejuanaStatusresolved => closed
2017-11-30 09:29shuehnerFixed in VersionRR15Q3 => RR16Q3

Notes
(0087127)
hgbot   
2016-06-09 15:47   
Repository: erp/pmods/org.openbravo.retail.posterminal
Changeset: b18bd83d82767561f17fe32d827914fe6f73d9ec
Author: Stefan Hühner <stefan.huehner <at> openbravo.com>
Date: Tue Jun 07 17:08:23 2016 +0200
URL: http://code.openbravo.com/erp/pmods/org.openbravo.retail.posterminal/rev/b18bd83d82767561f17fe32d827914fe6f73d9ec [^]

Issue 33162. Reformat code before applying fix.

---
M src/org/openbravo/retail/posterminal/CashCloseProcessor.java
---
(0087128)
hgbot   
2016-06-09 15:47   
Repository: erp/pmods/org.openbravo.retail.posterminal
Changeset: ee2aa06af166b613e26d63fa3ff302ffce35f4b8
Author: Stefan Hühner <stefan.huehner <at> openbravo.com>
Date: Tue Jun 07 17:10:14 2016 +0200
URL: http://code.openbravo.com/erp/pmods/org.openbravo.retail.posterminal/rev/ee2aa06af166b613e26d63fa3ff302ffce35f4b8 [^]

Fixed 33162. Add 'limit 1' to query to avoid processing/loading all rows.

The query needs to find the latest FIN_Reconciliations for a account (order by
date) to get its ending balance.
However it did not hav a Limit 1 applied to the query so processes all rows for
this account and loaded all those rows into java memory even when needing only 1.

---
M src/org/openbravo/retail/posterminal/CashCloseProcessor.java
---
(0087136)
shuehner   
2016-06-09 15:56   
Raising to major as without it could trigger very high memory usage depending on number of transaction in the used account.
-> Candidate for backport to Q1 + Q2
(0088191)
hgbot   
2016-07-05 10:09   
Repository: retail/backports/3.0RR16Q2.1/org.openbravo.retail.posterminal
Changeset: d6f5c8598ec47453879b1a9486d87c820ec35334
Author: Stefan Hühner <stefan.huehner <at> openbravo.com>
Date: Tue Jun 07 17:08:23 2016 +0200
URL: http://code.openbravo.com/retail/backports/3.0RR16Q2.1/org.openbravo.retail.posterminal/rev/d6f5c8598ec47453879b1a9486d87c820ec35334 [^]

Issue 33162. Reformat code before applying fix.

---
M src/org/openbravo/retail/posterminal/CashCloseProcessor.java
---
(0088192)
hgbot   
2016-07-05 10:09   
Repository: retail/backports/3.0RR16Q2.1/org.openbravo.retail.posterminal
Changeset: fa428be2be9030fe1c20d4f44b119552f7a261f6
Author: Stefan Hühner <stefan.huehner <at> openbravo.com>
Date: Tue Jun 07 17:10:14 2016 +0200
URL: http://code.openbravo.com/retail/backports/3.0RR16Q2.1/org.openbravo.retail.posterminal/rev/fa428be2be9030fe1c20d4f44b119552f7a261f6 [^]

Fixed 33162. Add 'limit 1' to query to avoid processing/loading all rows.

The query needs to find the latest FIN_Reconciliations for a account (order by
date) to get its ending balance.
However it did not hav a Limit 1 applied to the query so processes all rows for
this account and loaded all those rows into java memory even when needing only 1.

---
M src/org/openbravo/retail/posterminal/CashCloseProcessor.java
---