Bringing this problem discussed on this thread:
https://sourceforge.net/forum/forum.php?thread_id=3337971&forum_id=610548
Hi Developers,
Working on a customer with a really big product table (and I must add with a postgres version poorly optimized) I noticed a big problem with Info Product window.
At some time in the morning the system presented a big performance problem, when I reviewed the running queries there were lots of "info product" queries.
So researching deeply I found this behavior:
- a user opened "Info Product" window, cleared warehouse and price list and executed refresh
- the window info product shown a message telling "Start Search" and kept busy
- the thing is that the cancel button is enabled, so the user pushed it, the window closed, BUT the query kept running in the background in postgres
- the window opened again the window and repeated the operation
- EVEN WORST - closing adempiere doesn't kill the query in postgres, pgadmin shows the query running even after I close the adempiere program completely
If you want to reproduce the problem you can temporarily change the line 129 of InfoProduct.java from:
"M_Product p"
to
"m_product p1, m_product p2, m_product p3, M_Product p"
[ Obviously this is introducing intentionally a bug, but it serves as testing scenario to reproduce the issue ]
_________________
Tracing the problem I see it's caused because the threaded run on Info.java -> Worker.
I suppose the solution must be implemented at line 841 of Info.java:
m_worker.interrupt();
Is there a way to control this?
Is there a way to send the database backend (oracle or postgres) a message to kill the query and release the session?
Regards,
Carlos Ruiz
Colin, thanks for the tip.
Fixed with revision 9751
http://adempiere.svn.sourceforge.net/adempiere/?rev=9751&view=rev
Tested in postgresql and oracle-xe - worked in both dbs.
Regards,
Carlos Ruiz
This Tracker item was closed automatically by the system. It was
previously set to a Pending status, and the original submitter
did not respond within 14 days (the time period specified by
the administrator of this Tracker).