Information link with multiple prompts and large data errors out with "The task could not be completed. Communication error in undefined" on the TIBCO Spotfire Web Player or Automation Services

Information link with multiple prompts and large data errors out with "The task could not be completed. Communication error in undefined" on the TIBCO Spotfire Web Player or Automation Services

book

Article ID: KB0079503

calendar_today

Updated On:

Products Versions
Spotfire Server 7.5 and higher

Description

When opening a report in the TIBCO Spotfire Web Player based on an information link which has a large number of prompts or data, the data table may fail to load and you will see the following error in the server.log file:
ERROR 2017-07-17T11:03:58,473-0400 [user@domain, #12345, #111222] spotfire.rs.RestExceptionHandler: Intercepted exception in request to /wp/render/b1MOFe-Yv0vJCEHfFj/AjaxService.asmx/ValidatePrompt
java.io.IOException: failed to process request
    at com.spotfire.server.wp.router.WebServiceHttpProxyRequestHandler.handleRequest(WebServiceHttpProxyRequestHandler.java:217)
    at org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter.handle(HttpRequestHandlerAdapter.java:51)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)
    ......
Caused by: org.springframework.web.client.HttpServerErrorException: 500 Worker error id: e9bc8a4610a34b77a9689dc6ca6b4960 (The formatter threw an exception while trying to deserialize the message: There was an error while trying to deserialize parameter http://schemas.spotfire.tibco.com/worker/Analysis/Service/650:serializedPromptModel. The InnerException message was 'There was an error deserializing the object of type System.String. The maximum string content length quota (262144) has been exceeded while reading XML data. This quota may be increased by changing the MaxStringContentLength property on the XmlDictionaryReaderQuotas object used when creating the XML reader.'.  Please see InnerException for more details.)
    at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:94)
    at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:667)

The above error is seen if the Web Player exceeds a maximum size of 256kb for request and response messages sent to and from the service.

Issue/Introduction

This article describes how to resolve if the information link does not execute on TIBCO Spotfire Web Player when maximum string content length quota (262144) has been exceeded while reading XML data.

Resolution

In the "Spotfire.Dxp.Worker.Web.config" you have a setting on the server limiting the maximum size of message that the Web Player accepts. The default is 256kb, so increasing the size to 2560 (for example) will resolve the issue.

Update the maxReaderQuotasSizeKb setting value in the Spotfire.Dxp.Worker.Web.config per the instructions found here: Manually editing the service configuration files

Details:

1). First go to:
<TSS install dir>\tomcat\bin\
and make sure that the "config" folder is deleted or backed up somewhere else.

2). On the command line, export the service configuration that you want to modify from Spotfire Server by using the export-service-config command. Specify the service's capability and the deployment area, and optionally the configuration name.

For example, exporting the "Default" Spotfire Web Player Services configuration that is in the Production deployment area:
export-service-config --capability=WEB_PLAYER --deployment-area=Production

The configuration files are then exported. By default, these files are located in the <TSS install dir>\tomcat\bin\config\root directory.

3). Make the following changes to Spotfire.Dxp.Worker.Web.config:

From Spotfire.Dxp.Worker.Web.config:
  • Change: maxReaderQuotasSizeKb="256"
  • To: maxReaderQuotasSizeKb="2560" (The maxReaderQuoteSizeKb parameter has a potential range of 16-16384)
After this change the section should look something like the following.
<application checkUserSessionTimeoutIntervalSeconds="120"
           userSessionTimeout="00:20:00"
           maxConcurrentWebServiceCallsPerCore="16"
           maxReceivedMessageSizeMb="1024"
           maxReaderQuotasSizeKb="2560"
           requestTimeoutSeconds="3600"/>


Save the changes to file.

4). In the command-line interface, import the configuration file back into the Spotfire Server and name the configuration by using the import-service-config command.
For example:
import-service-config --config-name=WebPlayerConfiguration

5). In the command-line interface, assign the created Web Player service configuration to the Spotfire Server to make it possible to use for the service:

For example :
set-service-config --service-id=value –config-name=WebPlayerConfiguration

Now opening the information link should be able to successfully open in an analysis file in the Web Player.

Note:
  • This same error can also be seen with Automation Services and resolved with the same configuration change.
  • The maxReaderQuoteSizeKb parameter has a range of 16-16384. A value outside of this range will prevent the service from starting correctly.

Additional Information

Doc: Spotfire.Dxp.Worker.Web.config file Manually editing the service configuration files