Hello,
This morning, a user was not able to log into our internal iDempiere.
Popup was : Cross tenant PO reading request detected from session for table AD_User Record_ID=1001793
We have 2 tenants (1000001 and 1000002), and each people has a user in the two tenants (with same LDAPUser).
Password are stored in LDAPUser
Her AD_User_ID are 1001793 and 1001794.
ClientID UserID
1000001 1001794
1000002 1001793
Previous sessions were :
Yesterday she logged into 1000002 tenant for the first time since migration from 6.2.
And this morning, writing username/password leads to this blocking popup.
She managed to log in after several tries, and AFAIU, ticking the "Choose Role" checkbox.
Here's the log:
08:03:22.005===========> DefaultModelFactory.saveError: Error - Table=AD_User,Class=class org.compiere.model.MUser [203]
08:03:22.006-----------> GenericPO.checkCrossTenant: Table=AD_User Record_ID=1001793 Env.AD_Client_ID=1000001 PO.AD_Client_ID=1000002 writing=false Session= [203]
08:03:22.007===========> UiEngineImpl.error: [203]
org.adempiere.exceptions.AdempiereException: Cross tenant PO reading request detected from session for table AD_User Record_ID=1001793
at org.compiere.model.PO.checkCrossTenant(PO.java:5023)
at org.compiere.model.PO.<init>(PO.java:212)
at org.adempiere.model.GenericPO.<init>(GenericPO.java:81)
at org.compiere.model.MTable.getPO(MTable.java:598)
at org.compiere.model.Query.list(Query.java:286)
at org.compiere.util.Login.getClients(Login.java:1316)
at org.adempiere.webui.panel.LoginPanel.validateLogin(LoginPanel.java:580)
at org.adempiere.webui.window.LoginWindow.onEvent(LoginWindow.java:166)
at org.zkoss.zk.ui.AbstractComponent.onEvent(AbstractComponent.java:3184)
at org.zkoss.zk.ui.AbstractComponent.service(AbstractComponent.java:3154)
at org.zkoss.zk.ui.AbstractComponent.service(AbstractComponent.java:3096)
at org.zkoss.zk.ui.impl.EventProcessor.process(EventProcessor.java:138)
at org.zkoss.zk.ui.impl.UiEngineImpl.processEvent(UiEngineImpl.java:1890)
at org.zkoss.zk.ui.impl.UiEngineImpl.process(UiEngineImpl.java:1662)
at org.zkoss.zk.ui.impl.UiEngineImpl.execUpdate(UiEngineImpl.java:1329)
at org.zkoss.zk.au.http.DHtmlUpdateServlet.process(DHtmlUpdateServlet.java:570)
at org.zkoss.zk.au.http.DHtmlUpdateServlet.doGet(DHtmlUpdateServlet.java:450)
at org.zkoss.zk.au.http.DHtmlUpdateServlet.doPost(DHtmlUpdateServlet.java:458)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.eclipse.jetty.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1418)
From what I understand, the program sets ClientID 1000001 in the Context, but PO object loaded was from clientID 1000002.
I'm trying to reproduce it but I can't. Anyway, she managed to and I would like to fix that.
Anyone faced something similar ? Any idea where to look ?
Thanks,
Nicolas