AssertionError exception when loading a builder or runner page

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

AssertionError exception when loading a builder or runner page

Meiching Sin

Hello,


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?


Thanks,

Mei



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].
Reply | Threaded
Open this post in threaded view
|

Re: AssertionError exception when loading a builder or runner page

Erik Bruchez
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
Reply | Threaded
Open this post in threaded view
|

Re: AssertionError exception when loading a builder or runner page

Meiching Sin
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].
Reply | Threaded
Open this post in threaded view
|

Re: AssertionError exception when loading a builder or runner page

Meiching Sin

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