IllegalStateException from XsltTransformer
Friday, 22 March 2019 · 1 message
JB
Johannes Bauer22 Mar 2019 10:18 #
Hello,
we have a BaseX web application with RESTXQ services. I was doing some load tests to see how it behaves in high load scenarios.
Some tests did throw IllegalStateExceptions somewhere in the Saxon XSLT code (see stacktrace below).
We use a XSLT stylesheet to transform the XML response of our services to an intermediate format that allows the transformation to JSON.
(:~ : Transform XML to Json XML Schema
(https://www.w3.org/TR/xslt-30/#schema-for-json). : @param $xml XML node
: @return transformed XML :) declare function json:to-json-xml($xmlas element())
{
xslt:transform($xml,'xml-to-json.xslt',map {},map {'cache' : true()})
};Is there some concurrency problem with the xslt module?
Best regards
Johannes
Unexpected error: Improper use? Potential bug? Your feedback is welcome: Contact: basex-talk at mailman.uni-konstanz.de
Version: BaseX 9.1.2
Java: Oracle Corporation, 1.8.0_191
OS: Linux, amd64
Stack Trace:
java.lang.IllegalStateException: The Controller is being used recursively or concurrently. This is not permitted.
at net.sf.saxon.Controller.checkReadiness(Controller.java:1287) at
net.sf.saxon.trans.XsltController.applyTemplates(XsltController.java:685) at
net.sf.saxon.s9api.AbstractXsltTransformer.applyTemplatesToSource(AbstractXsltTransformer.java:347) at
net.sf.saxon.s9api.XsltTransformer.transform(XsltTransformer.java:338) at net.sf.saxon.jaxp.TransformerImpl.transform(TransformerImpl.java:71) at
org.basex.query.func.xslt.XsltTransform.transform(XsltTransform.java:109) at
org.basex.query.func.xslt.XsltTransform.transform(XsltTransform.java:59) at org.basex.query.func.xslt.XsltTransform.item(XsltTransform.java:37) at org.basex.query.expr.ParseExpr.value(ParseExpr.java:71) at org.basex.query.expr.List.value(List.java:155)
at org.basex.query.expr.gflwor.GFLWOR.value(GFLWOR.java:73) at org.basex.query.expr.If.value(If.java:131)
at org.basex.query.expr.gflwor.GFLWOR.value(GFLWOR.java:73) at org.basex.query.expr.If.value(If.java:131)
at org.basex.query.expr.If.value(If.java:131)
at org.basex.query.func.StaticFunc.invValue(StaticFunc.java:181) at org.basex.query.func.FuncCall.invoke(FuncCall.java:89) at org.basex.query.func.FuncCall.value(FuncCall.java:62) at org.basex.query.func.FuncCall.iter(FuncCall.java:67) at org.basex.query.scope.MainModule.iter(MainModule.java:118) at org.basex.query.QueryContext.iter(QueryContext.java:335) at
org.basex.http.restxq.RestXqResponse.serialize(RestXqResponse.java:73) at org.basex.http.web.WebResponse.create(WebResponse.java:56) at org.basex.http.restxq.RestXqServlet.run(RestXqServlet.java:54) at org.basex.http.BaseXServlet.service(BaseXServlet.java:59) at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at
org.content42.services.filter.LoggingFilter.doFilter(LoggingFilter.java:44) at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493) at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) at
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650) at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) at
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:800) at
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) at
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:806) at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498) at
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:748)
Written for BaseX 9.1. BaseX may have changed since: please check the current documentation.
⚡Generated with XQuery