0

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.

  1. 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.

  2. 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: Web Browser error page

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&#xD;&#xA;&#x9;at com.ibm.xsp.model.domino.DominoUtils.openDatabaseByName(DominoUtils.java:188)&#xD;&#xA;&#x9;at com.ibm.xsp.model.domino.DominoViewDataContainer.openDatabase(DominoViewDataContainer.java:880)&#xD;&#xA;&#x9;at com.ibm.xsp.model.domino.DominoViewDataContainer.openView(DominoViewDataContainer.java:814)&#xD;&#xA;&#x9;at com.ibm.xsp.model.domino.DominoViewDataContainer.getDominoView(DominoViewDataContainer.java:802)&#xD;&#xA;&#x9;at com.ibm.xsp.model.domino.DominoViewDataContainer.getView(DominoViewDataContainer.java:797)&#xD;&#xA;&#x9;at com.ibm.xsp.model.domino.DominoViewData.getDataObject(DominoViewData.java:274)&#xD;&#xA;&#x9;at com.ibm.xsp.model.AbstractDataSource.pushData(AbstractDataSource.java:576)&#xD;&#xA;&#x9;at com.ibm.xsp.util.DataPublisher.publishControlData(DataPublisher.java:181)&#xD;&#xA;&#x9;at com.ibm.xsp.component.UIDataPanelBase.publishControlData(UIDataPanelBas</values>
    <values>e.java:310)&#xD;&#xA;&#x9;at com.ibm.xsp.component.UIDataPanelBase.encodeBegin(UIDataPanelBase.java:246)&#xD;&#xA;&#x9;at com.ibm.xsp.util.FacesUtil.renderComponent(FacesUtil.java:840)&#xD;&#xA;&#x9;at com.ibm.xsp.util.FacesUtil.renderComponent(FacesUtil.java:851)&#xD;&#xA;&#x9;at com.ibm.xsp.util.FacesUtil.renderComponent(FacesUtil.java:851)&#xD;&#xA;&#x9;at com.ibm.xsp.util.FacesUtil.renderComponent(FacesUtil.java:851)&#xD;&#xA;&#x9;at com.ibm.xsp.util.FacesUtil.renderComponent(FacesUtil.java:851)&#xD;&#xA;&#x9;at com.ibm.xsp.util.FacesUtil.renderComponent(FacesUtil.java:851)&#xD;&#xA;&#x9;at com.ibm.xsp.component.UIViewRootEx._renderView(UIViewRootEx.java:1317)&#xD;&#xA;&#x9;at com.ibm.xsp.component.UIViewRootEx.renderView(UIViewRootEx.java:1255)&#xD;&#xA;&#x9;at com.ibm.xsp.application.ViewHandlerExImpl.doRender(ViewHandlerExImpl.java:641)&#xD;&#xA;&#x9;at com.ibm.xsp.application.ViewHandlerExImpl._renderView(ViewHandlerExImpl.java:320)&#xD;&#xA;&#x9;at com.ibm.xsp.application.ViewHandlerExImpl.renderView(</values>
    <values>ViewHandlerExImpl.java:335)&#xD;&#xA;&#x9;at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:103)&#xD;&#xA;&#x9;at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:210)&#xD;&#xA;&#x9;at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:120)&#xD;&#xA;&#x9;at com.ibm.xsp.controller.FacesControllerImpl.render(FacesControllerImpl.java:264)&#xD;&#xA;&#x9;at com.ibm.xsp.webapp.FacesServlet.serviceView(FacesServlet.java:248)&#xD;&#xA;&#x9;at com.ibm.xsp.webapp.FacesServletEx.serviceView(FacesServletEx.java:204)&#xD;&#xA;&#x9;at com.ibm.xsp.webapp.FacesServlet.service(FacesServlet.java:160)&#xD;&#xA;&#x9;at com.ibm.xsp.webapp.FacesServletEx.service(FacesServletEx.java:138)&#xD;&#xA;&#x9;at com.ibm.xsp.webapp.DesignerFacesServlet.service(DesignerFacesServlet.java:103)&#xD;&#xA;&#x9;at com.ibm.designer.runtime.domino.adapter.ComponentModule.invokeServlet(ComponentModule.java:583)&#xD;&#xA;&#x9;at com.ibm.domino.xsp.module.nsf.NSFComponentModule.invokeServlet(NSFCo</values>
    <values>mponentModule.java:1281)&#xD;&#xA;&#x9;at com.ibm.designer.runtime.domino.adapter.ComponentModule$AdapterInvoker.invokeServlet(ComponentModule.java:860)&#xD;&#xA;&#x9;at com.ibm.designer.runtime.domino.adapter.ComponentModule$ServletInvoker.doService(ComponentModule.java:803)&#xD;&#xA;&#x9;at com.ibm.designer.runtime.domino.adapter.ComponentModule.doService(ComponentModule.java:572)&#xD;&#xA;&#x9;at com.ibm.domino.xsp.module.nsf.NSFComponentModule.doService(NSFComponentModule.java:1265)&#xD;&#xA;&#x9;at com.ibm.domino.xsp.module.nsf.NSFService.doServiceInternal(NSFService.java:658)&#xD;&#xA;&#x9;at com.ibm.domino.xsp.module.nsf.NSFService.doService(NSFService.java:481)&#xD;&#xA;&#x9;at com.ibm.designer.runtime.domino.adapter.LCDEnvironment.doService(LCDEnvironment.java:341)&#xD;&#xA;&#x9;at com.ibm.designer.runtime.domino.adapter.LCDEnvironment.service(LCDEnvironment.java:297)&#xD;&#xA;&#x9;at com.ibm.domino.xsp.bridge.http.engine.XspCmdManager.service(XspCmdManager.java:272)&#xD;&#xA;Caused by: com.ibm.xsp.Fa</values>
    <values>cesExceptionEx: Database com.ibm.xsp.binding.javascript.JavaScriptValueBinding@304a304a cannot be opened&#xD;&#xA;&#x9;at com.ibm.xsp.model.domino.DominoUtils.doOpenDatabase(DominoUtils.java:240)&#xD;&#xA;&#x9;at com.ibm.xsp.model.domino.DominoUtils.openDatabaseByName(DominoUtils.java:177)&#xD;&#xA;&#x9;... 40 more&#xD;&#xA;</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>

