Errors concerning impossible queries involving non-persistable entities

0
Hi, we get a lot of log errors like the one pasted below, complaining about an XPATH / database retrieve where non-persistable entities are involved, which, of course, is not possible. There is no clue however what the circumstances are or the user actions causing the problem. We cannot reproduce, it just happens a lot. Where do we need to look? Microflows? Pages? Certain elements on pages? Something else? Why is Mendix creating an impossible database query we didn't ask for and then bitching about it in the log?   com.mendix.core.CoreRuntimeException: com.mendix.systemwideinterfaces.MendixRuntimeException: com.mendix.core.CoreRuntimeException: Exception occurred in action '{"id":"[MendixIdentifier:: id=16607023625938520 objectType=PWNonPersistent.GeregistreerdePWNP entityID=59]","type":"RetrieveByIdWithSchemaAction"}', all database changes executed by this action were rolled back at com.mendix.basis.actionmanagement.ActionManager.executeSync(ActionManager.java:178) Caused by: com.mendix.systemwideinterfaces.MendixRuntimeException: com.mendix.core.CoreRuntimeException: Exception occurred in action '{"id":"[MendixIdentifier:: id=16607023625938520 objectType=PWNonPersistent.GeregistreerdePWNP entityID=59]","type":"RetrieveByIdWithSchemaAction"}', all database changes executed by this action were rolled back at com.mendix.util.classloading.Runner.doRunUsingClassLoaderOf(Runner.java:37) Caused by: com.mendix.core.CoreRuntimeException: Exception occurred in action '{"id":"[MendixIdentifier:: id=16607023625938520 objectType=PWNonPersistent.GeregistreerdePWNP entityID=59]","type":"RetrieveByIdWithSchemaAction"}', all database changes executed by this action were rolled back at com.mendix.basis.actionmanagement.CoreActionHandlerImpl.processErrorState(CoreActionHandlerImpl.scala:155) Caused by: com.mendix.core.CoreRuntimeException: com.mendix.systemwideinterfaces.MendixRuntimeException: com.mendix.connectionbus.ConnectionBusRuntimeException: An exception has occurred for the following request(s): InternalXPathTextGetRequest (depth = 0): //PWNonPersistent.GeregistreerdePWNP[id=16607023625938520] at com.mendix.basis.actionmanagement.ActionManager.executeSync(ActionManager.java:178) Caused by: com.mendix.systemwideinterfaces.MendixRuntimeException: com.mendix.connectionbus.ConnectionBusRuntimeException: An exception has occurred for the following request(s): InternalXPathTextGetRequest (depth = 0): //PWNonPersistent.GeregistreerdePWNP[id=16607023625938520] at com.mendix.util.classloading.Runner.doRunUsingClassLoaderOf(Runner.java:37) Caused by: com.mendix.connectionbus.ConnectionBusRuntimeException: An exception has occurred for the following request(s): InternalXPathTextGetRequest (depth = 0): //PWNonPersistent.GeregistreerdePWNP[id=16607023625938520] at com.mendix.connectionbus.RequestAnalyzer.doRequest(RequestAnalyzer.java:62) Caused by: com.mendix.connectionbus.ConnectionBusRuntimeException: 'PWNonPersistent.GeregistreerdePWNP' is not a persistable entity, exception occurred on mapping the following query: SELECT PWNonPersistent.GeregistreerdePWNP/* FROM PWNonPersistent.GeregistreerdePWNP WHERE PWNonPersistent.GeregistreerdePWNP/id = 16607023625938520 at com.mendix.connectionbus.retrieve.query.mapping.QueryMapper.getMappedQueries(QueryMapper.java:260) Caused by: com.mendix.connectionbus.ConnectionBusRuntimeException: 'PWNonPersistent.GeregistreerdePWNP' is not a persistable entity at com.mendix.connectionbus.retrieve.query.mapping.MetaObjectInfo.getMetaObject(MetaObjectInfo.java:161) Caused by: com.mendix.core.CoreRuntimeException: 'PWNonPersistent.GeregistreerdePWNP' is not a persistable entity at com.mendix.connectionbus.DomainModelUtilImpl.getPersistableMetaObject(DomainModelUtil.scala:69) at com.mendix.connectionbus.DomainModelUtil$.getPersistableMetaObject(DomainModelUtil.scala:31) at com.mendix.connectionbus.DomainModelUtil.getPersistableMetaObject(DomainModelUtil.scala) at com.mendix.connectionbus.retrieve.query.mapping.MetaObjectInfo.getMetaObject(MetaObjectInfo.java:138) at com.mendix.connectionbus.retrieve.query.mapping.MetaObjectInfo.getLocation(MetaObjectInfo.java:102) at com.mendix.connectionbus.retrieve.query.mapping.MetaObjectInfo.getIdLocation(MetaObjectInfo.java:86) at com.mendix.connectionbus.retrieve.query.mapping.MetaObjectInfo.getIdLocation(MetaObjectInfo.java:82) at com.mendix.connectionbus.retrieve.query.mapping.MetaObjectInfo.getIdLocation(MetaObjectInfo.java:78) at com.mendix.connectionbus.retrieve.query.mapping.QueryColumnItemHandler.createIdColumnDefinition(QueryColumnItemHandler.java:177) at com.mendix.connectionbus.retrieve.query.mapping.QueryColumnItemHandler.createColumnDefinition(QueryColumnItemHandler.java:156) at com.mendix.connectionbus.retrieve.query.mapping.QueryColumnItemHandler.mapSelectorLocation(QueryColumnItemHandler.java:127) at com.mendix.connectionbus.retrieve.query.mapping.QueryColumnItemHandler.handleQueryWhereTermLocation(QueryColumnItemHandler.java:64) at com.mendix.connectionbus.retrieve.query.mapping.WhereClauseMapper.prehandleWhereTermSide(WhereClauseMapper.java:236) at com.mendix.connectionbus.retrieve.query.mapping.WhereClauseMapper.handleWhereTerm(WhereClauseMapper.java:167) at com.mendix.connectionbus.retrieve.query.mapping.WhereClauseMapper.map(WhereClauseMapper.java:144) at com.mendix.connectionbus.retrieve.query.mapping.QueryMapper.mapWhereClauseWhereTerms(QueryMapper.java:723) at com.mendix.connectionbus.retrieve.query.mapping.QueryMapper.getMappedQueries(QueryMapper.java:227) at com.mendix.connectionbus.retrieve.query.mapping.QueryMapper.getQueryInstances(QueryMapper.java:127) at com.mendix.connectionbus.retrieve.DataStoreCaller.doOldQueryHandling(DataStoreCaller.java:100) at com.mendix.connectionbus.retrieve.DataStoreCaller.mapToQueryInstances(DataStoreCaller.java:148) at com.mendix.connectionbus.retrieve.DataStoreCaller.getResult(DataStoreCaller.java:76) at com.mendix.connectionbus.retrieve.GetRequestHandler.doRequest(GetRequestHandler.java:69) at com.mendix.connectionbus.RequestAnalyzer.doRequest(RequestAnalyzer.java:48) at com.mendix.connectionbus.ConnectionBusImpl.doRequest(ConnectionBusImpl.java:469) at com.mendix.basis.action.user.RetrieveXPathSchemaRawAction.retrieveXPathSchemaRaw(RetrieveXPathSchemaRawAction.java:162) at com.mendix.basis.action.user.RetrieveXPathSchemaRawAction.executeAction(RetrieveXPathSchemaRawAction.java:130) at com.mendix.basis.action.user.RetrieveXPathSchemaRawAction.executeAction(RetrieveXPathSchemaRawAction.java:26) at com.mendix.systemwideinterfaces.core.UserAction.execute(UserAction.java:50) at com.mendix.basis.actionmanagement.CoreActionHandlerImpl.doCall(CoreActionHandlerImpl.scala:76) at com.mendix.basis.actionmanagement.CoreActionHandlerImpl.call(CoreActionHandlerImpl.scala:55) at com.mendix.core.actionmanagement.CoreAction.call(CoreAction.java:51) at com.mendix.basis.actionmanagement.ActionManager$1.execute(ActionManager.java:170) at com.mendix.util.classloading.Runner.doRunUsingClassLoaderOf(Runner.java:33) at com.mendix.basis.actionmanagement.ActionManager.executeSync(ActionManager.java:174) at com.mendix.basis.component.InternalCore.retrieveXPathSchemaRaw(InternalCore.java:1443) at com.mendix.basis.action.user.RetrieveByIdWithSchemaAction.executeAction(RetrieveByIdWithSchemaAction.scala:48) at com.mendix.basis.action.user.RetrieveByIdWithSchemaAction.executeAction(RetrieveByIdWithSchemaAction.scala:16) at com.mendix.systemwideinterfaces.core.UserAction.execute(UserAction.java:50) at com.mendix.basis.actionmanagement.CoreActionHandlerImpl.doCall(CoreActionHandlerImpl.scala:76) at com.mendix.basis.actionmanagement.CoreActionHandlerImpl.call(CoreActionHandlerImpl.scala:55) at com.mendix.core.actionmanagement.CoreAction.call(CoreAction.java:51) at com.mendix.basis.actionmanagement.ActionManager$1.execute(ActionManager.java:170) at com.mendix.util.classloading.Runner.doRunUsingClassLoaderOf(Runner.java:33) at com.mendix.basis.actionmanagement.ActionManager.executeSync(ActionManager.java:174) at com.mendix.basis.component.InternalCore.retrieveByIdWithSchema(InternalCore.java:1045) at com.mendix.webui.actions.client.RetrieveByIdsAction.execute(RetrieveByIdsAction.scala:38) at com.mendix.webui.requesthandling.ClientRequestHandler$$anonfun$handleRequest$1.apply$mcV$sp(ClientRequestHandler.scala:315) at com.mendix.webui.requesthandling.ClientRequestHandler$$anonfun$handleRequest$1.apply(ClientRequestHandler.scala:300) at com.mendix.webui.requesthandling.ClientRequestHandler$$anonfun$handleRequest$1.apply(ClientRequestHandler.scala:300) at com.mendix.basis.actionmanagement.IMonitoredAction$$anon$1.execute(IMonitoredAction.scala:47) at com.mendix.util.classloading.Runner.doRunUsingClassLoaderOf(Runner.java:33) at com.mendix.basis.actionmanagement.IMonitoredAction$class.monitor(IMonitoredAction.scala:49) at com.mendix.webui.requesthandling.ClientRequestHandler$ClientMonitoredAction.monitor(ClientRequestHandler.scala:417) at com.mendix.webui.requesthandling.ClientRequestHandler.handleRequest(ClientRequestHandler.scala:300) at com.mendix.webui.requesthandling.ClientRequestHandler.handleActionWithSessionRequired(ClientRequestHandler.scala:238) at com.mendix.webui.requesthandling.ClientRequestHandler.handleAction(ClientRequestHandler.scala:205) at com.mendix.webui.requesthandling.ClientRequestHandler.liftedTree1$1(ClientRequestHandler.scala:104) at com.mendix.webui.requesthandling.ClientRequestHandler.processRequest(ClientRequestHandler.scala:96) at com.mendix.externalinterface.connector.RequestHandler.doProcessRequest(RequestHandler.java:40) at com.mendix.external.connector.MxRuntimeConnector$1.execute(MxRuntimeConnector.java:70) at com.mendix.external.connector.MxRuntimeConnector$1.execute(MxRuntimeConnector.java:67) at com.mendix.util.classloading.Runner.doRunUsingClassLoaderOf(Runner.java:33) at com.mendix.external.connector.MxRuntimeConnector.processRequest(MxRuntimeConnector.java:73) at com.mendix.basis.impl.MxRuntimeImpl.processRequest(MxRuntimeImpl.java:875) at com.mendix.m2ee.appcontainer.server.handler.RuntimeHandler.handle(RuntimeHandler.java:41) at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:52) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116) at org.eclipse.jetty.server.Server.handle(Server.java:368) at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489) at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:953) at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1014) at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:861) at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240) at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82) at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:628) at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543) at java.lang.Thread.run(Thread.java:748)  
asked
4 answers
3

I have a ticket open for the same issue. It seems to be related with people using the Back button of their browser.

Mendix only keeps a history of 5 actions, so after that it would open a form without having the NPE object for it. This then results in this stacktrace.

answered
2

I run into the same error when i'm developing. I have a page that has a Non persistent as the caller, and if I rerun locally while on that page, I think the object is garbage collected, which causes the page to be open without the object. 

 

I have also ran into a similar issue with a page that has a non persistent as the caller, and uses a reference selector to display data. It would repeatedly throw a similar error while trying to load the page.  

answered
0

Our users using 'back' buttons sounds plausible. We'll look into that. I don't think custom widgets or java calls are involved. Then we would have encountered it in our own tests. Apparently we don't use 'back' in our browsers. Thanks for the suggestions.

answered
-1

I faced a similar issue recently and figured out how to solve it, so I’m sharing that info in case it helps future users.

Our app is on Studio Pro 8.12.6. We were passing in a non-persistable entity X on the page. I was doing some refactoring on the page when I encountered the error. The error message was complaining about the Xpath in a listview, which didn’t mention the NPE at all.

What had happened was there was a widget – Check-box filter – and it had an XPath constraint for the checked state, and that XPath constraint referenced to the ‘[%CurrentObject%]’, which was pointed to the page parameter. I needed to wrap that widget in a dataview, that grabbed the actual persistent entity that I needed, to make the XPath execute correctly

 

 

So, my advice (to those reading this thread): Check the other widgets on the offending page, and check their XPaths.

answered