Openbravo Issue Tracking System - Openbravo ERP
View Issue Details
0037419Openbravo ERPA. Platformpublic2017-11-29 17:402018-01-03 12:39
shuehner 
shuehner 
normaltrivialhave not tried
closedfixed 
5
 
3.0PR18Q1 
alostale
Core
No
0037419: ERP & POS Login do (up to) 3 useless db reads in SessionLogin.java by not using getProxy
SessionLogin.java in its save method is not using getProxy for accessing Client, Organization & User.

That causes a db-read each which should be avoided.

Note: that ad_client read in practice does not happen as currently some earlier code in login did load it already
Do a login with org.openbravo.util.db module active and trace all queries.

280479 [http-bio-8080-exec-2] INFO org.openbravo.util.db.StatementInvocationHandler - executeQuery --- SQL:
select organizati0_.AD_Org_ID as AD1_517_0_, organizati0_.AD_Client_ID as AD2_517_0_, organizati0_.IsActive as IsActive517_0_, organizati0_.Created as Created517_0_, organizati0_.CreatedBy as CreatedBy517_0_, organizati0_.Updated as Updated517_0_, organizati0_.UpdatedBy as UpdatedBy517_0_, organizati0_.Value as Value517_0_, organizati0_.Name as Name517_0_, organizati0_.Description as Descrip10_517_0_, organizati0_.IsSummary as IsSummary517_0_, organizati0_.AD_Orgtype_ID as AD12_517_0_, organizati0_.IsPeriodControlAllowed as IsPerio13_517_0_, organizati0_.C_Calendar_ID as C14_517_0_, organizati0_.IsReady as IsReady517_0_, organizati0_.Social_Name as Social16_517_0_, organizati0_.C_Currency_ID as C17_517_0_, organizati0_.EM_OBRETCO_RetailOrgType as EM18_517_0_, organizati0_.EM_OBRETCO_Pricelist_ID as EM19_517_0_, organizati0_.C_Acctschema_ID as C20_517_0_, organizati0_.EM_OBRETCO_Productlist_ID as EM21_517_0_, organizati0_.EM_Obretco_C_Bpartner_ID as EM22_517_0_, organizati0_.EM_Obretco_C_bp_Location_ID as EM23_517_0_, organizati0_.EM_Obretco_M_Warehouse_ID as EM24_517_0_, organizati0_.EM_Obretco_dbp_irulesid as EM25_517_0_, organizati0_.EM_Obretco_dbp_ptermid as EM26_517_0_, organizati0_.EM_Obretco_dbp_pmethodid as EM27_517_0_, organizati0_.EM_Obretco_dbp_bpcatid as EM28_517_0_, organizati0_.EM_Obretco_dbp_countryid as EM29_517_0_, organizati0_.EM_Obretco_dbp_orgid as EM30_517_0_, organizati0_.EM_Obretco_Showtaxid as EM31_517_0_, organizati0_.EM_Obpos_Ticket_Template_ID as EM32_517_0_, organizati0_.EM_Obretco_Showbpcategory as EM33_517_0_, organizati0_.EM_Obpos_Cashup_Template_ID as EM34_517_0_, organizati0_.EM_Obpos_Format_Decimal as EM35_517_0_, organizati0_.EM_Obpos_Format_Group as EM36_517_0_, organizati0_.EM_Obpos_Date_Format as EM37_517_0_, organizati0_.EM_Obpos_Closedreceipt_Tem_ID as EM38_517_0_, organizati0_.EM_Obpos_Invoice_Template_ID as EM39_517_0_, organizati0_.EM_Obpos_Ret_Inv_Template_ID as EM40_517_0_, organizati0_.EM_Obpos_Layaway_Template_ID as EM41_517_0_, organizati0_.EM_Obpos_Return_Template_ID as EM42_517_0_, organizati0_.EM_Obpos_Quot_Template_ID as EM43_517_0_, organizati0_.EM_Obpos_Count_Diff_Limit as EM44_517_0_, organizati0_.EM_Obpos_Select_Cc_Warehouse as EM45_517_0_, organizati0_.EM_Obpos_Warehouse_Selection as EM46_517_0_, organizati0_.EM_Obpos_Layaway_Anonymousbp as EM47_517_0_, organizati0_.EM_Obpos_Layaway_Partpaid as EM48_517_0_, organizati0_.EM_Obpos_Currency_Format as EM49_517_0_, organizati0_.EM_Obpos_Welcome_Template_ID as EM50_517_0_, organizati0_.EM_Obpos_Cashmgm_Template_ID as EM51_517_0_, organizati0_.EM_Obpos_Clo_Inv_Template_ID as EM52_517_0_, organizati0_.EM_Obpos_Canc_Rpt_Template_ID as EM53_517_0_ from AD_Org organizati0_ where organizati0_.AD_Org_ID=?
  t:2
     $1: 0
   org.openbravo.base.PoolInterceptor$PSInvokationHandler.invoke(PoolInterceptor.java:86)
   sun.reflect.GeneratedMethodAccessor158.invoke(Unknown Source)
   sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   java.lang.reflect.Method.invoke(Method.java:606)
   org.openbravo.dal.core.SessionHandler.find(SessionHandler.java:534)
   org.openbravo.dal.core.SessionHandler.find(SessionHandler.java:500)
   org.openbravo.dal.service.OBDal.get(OBDal.java:353)
   org.openbravo.erpCommon.security.SessionLogin.save(SessionLogin.java:135)

