I have a particularly troublesome XPages application that could do with a complete re-write but as it is, has been developed and (partially) improved over the last few years in an effort to try and keep it running smoothly. It's getting slower and slower however so I made 2 changes to it last night, and this morning I am noticing a lot of JVM errors on the console.
Removed all jQuery Repeat control tables for displaying view data and replaced them with ViewPanels instead; these are much quicker at loading and rendering a view with lots of documents in it.
Changed page persistence from "Keep on disk" to "Keep current page in memory" - hoping this would also help speed things up.
Today I am seeing lots of errors like:
HTTP JVM: Unable to open database: com.ibm.xsp.binding.javascript.JavascriptValueBinding@3b2c3b2c. For more detailed
The main database is supported by an Archive Db for old records, that load in the UI of the main db by pointing the Data path to the Archive. There is also another db that contains lots of small supporting documents that are referenced by the main front end UI db. So there are links to other dbs, that all work for me and numerous other users. I need help to track down what is causing the error above for some people though. The ACL on all db's linked to this application is the same, they are all on the same server and the ACL also contains the Server as a manager in all dbs too.
The second issue is around the speed. The front end db has about 30,000 documents in it and is about 25GB in size. The views take around 4-5 seconds to load, in fact everything takes around 4-5 seconds to process in that db. Another copy of the UI on the same server, but modified to use the main db for it's data loads everything lightning quick. I want that performance for my application! Why would a separate db that is using the data from the main slow db be so quick in comparison? Is there a best practise guide that says it's a good idea to separate design from data ?
This is a typical error message in the web browser:
And this is a typical set of messages in the log on the server (error-log-0.xml)
<CommonBaseEvent creationTime="2015-07-08T07:07:43.841+01:00" globalInstanceId="EL0a940d8600014e6b9ee19b00000019" msg="CLFAD0131E: Unable to push data because: Unable to open database: com.ibm.xsp.binding.javascript.JavaScriptValueBinding@304a304a" severity="50" version="1.0.1">
<extendedDataElements name="CommonBaseEventLogRecord:level" type="noValue">
<children name="CommonBaseEventLogRecord:name" type="string">
<values>SEVERE</values>
</children>
</extendedDataElements>
<extendedDataElements name="CommonBaseEventLogRecord:sourceClassName" type="string">
<values>com.ibm.commons.log.AbstractLogMgr</values>
</extendedDataElements>
<extendedDataElements name="CommonBaseEventLogRecord:sourceMethodName" type="string">
<values>log</values>
</extendedDataElements>
<extendedDataElements name="CommonBaseEventLogRecord:Exception" type="string">
<values>com.ibm.xsp.FacesExceptionEx: Unable to open database: com.ibm.xsp.binding.javascript.JavaScriptValueBinding@304a304a
	at com.ibm.xsp.model.domino.DominoUtils.openDatabaseByName(DominoUtils.java:188)
	at com.ibm.xsp.model.domino.DominoViewDataContainer.openDatabase(DominoViewDataContainer.java:880)
	at com.ibm.xsp.model.domino.DominoViewDataContainer.openView(DominoViewDataContainer.java:814)
	at com.ibm.xsp.model.domino.DominoViewDataContainer.getDominoView(DominoViewDataContainer.java:802)
	at com.ibm.xsp.model.domino.DominoViewDataContainer.getView(DominoViewDataContainer.java:797)
	at com.ibm.xsp.model.domino.DominoViewData.getDataObject(DominoViewData.java:274)
	at com.ibm.xsp.model.AbstractDataSource.pushData(AbstractDataSource.java:576)
	at com.ibm.xsp.util.DataPublisher.publishControlData(DataPublisher.java:181)
	at com.ibm.xsp.component.UIDataPanelBase.publishControlData(UIDataPanelBas</values>
<values>e.java:310)
	at com.ibm.xsp.component.UIDataPanelBase.encodeBegin(UIDataPanelBase.java:246)
	at com.ibm.xsp.util.FacesUtil.renderComponent(FacesUtil.java:840)
	at com.ibm.xsp.util.FacesUtil.renderComponent(FacesUtil.java:851)
	at com.ibm.xsp.util.FacesUtil.renderComponent(FacesUtil.java:851)
	at com.ibm.xsp.util.FacesUtil.renderComponent(FacesUtil.java:851)
	at com.ibm.xsp.util.FacesUtil.renderComponent(FacesUtil.java:851)
	at com.ibm.xsp.util.FacesUtil.renderComponent(FacesUtil.java:851)
	at com.ibm.xsp.component.UIViewRootEx._renderView(UIViewRootEx.java:1317)
	at com.ibm.xsp.component.UIViewRootEx.renderView(UIViewRootEx.java:1255)
	at com.ibm.xsp.application.ViewHandlerExImpl.doRender(ViewHandlerExImpl.java:641)
	at com.ibm.xsp.application.ViewHandlerExImpl._renderView(ViewHandlerExImpl.java:320)
	at com.ibm.xsp.application.ViewHandlerExImpl.renderView(</values>
<values>ViewHandlerExImpl.java:335)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:103)
	at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:210)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:120)
	at com.ibm.xsp.controller.FacesControllerImpl.render(FacesControllerImpl.java:264)
	at com.ibm.xsp.webapp.FacesServlet.serviceView(FacesServlet.java:248)
	at com.ibm.xsp.webapp.FacesServletEx.serviceView(FacesServletEx.java:204)
	at com.ibm.xsp.webapp.FacesServlet.service(FacesServlet.java:160)
	at com.ibm.xsp.webapp.FacesServletEx.service(FacesServletEx.java:138)
	at com.ibm.xsp.webapp.DesignerFacesServlet.service(DesignerFacesServlet.java:103)
	at com.ibm.designer.runtime.domino.adapter.ComponentModule.invokeServlet(ComponentModule.java:583)
	at com.ibm.domino.xsp.module.nsf.NSFComponentModule.invokeServlet(NSFCo</values>
<values>mponentModule.java:1281)
	at com.ibm.designer.runtime.domino.adapter.ComponentModule$AdapterInvoker.invokeServlet(ComponentModule.java:860)
	at com.ibm.designer.runtime.domino.adapter.ComponentModule$ServletInvoker.doService(ComponentModule.java:803)
	at com.ibm.designer.runtime.domino.adapter.ComponentModule.doService(ComponentModule.java:572)
	at com.ibm.domino.xsp.module.nsf.NSFComponentModule.doService(NSFComponentModule.java:1265)
	at com.ibm.domino.xsp.module.nsf.NSFService.doServiceInternal(NSFService.java:658)
	at com.ibm.domino.xsp.module.nsf.NSFService.doService(NSFService.java:481)
	at com.ibm.designer.runtime.domino.adapter.LCDEnvironment.doService(LCDEnvironment.java:341)
	at com.ibm.designer.runtime.domino.adapter.LCDEnvironment.service(LCDEnvironment.java:297)
	at com.ibm.domino.xsp.bridge.http.engine.XspCmdManager.service(XspCmdManager.java:272)
Caused by: com.ibm.xsp.Fa</values>
<values>cesExceptionEx: Database com.ibm.xsp.binding.javascript.JavaScriptValueBinding@304a304a cannot be opened
	at com.ibm.xsp.model.domino.DominoUtils.doOpenDatabase(DominoUtils.java:240)
	at com.ibm.xsp.model.domino.DominoUtils.openDatabaseByName(DominoUtils.java:177)
	... 40 more
</values>
</extendedDataElements>
<sourceComponentId component="Expeditor 6.2" componentIdType="ProductName" instanceId="" location="EU1RLNW012" locationType="Hostname" subComponent="" threadId="6" componentType="http://www.w3.org/2001/XMLSchema-instance"/>
<situation categoryName="ReportSituation">
<situationType xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ReportSituation" reasoningScope="INTERNAL" reportCategory="LOG"/>
</situation>