We had integrated Orbeon into our application, and for the most part accessing the orbeon builder and runner pages work fine, and posting URL links for editing and viewing templates and documents work as expected. However intermittently, we will encounter an AssertionError, like below, and it seems to put orbeon in a bad state and can't recover. We must restart the tomcat server and orbeon to continue. This does not happen consistently, we could be viewing the same template or document fine for a few times, then get the exception and can't recover. Orbeon log (with debug) doesn't indicate the cause of the error, or at least it is not obvious. What could be the cause of this AssertionError? or how do I find it? What is the best approach to "handle" this kind of error in order to recover from it? or is it possible to recover? 2015-10-06 12:07:01,923 ERROR
PageFlowControllerProcessor - error
caught {controller: "oxf:/apps/fr/page-flow.xml", method:
"GET", path:
"/fr/voacis/test2/view/0d242fe501c7c38c1236371f857eb6d33cf271ba"} 2015-10-06 12:07:01,933 ERROR
PageFlowControllerProcessor - +----------------------------------------------------------------------------------------------------------------------+ |An Error has Occurred
| |----------------------------------------------------------------------------------------------------------------------| |assertion failed
| |----------------------------------------------------------------------------------------------------------------------| |Application Call Stack
| |----------------------------------------------------------------------------------------------------------------------| |----------------------------------------------------------------------------------------------------------------------| |Exception: java.lang.AssertionError
| |----------------------------------------------------------------------------------------------------------------------| |scala.Predef$ |assert |Predef.scala | 151| |scala.collection.immutable.HashSet$HashTrieSet |<init> |HashSet.scala | 525| |scala.collection.immutable.HashSet$ |scala$collection$immutable$Has|HashSet.scala | 245| |scala.collection.immutable.HashSet$HashSet1 |updated0 |HashSet.scala | 274| |scala.collection.immutable.HashSet |$plus |HashSet.scala | 84| |scala.collection.immutable.HashSet |$plus |HashSet.scala | 87| |scala.collection.immutable.Set$Set4 |$plus |Set.scala | 171| |scala.collection.immutable.Set$Set4 |$plus |Set.scala | 165| |scala.collection.mutable.SetBuilder |$plus$eq |SetBuilder.scala |
22| |scala.collection.mutable.SetBuilder |$plus$eq |SetBuilder.scala |
20| |org.orbeon.oxf.util.ScalaUtils$ |split |ScalaUtils.scala | 220| |org.orbeon.oxf.util.Connection$$anonfun$valueAs$1 |apply |Connection.scala | 462| |org.orbeon.oxf.util.Connection$$anonfun$valueAs$1 |apply |Connection.scala | 462| |scala.Option
|map
|Option.scala |
146| |org.orbeon.oxf.util.Connection$ |valueAs |Connection.scala | 462| |org.orbeon.oxf.util.Connection$
|headersToForwardFromProperty
|Connection.scala |
466| |org.orbeon.oxf.util.Connection$ |jHeadersToForward |Connection.scala | 470| |org.orbeon.oxf.util.Connection |jHeadersToForward |Connection.scala | | |org.orbeon.oxf.processor.generator.URLGenerator$1$1|read
|URLGenerator.java |
398| |org.orbeon.oxf.processor.generator.URLGenerator$1$1|read
|URLGenerator.java |
356| |org.orbeon.oxf.processor.ProcessorImpl |readCacheInputAsObject |ProcessorImpl.java | 363| |org.orbeon.oxf.processor.generator.URLGenerator$1 |readImpl |URLGenerator.java | 355| |essor.impl.ProcessorOutputImpl$TopLevelOutputFilter|read
|ProcessorOutputImpl.java |
257| |org.orbeon.oxf.processor.impl.ProcessorOutputImpl |read
|ProcessorOutputImpl.java |
394| |org.orbeon.oxf.processor.ProcessorImpl |readInputAsSAX |ProcessorImpl.java | 262| |org.orbeon.oxf.processor.ProcessorImpl |readInputAsSAX |ProcessorImpl.java | 266| |rocessor.xinclude.XIncludeProcessor$$anon$1$$anon$3|read
|XIncludeProcessor.scala
| 95| |rocessor.xinclude.XIncludeProcessor$$anon$1$$anon$3|read
|XIncludeProcessor.scala
| 91| |org.orbeon.oxf.processor.ProcessorImpl |readCacheInputAsObject |ProcessorImpl.java | 363| |on.oxf.processor.xinclude.XIncludeProcessor$$anon$1|readImpl
|XIncludeProcessor.scala
| 91| |essor.impl.ProcessorOutputImpl$TopLevelOutputFilter|read
|ProcessorOutputImpl.java |
257| |org.orbeon.oxf.processor.impl.ProcessorOutputImpl |read
|ProcessorOutputImpl.java |
394| |org.orbeon.oxf.processor.ProcessorImpl |readInputAsSAX |ProcessorImpl.java | 262| |cessor.pipeline.TeeProcessor$TeeProcessorOutputImpl|readImpl |TeeProcessor.java |
88| |essor.impl.ProcessorOutputImpl$TopLevelOutputFilter|read
|ProcessorOutputImpl.java |
257| |org.orbeon.oxf.processor.impl.ProcessorOutputImpl |read |ProcessorOutputImpl.java | 394| |org.orbeon.oxf.processor.ProcessorImpl |readInputAsSAX |ProcessorImpl.java | 262| |org.orbeon.oxf.processor.ProcessorImpl |readInputAsTinyTree |ProcessorImpl.java | 288| |org.orbeon.oxf.processor.ProcessorImpl$3 |read
|ProcessorImpl.java |
317| |org.orbeon.oxf.processor.ProcessorImpl$3 |read
|ProcessorImpl.java | 315| |---8<--------8<--------8<--------8<--------8<--------8<--------8<--------8<--------8<--------8<--------8<--------8<---| |org.orbeon.oxf.logging.LifecycleLogger$ |withEventAssumingRequest |LifecycleLogger.scala | 117| |org.orbeon.oxf.webapp.ProcessorService |service
|ProcessorService.scala | 40| |nServlet$$anonfun$service$1$$anonfun$apply$mcV$sp$1|apply$mcV$sp |OrbeonServlet.scala |
79| |nServlet$$anonfun$service$1$$anonfun$apply$mcV$sp$1|apply
|OrbeonServlet.scala
| 72| |nServlet$$anonfun$service$1$$anonfun$apply$mcV$sp$1|apply
|OrbeonServlet.scala
| 72| |org.orbeon.oxf.util.ScalaUtils$ |withRootException |ScalaUtils.scala |
83| |orbeon.oxf.servlet.OrbeonServlet$$anonfun$service$1|apply$mcV$sp |OrbeonServlet.scala |
72| |orbeon.oxf.servlet.OrbeonServlet$$anonfun$service$1|apply
|OrbeonServlet.scala
| 72| |orbeon.oxf.servlet.OrbeonServlet$$anonfun$service$1|apply
|OrbeonServlet.scala
| 72| |org.orbeon.oxf.util.DynamicVariable |withValue
|DynamicVariable.scala
| 42| |org.orbeon.oxf.servlet.OrbeonServlet |service
|OrbeonServlet.scala | 71| |javax.servlet.http.HttpServlet |service |HttpServlet.java | 728| |org.apache.catalina.core.ApplicationFilterChain |internalDoFilter |ApplicationFilterChain.java | 305| |org.apache.catalina.core.ApplicationFilterChain |doFilter
|ApplicationFilterChain.java |
210| |org.orbeon.oxf.servlet.FormRunnerAuthFilter |doFilter
|FormRunnerAuthFilter.scala | 26| |org.apache.catalina.core.ApplicationFilterChain |internalDoFilter |ApplicationFilterChain.java | 243| |org.apache.catalina.core.ApplicationFilterChain |doFilter
|ApplicationFilterChain.java |
210| |.LimiterFilter$$anonfun$doFilter$1$$anonfun$apply$2|apply$mcV$sp |LimiterFilter.scala |
92| |.LimiterFilter$$anonfun$doFilter$1$$anonfun$apply$2|apply
|LimiterFilter.scala
| 92| |.LimiterFilter$$anonfun$doFilter$1$$anonfun$apply$2|apply
|LimiterFilter.scala
| 92| |org.orbeon.oxf.logging.LifecycleLogger$ |withEvent
|LifecycleLogger.scala |
124| |rbeon.oxf.servlet.LimiterFilter$$anonfun$doFilter$1|apply
|LimiterFilter.scala
| 91| |rbeon.oxf.servlet.LimiterFilter$$anonfun$doFilter$1|apply
|LimiterFilter.scala
| 72| |scala.Option
|foreach |Option.scala | 257| |org.orbeon.oxf.servlet.LimiterFilter |doFilter |LimiterFilter.scala |
72| |org.apache.catalina.core.ApplicationFilterChain |internalDoFilter |ApplicationFilterChain.java | 243| |org.apache.catalina.core.ApplicationFilterChain |doFilter
|ApplicationFilterChain.java |
210| |org.apache.catalina.core.StandardWrapperValve |invoke |StandardWrapperValve.java | 222| |org.apache.catalina.core.StandardContextValve |invoke
|StandardContextValve.java |
123| |org.apache.catalina.authenticator.AuthenticatorBase|invoke
|AuthenticatorBase.java | 502| |org.apache.catalina.core.StandardHostValve |invoke
|StandardHostValve.java |
171| |org.apache.catalina.valves.ErrorReportValve |invoke
|ErrorReportValve.java | 99| |org.apache.catalina.core.StandardEngineValve |invoke
|StandardEngineValve.java |
118| |org.apache.catalina.connector.CoyoteAdapter |service |CoyoteAdapter.java | 408| |org.apache.coyote.http11.AbstractHttp11Processor |process
|AbstractHttp11Processor.java
|1023| |e.coyote.AbstractProtocol$AbstractConnectionHandler|process
|AbstractProtocol.java |
589| |.apache.tomcat.util.net.NioEndpoint$SocketProcessor|run
|NioEndpoint.java
|1686| |java.util.concurrent.ThreadPoolExecutor |runWorker
|ThreadPoolExecutor.java
|1145| |java.util.concurrent.ThreadPoolExecutor$Worker |run
|ThreadPoolExecutor.java |
615| |java.lang.Thread |run |Thread.java | 722| +----------------------------------------------------------------------------------------------------------------------+ 2015-10-06 12:52:48,984 INFO
ProcessorService - /home/ -
Timing: 21 You received this message because you are subscribed to the Google Groups "Orbeon Forms" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. To post to this group, send email to [hidden email]. |
Administrator
|
Mei,
I have never seen this issue. Which version of Orbeon Forms are you using? The assertion is happening here I think: https://github.com/scala/scala/blob/2.11.x/src/library/scala/collection/immutable/HashSet.scala#L525 And that would be as a result of this: https://github.com/orbeon/orbeon-forms/blob/4.10-ce/src/main/scala/org/orbeon/oxf/util/Connection.scala#L462 But why it would happen is unclear. Is there no particular reproducible condition where it happens? Also, I cannot explain why Orbeon Forms would be completely unresponsive after that. Usually when an exception occurs, other subsequent requests succeed, certainly new requests for forms. -Erik |
Hi Erik,
-- Thanks for the quick reply. We are using 4.10PE. What I mean by "unresponsive" is, after we get this AssertionError, any subsequent request of document or template to the orbeon server will give the same AssertionError, so it becomes unusable. And we must restart the tomcat/orbeon. We have narrowed down the steps to trigger it, we created a very simple template, with only 1 input text field on it. And from our application, send URL to orbeon to edit/save this template, and to create/update/view documents using this template. After after a few times (like 10 or 15 times), we will get the error. Btw, we have also added some additional parameters to the http header to our application internal use. The additional parameters are added to every request to orbeon URL calls. Not sure if that plays any kind of role in triggering the exception. Mei You received this message because you are subscribed to the Google Groups "Orbeon Forms" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. To post to this group, send email to [hidden email]. |
Some more updates on this issue. After more testing, we are able to reproduce this issue
consistently with Orbeon along. And please be aware that we are in the process of evaluating
orbeon and are working on adding orbeon into our application and distributing
to production. However this issue causes orbeon engine to crash and become unusable,
and it is a major blocker. This issue must be resolved in order for us to move
forward with orbeon. We can consistently reproduce the issue with Orbeon along, without
other integration pieces from our application.
We had created a simulation test program to trigger the issue. The test
program is attached. The test program
sends http requests directly to orbeon engine for a new template, passing the template
parameters in the URL, hence bypassing the template parameter dialog. It
continuously sends the same requests for new template and reads the response. The test program shows that when request is processed successfully
by orbeon, the response code is 200 received. And at request ~#5 (anywhere
between #4 and #8), the request gets a response code 500, and orbeon.log shows
the AssertionException. And this point,
orbeon engine is still able to continue and process additional requests. Then
when it gets to about request ~#30 or so, request will get response code 500,
and orbeon engine continues to return the response code 500 for all requests,
basically becoming unusable. Orbeon.log shows “broken pipe” exception at this
point. When it gets to this stage, we have to reload orbeon or restart tomcat. It seems there is a bug in the orbeon engine, where it encounters
an issue and is unable to recover and rashes. Again this is a block for adding orbeon into our application. Quick
assistance will be greatly appreciated. Below is some information of the test program and our test
environment: Orbeon: 4.10 PE, original package
downloaded from Orbeon, and using a trial license. The only change to orbeon
is adding license file to Orbeon folder, no other changes. Java JRE: 7u22 Server: apache-tomcat-7.0.42 Database: orbeon’s default eXist database To run the Test.jar: java -jar Test.jar hostname e.g.
java -jar Test.jar http://oe312:8880 You received this message because you are subscribed to the Google Groups "Orbeon Forms" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. To post to this group, send email to [hidden email]. Test.jar (5K) Download Attachment |
Free forum by Nabble | Edit this page |