Details
-
Bug
-
Status: Resolved
-
Critical
-
Resolution: Cannot Reproduce
-
6.20.0
-
None
-
None
-
Linux, Java 1.7
Description
Issue Description:
An error that occurs on form submit, needs to be logged in JDBCAppender log4j. But due to conversionPattern not being a database query, impacts all further users and other sessions when they go to the same form submit button, and apache wicket throws error.
Apache Softwares:
Apache Wicket Version: 6.20.0
slf4j.version: 1.7.10
log4j.version: 1.2.17
Below are the steps to reproduce:
- On submit of a form button, there was an error - nested exception is java.sql.SQLException: ORA-12899: value too large for column
- The above error needs to be logged into JDBCAppender.
- The error log fails to log into JDBCAppender due to the conversionPattern not being a database query.
- All other users, when they go through the application journey, they submit the same form button as above.
- The apache wicket throws error, and restricts the application flow to complete.
- An error in JDBCAppender log4j due to conversionPattern not being a database query, impacts all further users and other sessions, wherein when they go to the same form submit button, apache wicket throws error.
Log4j.xml:
<appender name="DB" class="org.apache.log4j.jdbc.JDBCAppender">
<param name="URL" value="${boarding.log4j.dbappender.url}"/>
<param name="Driver" value="${boarding.log4j.dbappender.driverClassName}" />
<param name="User" value="${boarding.log4j.dbappender.username}" />
<filter class="org.apache.log4j.varia.LevelMatchFilter">
<param name="LevelToMatch" value="error" />
<param name="AcceptOnMatch" value="true" />
</filter>
<filter class="org.apache.log4j.varia.DenyAllFilter"/>
<param name="Password" value="${boarding.log4j.dbappender.password}" />
<layout class="org.apache.log4j.EnhancedPatternLayout">
<param name="ConversionPattern" value="%m,%n "/>
</layout>
</appender>
Points to note:
Trigger for the error to be logged into JDBCAppender - nested exception is java.sql.SQLException: ORA-12899: value too large for column
This error is not logged into JDBCAppender due to ConversionPattern not being a database query.
Below are the stack trace of exceptions from apache wicket, whenever the form is submitted, post the jdbcappender log issue.
Apache Wicket logs:
org.apache.wicket.WicketRuntimeException: Method onFormSubmitted of interface org.apache.wicket.markup.html.form.IFormSubmitListener targeted at [BoardingApplicationForm [Component id = form]] on component [BoardingApplicationForm [Component id = form]] threw an exception
at org.apache.wicket.RequestListenerInterface.internalInvoke(RequestListenerInterface.java:268)
at org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:216)
at org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.invokeListener(ListenerInterfaceRequestHandler.java:243)
at org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.respond(ListenerInterfaceRequestHandler.java:236)
at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:890)
at org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64)
at org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:261)
at org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:218)
at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:289)
at org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:259)
at org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:201)
at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:282)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at com.fdc.boarding.web.filter.ClickjackFilter.doFilter(ClickjackFilter.java:31)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at com.fdc.boarding.web.ui.DisableUrlSessionFilter.doFilter(DisableUrlSessionFilter.java:61)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:231)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149)
at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97)
at org.apache.catalina.authenticator.SingleSignOn.invoke(SingleSignOn.java:395)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:559)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:926)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.GeneratedMethodAccessor274.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.wicket.RequestListenerInterface.internalInvoke(RequestListenerInterface.java:258)
... 32 more
Caused by: java.lang.ArrayIndexOutOfBoundsException