280482 [http-bio-8080-exec-2] INFO org.openbravo.util.db.StatementInvocationHandler - executeQuery --- SQL:
select aduser0_.AD_User_ID as AD1_108_0_, aduser0_.AD_Client_ID as AD2_108_0_, aduser0_.AD_Org_ID as AD3_108_0_, aduser0_.IsActive as IsActive108_0_, aduser0_.Created as Created108_0_, aduser0_.CreatedBy as CreatedBy108_0_, aduser0_.Updated as Updated108_0_, aduser0_.UpdatedBy as UpdatedBy108_0_, aduser0_.Name as Name108_0_, aduser0_.Description as Descrip10_108_0_, aduser0_.Password as Password108_0_, aduser0_.Email as Email108_0_, aduser0_.Supervisor_ID as Supervisor13_108_0_, aduser0_.C_BPartner_ID as C14_108_0_, aduser0_.Processing as Processing108_0_, aduser0_.EmailUser as EmailUser108_0_, aduser0_.EmailUserPW as EmailUs17_108_0_, aduser0_.C_BPartner_Location_ID as C18_108_0_, aduser0_.C_Greeting_ID as C19_108_0_, aduser0_.Title as Title108_0_, aduser0_.Comments as Comments108_0_, aduser0_.Phone as Phone108_0_, aduser0_.Phone2 as Phone23_108_0_, aduser0_.Fax as Fax108_0_, aduser0_.LastContact as LastCon25_108_0_, aduser0_.LastResult as LastResult108_0_, aduser0_.Birthday as Birthday108_0_, aduser0_.AD_OrgTrx_ID as AD28_108_0_, aduser0_.Firstname as Firstname108_0_, aduser0_.Lastname as Lastname108_0_, aduser0_.UserName as UserName108_0_, aduser0_.Default_Ad_Client_ID as Default32_108_0_, aduser0_.Default_Ad_Language as Default33_108_0_, aduser0_.Default_Ad_Org_ID as Default34_108_0_, aduser0_.Default_Ad_Role_ID as Default35_108_0_, aduser0_.Default_M_Warehouse_ID as Default36_108_0_, aduser0_.IsLocked as IsLocked108_0_, aduser0_.AD_Image_ID as AD38_108_0_, aduser0_.EM_OBPOS_Default_Pos_Role as EM39_108_0_, aduser0_.Grant_Portal_Access as Grant40_108_0_, aduser0_.LastPasswordUpdate as LastPas41_108_0_, aduser0_.Isexpiredpassword as Isexpir42_108_0_ from AD_User aduser0_ where aduser0_.AD_User_ID in (?, ?)
  t:2
     $1: E49545E7D0A2413E90C31C2CDC2153B1
     $2: 0
   org.openbravo.base.PoolInterceptor$PSInvokationHandler.invoke(PoolInterceptor.java:86)
   sun.reflect.GeneratedMethodAccessor158.invoke(Unknown Source)
   sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   java.lang.reflect.Method.invoke(Method.java:606)
   org.openbravo.dal.core.SessionHandler.find(SessionHandler.java:534)
   org.openbravo.dal.core.SessionHandler.find(SessionHandler.java:500)
   org.openbravo.dal.service.OBDal.get(OBDal.java:353)
   org.openbravo.erpCommon.security.SessionLogin.save(SessionLogin.java:137)

280489 [http-bio-8080-exec-2] INFO org.openbravo.util.db.StatementInvocationHandler - executeBatch --- SQL:
Use getProxy instead
Performance
diff 37419.diff (995) 2017-11-29 17:58
https://issues.openbravo.com/file_download.php?file_id=11344&type=bug
Issue History
2017-11-29 17:40shuehnerNew Issue
2017-11-29 17:40shuehnerAssigned To => platform
2017-11-29 17:40shuehnerModules => Core
2017-11-29 17:40shuehnerTriggers an Emergency Pack => No
2017-11-29 17:40shuehnerTag Attached: Performance
2017-11-29 17:58shuehnerFile Added: 37419.diff
2017-11-30 09:04alostaleAssigned Toplatform => shuehner
2017-11-30 09:04hgbotCheckin
2017-11-30 09:04hgbotNote Added: 0100816
2017-11-30 09:04hgbotStatusnew => resolved
2017-11-30 09:04hgbotResolutionopen => fixed
2017-11-30 09:04hgbotFixed in SCM revision => http://code.openbravo.com/erp/devel/pi/rev/754d0d843ec5f3494992d7eb98b80810750f9f87 [^]
2017-11-30 09:05alostaleReview Assigned To => alostale
2017-11-30 09:05alostaleNote Added: 0100817
2017-11-30 09:05alostaleStatusresolved => closed
2017-11-30 09:05alostaleFixed in Version => 3.0PR18Q1
2018-01-03 12:39hudsonbotCheckin
2018-01-03 12:39hudsonbotNote Added: 0101497

Notes
(0100816)
hgbot   
2017-11-30 09:04   
Repository: erp/devel/pi
Changeset: 754d0d843ec5f3494992d7eb98b80810750f9f87
Author: Stefan Hühner <stefan.huehner <at> openbravo.com>
Date: Thu Nov 30 09:04:32 2017 +0100
URL: http://code.openbravo.com/erp/devel/pi/rev/754d0d843ec5f3494992d7eb98b80810750f9f87 [^]

fixed bug 37419: Login does 3 useless db reads in SessionLogin

  Those db queries were used to load by ID DAL objects that were used just to
  create a new object but never used again.

  Replaced by getProxy so that no need to fetch them from DB.

---
M src/org/openbravo/erpCommon/security/SessionLogin.java
---
(0100817)
alostale   
2017-11-30 09:05   
reviewed + tested
(0101497)
hudsonbot   
2018-01-03 12:39   
A changeset related to this issue has been promoted main and to the
Central Repository, after passing a series of tests.

Promotion changeset: https://code.openbravo.com/erp/devel/main/rev/c81e0d3cbab5 [^]
Maturity status: Test