uraimo
  • 19,081
  • 8
  • 48
  • 55
asummers
  • 177
  • 1
  • 15
  • There are many factors - reader names, physical discs, network, formulas in view's selection/columns and so on... take a look at this http://stackoverflow.com/questions/23733170/xpages-performance-2-apps-on-same-server-1-runs-and-1-doesnt – Frantisek Kossuth Jul 08 '15 at 07:45
  • You're referring to the performance issues right? What about the Errors for valuebinding that have only started happening since the page persistence property was changed ? – asummers Jul 08 '15 at 08:11
  • Where it says "for more detailed ..." is this referring to the server log files? have you checked the server log files for the 'more details' if so what does it say? Use the XPages log file reader from OpenNtf if you have to – Cameron Gregor Jul 08 '15 at 09:50
  • Yes, my first comment is about performance. Errors: you need to get more info about them to understand what's causing them. – Frantisek Kossuth Jul 08 '15 at 10:11
  • I have added more details of the error above. The Log entries are particularly unhelpful to me as it doesn't identify which component is causing this error. And why would the error to the user not specify the database it's trying to open? It's returning something completely meaningless to me. – asummers Jul 08 '15 at 13:14

1 Answers1

0

Well I haven't managed to find the exact cause, only that page persistence has something to do with it. I still don't know why it's reporting that it's "Unable to open database: com.ibm.xsp.binding.javascript.JavascriptValueBinding@3b2c3b2c" rather than a normal message that would say what the database path was. So I can't track down what part of the code is causing this error as the messages logged aren't exactly helpful.

But setting page persistence back to Keep on Disk solved it and the error is no more.

asummers
  • 177
  • 1
  • 15