IBM Support

Clustered environment returns error: "There was a problem retrieving the XML data"

Troubleshooting


Problem

In a clustered environment for Lotus Forms, the following error continually occurs: "There was a problem retrieving the XML data."

Cause

The problem occurs when the load balancer does not send AJAX calls generated by a Webform Server session to the same clustered node that is rendering the form.

This creates file access or locking problems for instances of the form in the Access Control database and Shared File Cache because the session that originally rendered the form has locks on all the required files.

Diagnosing The Problem

If this problem is occurring, you see the following types of errors, highlighted in bold text, in the Translator error.xml logs:

<logEvent level="SEVERE" time="2008-07-21 14:06:06,809">


<error>
<context>test.ibm.com/xx.xx.xx.xx</context>
<message>com.PureEdge.error.UWIException: [90248] Attempt to lock access control record for form instance 8176396505007A49DD11E275A98888D1000 failed due to timeout.</message>
<errorHistory>com.PureEdge.error.UWIException: [90248] Attempt to lock access control record for form instance 8176396505007A49DD11E275A98888D1000 failed due to timeout.
at com.ibm.form.webform.translator.formCache.FormCache$FormObject.ensureCurrency(FormCache.java:1533)
at com.ibm.form.webform.translator.formCache.FormCache.getForm(FormCache.java:399)
at com.ibm.form.webform.translator.formCache.FormCache.openForm(FormCache.java:316)
at com.ibm.form.webform.translator.formCache.FormCache.openForm(FormCache.java:296)
at com.ibm.form.webform.translator.Translator.openForm(Translator.java:4128)
at com.ibm.form.webform.translator.Translator.onChange(Translator.java:1511)
at com.ibm.form.webform.translator.Translator.service(Translator.java:1208)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:989)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:501)
at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:464)
at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:90)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:744)
at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1455)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:113)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:454)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:383)
at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:102)
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:195)
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:743)
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:873)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1469)
</errorHistory>
<errorSerialization></errorSerialization>
<errorCode>Exception</errorCode>
<formInstance>8176396505007A49DD11E275A98888D1000</formInstance>
<formName></formName>
<ExceptionTimestamp>1216649166808</ExceptionTimestamp>
</error>
</logEvent>

<logEvent level="SEVERE" time="2008-07-21 14:06:37,272">
<error>
<context>test.ibm.com/xx.xx.xx.xx</context>
<message>Exception in cache custodian: [90246] Attempt to unlock access control record for form instance 8176396505007A49DD11E275A98888D1000 failed because it was not locked.</message>
<errorHistory></errorHistory>
<errorSerialization></errorSerialization>
<errorCode></errorCode>
</error>
</logEvent>

<logEvent level="SEVERE" time="2008-07-21 14:01:35,734">
<error>
<context>test.ibm.com/xx.xx.xx.xx</context>
<message>java.lang.IllegalStateException: Timed out obtaining inUse lock for form instance 8176396505003CF9DD11B275EDC57CC8000</message>
<errorHistory>java.lang.IllegalStateException: Timed out obtaining inUse lock for form instance 8176396505003CF9DD11B275EDC57CC8000
at com.ibm.form.webform.translator.formCache.FormCache.getForm(FormCache.java:392)
at com.ibm.form.webform.translator.formCache.FormCache.openForm(FormCache.java:316)
at com.ibm.form.webform.translator.formCache.FormCache.openForm(FormCache.java:296)
at com.ibm.form.webform.translator.Translator.openForm(Translator.java:4128)
at com.ibm.form.webform.translator.Translator.handleAjaxRequest(Translator.java:1429)
at com.ibm.form.webform.translator.Translator.service(Translator.java:1224)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:989)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:501)
at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:464)
at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3276)
at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:267)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:811)
at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1455)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:113)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:454)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:383)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:263)
at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:195)
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:743)
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:873)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1469)
</errorHistory>
<errorSerialization></errorSerialization>
<errorCode>Exception</errorCode>
<formInstance>8176396505003CF9DD11B275EDC57CC8000</formInstance>
<formName></formName>
<ExceptionTimestamp>1216648895733</ExceptionTimestamp>
</error>
</logEvent>

<logEvent level="SEVERE" time="2008-07-21 13:19:53,962">
<error>
<context>test.ibm.com/xx.xx.xx.xx</context>
<message>com.PureEdge.error.UWIException: [90249] Could not load form from disk cache file /nfs/Translator_SharedCache/SharedFileCache/8176396505003CF9DD1172756CE1CC4B000/theForm.orig</message>
<errorHistory>com.PureEdge.error.UWIException: [90249] Could not load form from disk cache file /nfs/tg_beta_install/Translator_SharedCache/SharedFileCache/8176396505003CF9DD1172756CE1CC4B000/theForm.orig
at com.ibm.form.webform.translator.Translator.openForm(Translator.java:4136)
at com.ibm.form.webform.translator.Translator.onChange(Translator.java:1511)
at com.ibm.form.webform.translator.Translator.service(Translator.java:1208)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:989)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:501)
at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:464)
at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:90)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:744)
at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1455)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:113)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:454)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:383)
at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:102)
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:195)
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:743)
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:873)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1469)
</errorHistory>
<errorSerialization></errorSerialization>
<errorCode>Exception</errorCode>
<formInstance>8176396505003CF9DD1172756CE1CC4B000</formInstance>
<formName></formName>
<ExceptionTimestamp>1216646393962</ExceptionTimestamp>
</error>
</logEvent>

Resolving The Problem

This problem occurs because the load balancer has not been properly configured to use session affinity, also called "sticky sessions."

There are different ways to set up your cluster. The diagram below depicts one of the ways. Depending on your clustering needs, a different configuration might be required.

Diagram of cluster setup:


Observe the following scenario using the diagram above:

1. A user accesses a URL that goes through a (hardware or software) load balancer.



2. The load balancer pushes the initial form request to Node 1 (red box above) for rendering.

3. The user starts filling in the form and tabs out of a field (invoking an AJAX call).

    NOTE: This is where the problem can occur.

4. An AJAX call is sent from the client through the load balancer. If the load balancer is not properly setup for session affinity, then the AJAX call could be sent to a different node for processing, say Node 3 (blue box above).

5. The request goes through Node 3 (blue box above) and returns the error "There was a problem retrieving XML Data" because of file contention at the Access Control DB and File Cache Server.

If the load balancer is set up for session affinity correctly, then the AJAX call will be routed to Node 1 (red box) and will be processed correctly as Node 1 already has all the appropriate file locks in place.

As noted in the Lotus Forms Information Center, you must set up load balancers that are in front of Webform Server for session affinity (sticky sessions). Refer to "Setting up a Load Balancer."

[{"Product":{"code":"SS4BP3","label":"Lotus Forms Server"},"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Component":"Webform server","Platform":[{"code":"PF002","label":"AIX"},{"code":"PF012","label":"IBM i"},{"code":"PF016","label":"Linux"},{"code":"PF027","label":"Solaris"},{"code":"PF033","label":"Windows"}],"Version":"4.0;3.5.1.2;3.5.1.1;3.5.1;3.5;3.0.1;3.0","Edition":"All Editions","Line of Business":{"code":"LOB31","label":"WCE Watson Marketing and Commerce"}}]

Document Information

Modified date:
16 June 2018

UID

swg21320676