Uploaded image for project: 'Wicket'
  1. Wicket
  2. WICKET-6549

Log4j JDBCAppender makes apache wicket form submit to fail

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Critical
    • Resolution: Cannot Reproduce
    • 6.20.0
    • None
    • wicket
    • 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:

      1. On submit of a form button, there was an error - nested exception is java.sql.SQLException: ORA-12899: value too large for column
      2. The above error needs to be logged into JDBCAppender.
      3. The error log fails to log into JDBCAppender due to the conversionPattern not being a database query.
      4. All other users, when they go through the application journey, they submit the same form button as above.
      5. The apache wicket throws error, and restricts the application flow to complete.
      6. 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

       

      Attachments

        Activity

          People

            Unassigned Unassigned
            babkrish Babu Krishnamurthy
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: