Access control change between read & edit causes XPage Exception

  • I’m testing an XPage application that does locking and supports multiple user with dynamic access controls, just like the Notes version does. I do the following:
  1. Open the same document in read mode with two different users.

  2. Edit the document with one user and update it such that the other user no longer has access to it.

  3. Save the updates, excluding the other user. This excluded user has the document open on a XPage in read mode.

  4. Click “Edit” on the XPage. I get a runtime error that the document has been deleted.

  • The document has not been deleted, it’s simply no longer accessible to that user. This is a serious issue for a concurrent access web site; the SSJS checks access & locking before allowing edit … that code should be allowed to do its job instead of the user seeing an ugly runtime exception.

  • I don’t care if it’s fixed in R8.5.2. We are trying to roll it out this week and we can’t switch versions this close to deployment. I’m thinking I should open a PMR for this, but barring a hotfix, which I already have HF472 installed, is a PMR really going to help me?

Thanks for your time…

Exception

Error: Domino Document has been deleted.

▼ Stack Trace

javax.faces.FacesException: Error: Domino Document has been deleted.

com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:106)

com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:210)

com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:96)

com.ibm.xsp.controller.FacesControllerImpl.execute(FacesControllerImpl.java:243)

com.ibm.xsp.webapp.FacesServlet.serviceView(FacesServlet.java:179)

com.ibm.xsp.webapp.FacesServletEx.serviceView(FacesServletEx.java:187)

com.ibm.xsp.webapp.FacesServlet.service(FacesServlet.java:138)

com.ibm.xsp.webapp.FacesServletEx.service(FacesServletEx.java:131)

com.ibm.xsp.webapp.DesignerFacesServlet.service(DesignerFacesServlet.java:85)

com.ibm.designer.runtime.domino.adapter.ComponentModule.invokeServlet(ComponentModule.java:464)

com.ibm.domino.xsp.module.nsf.NSFComponentModule.invokeServlet(NSFComponentModule.java:703)

com.ibm.designer.runtime.domino.adapter.ComponentModule$AdapterInvoker.invokeServlet(ComponentModule.java:730)

com.ibm.designer.runtime.domino.adapter.ComponentModule$ServletInvoker.doService(ComponentModule.java:684)

com.ibm.designer.runtime.domino.adapter.ComponentModule.doService(ComponentModule.java:453)

com.ibm.domino.xsp.module.nsf.NSFComponentModule.doService(NSFComponentModule.java:687)

com.ibm.domino.xsp.module.nsf.NSFService.doService(NSFService.java:247)

com.ibm.designer.runtime.domino.adapter.LCDEnvironment.doService(LCDEnvironment.java:259)

com.ibm.designer.runtime.domino.adapter.LCDEnvironment.service(LCDEnvironment.java:216)

com.ibm.domino.xsp.bridge.http.engine.XspCmdManager.service(XspCmdManager.java:279)

com.ibm.xsp.FacesExceptionEx: Error: Domino Document has been deleted.

com.ibm.xsp.model.domino.wrapped.DominoDocument.restoreWrappedDocument(DominoDocument.java:385)

com.ibm.xsp.model.domino.DominoDocumentDataContainer.getDocument(DominoDocumentDataContainer.java:81)

com.ibm.xsp.model.domino.DominoDocumentData.getDataObject(DominoDocumentData.java:109)

com.ibm.xsp.model.AbstractDataSource.pushData(AbstractDataSource.java:560)

com.ibm.xsp.util.DataUtil.putData(DataUtil.java:121)

com.ibm.xsp.util.DataUtil.putData(DataUtil.java:56)

com.ibm.xsp.component.UIViewRootEx.processDecodes(UIViewRootEx.java:1101)

com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:98)

com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:210)

com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:96)

com.ibm.xsp.controller.FacesControllerImpl.execute(FacesControllerImpl.java:243)

com.ibm.xsp.webapp.FacesServlet.serviceView(FacesServlet.java:179)

com.ibm.xsp.webapp.FacesServletEx.serviceView(FacesServletEx.java:187)

com.ibm.xsp.webapp.FacesServlet.service(FacesServlet.java:138)

com.ibm.xsp.webapp.FacesServletEx.service(FacesServletEx.java:131)

com.ibm.xsp.webapp.DesignerFacesServlet.service(DesignerFacesServlet.java:85)

com.ibm.designer.runtime.domino.adapter.ComponentModule.invokeServlet(ComponentModule.java:464)

com.ibm.domino.xsp.module.nsf.NSFComponentModule.invokeServlet(NSFComponentModule.java:703)

com.ibm.designer.runtime.domino.adapter.ComponentModule$AdapterInvoker.invokeServlet(ComponentModule.java:730)

com.ibm.designer.runtime.domino.adapter.ComponentModule$ServletInvoker.doService(ComponentModule.java:684)

com.ibm.designer.runtime.domino.adapter.ComponentModule.doService(ComponentModule.java:453)

com.ibm.domino.xsp.module.nsf.NSFComponentModule.doService(NSFComponentModule.java:687)

com.ibm.domino.xsp.module.nsf.NSFService.doService(NSFService.java:247)

com.ibm.designer.runtime.domino.adapter.LCDEnvironment.doService(LCDEnvironment.java:259)

com.ibm.designer.runtime.domino.adapter.LCDEnvironment.service(LCDEnvironment.java:216)

com.ibm.domino.xsp.bridge.http.engine.XspCmdManager.service(XspCmdManager.java:279)