info window performance in 7.1

Description

Issue: Info window can be really slow on many columns and pagination

TESTED USE CASES
A. regular product info with lot custom column - approx 25 cols (slow)
B. product info simple with fewer columns. up to 10 (fast)

My test case: When I reduce product info from 25 to 5 columns, then the info window was really fast.

Also we got feedback from customer, and reproducible, pagination to the next pages are really slow.

Obeservation: SQL generated by the info window, and the query took in 0,7sec on the server, however, the info window rendered/return rows up to 3-6 sec. This depends on the result (rows returned, if less then performance is better) 4-6 sec around 600 rows.

Due small dataset we can't reproduce on test.idempiere.org. Our tests was done on our multi-tenant production installation, however, this was confirmed from another installation from michalzilincar and AlanLescano.

Alan Lescano, forum thread
I also noticed a slowness, especially when the info window has many columns (>20) and many rows returned. Decreasing the paging size and reducing columns helps a lot. I couldn't investigate much, but I found a suspicious loop that iterates through all cells (rows x columns), to format dates/amounts (localized), and that may be the cause.

Environment

test private instance

Attachments

4

Activity

Alan Lescano 
September 14, 2020 at 2:56 PM

Nice catch!

Alan

Norbert Bede 
September 14, 2020 at 1:42 PM

Testing 13000 products %kviet% search result approx 1600 rows, pagination is up to 500ms

see screencast.

norbert

Igor Pojzl 
September 14, 2020 at 12:53 PM

Created PR, added passing ReadOnly Parameter from InfoColum to GridField.

Heng Sin Low 
September 14, 2020 at 12:07 PM

hi , yes, that’s not correct, it should be readonly for info window. If you have the fix for it, please create a pull request for it.

Igor Pojzl 
September 14, 2020 at 9:58 AM

Ive found that WInfoWindowListItemRenderer when getting CellComponent was causing for each cell with Table/TableDir Component to refresh its lookup in WTableDirEditor:208. I think it should be considered as BUG, because when we have in Info Window Column selected IsReadOnly checkbox, Table Direct component should have set IsReadWrite as False.

private void init() { ZKUpdateUtil.setWidth(getComponent(), "200px"); getComponent().setAutocomplete(true); getComponent().setAutodrop(true); getComponent().addEventListener(Events.ON_BLUR, this); if (getComponent() instanceof EditorAutoComplete) { ; } else { getComponent().addEventListener(Events.ON_CHANGING, this); } boolean zoom= false; if (lookup != null) { lookup.addListDataListener(this); lookup.setMandatory(isMandatory()); if ((lookup.getDisplayType() == DisplayType.List && Env.getContextAsInt(Env.getCtx(), "#AD_Role_ID") == 0) || lookup.getDisplayType() != DisplayType.List) { zoom= true; } //no need to refresh readonly lookup if (isReadWrite()) lookup.refresh(); // <-- Refreshing for Each Cell in InfoWindow else refreshList(); }
Fixed

Details

Assignee

Reporter

Tested By

Norbert Bede

Components

Fix versions

Affects versions

Priority

Created September 11, 2020 at 6:04 AM
Updated November 1, 2020 at 4:09 PM
Resolved September 14, 2020 at 2:29 PM