Uploaded image for project: 'DSpace'
  1. DSpace
  2. DS-785

SWORD deposits fail when ingest events are fired if Discovery event consumer is configured

    Details

    • Attachments:
      1
    • Comments:
      11
    • Documentation Status:
      Not Required

      Description

      If "discovery" is configured in the dspace.cfg property "event.dispatcher.default.consumers" and a SWORD deposit is made, dspace-services seems to have trouble starting DSpaceKernelManager / the kernel itself properly.

      Eg.

      (start SWORD deposit...)

      2010-12-16 09:58:06,104 INFO org.dspace.sword.SWORDService @ [2010-12-16 09:58:06.104] Workflow process started;
      2010-12-16 09:58:06,105 INFO org.dspace.sword.SWORDService @ [2010-12-16 09:58:06.105] Updated date added to response from item metadata where available;
      2010-12-16 09:58:06,105 INFO org.dspace.content.Item @ kim.shepherd@gmail.com:session_id=0:ip_addr=127.0.0.1:update_item:item_id=86729
      2010-12-16 09:58:06,110 INFO org.dspace.sword.SWORDService @ [2010-12-16 09:58:06.110] Ingest successful;
      2010-12-16 09:58:06,110 INFO org.dspace.sword.SWORDService @ [2010-12-16 09:58:06.110] Item created with internal identifier: 86729;
      2010-12-16 09:58:06,110 INFO org.dspace.sword.SWORDService @ [2010-12-16 09:58:06.110] No external identifier available at this stage (item in workflow);
      2010-12-16 09:58:06,110 INFO org.dspace.sword.SWORDService @ [2010-12-16 09:58:06.110] Archive ingest completed successfully;
      2010-12-16 09:58:06,110 INFO org.dspace.sword.SWORDService @ [2010-12-16 09:58:06.110] Initialising ATOM entry generator for an Item;
      2010-12-16 09:58:06,116 INFO org.dspace.sword.SWORDService @ [2010-12-16 09:58:06.116] Total time for deposit processing: 478 ms;

      (...looks good so far, but...)

      2010-12-16 09:58:06,118 ERROR org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/sword].[deposit] @ Servlet.service() for servlet deposit threw exception
      java.lang.NoClassDefFoundError: Could not initialize class org.dspace.kernel.DSpaceKernelManager
      at org.dspace.utils.DSpace.<init>(DSpace.java:57)
      at org.dspace.utils.DSpace.<init>(DSpace.java:46)
      at org.dspace.discovery.IndexEventConsumer.<init>(IndexEventConsumer.java:41)
      at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
      at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
      at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
      at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
      at java.lang.Class.newInstance0(Class.java:355)
      at java.lang.Class.newInstance(Class.java:308)
      at org.dspace.event.ConsumerProfile.readConfiguration(ConsumerProfile.java:87)
      at org.dspace.event.ConsumerProfile.makeConsumerProfile(ConsumerProfile.java:62)
      at org.dspace.event.EventManager$DispatcherPoolFactory.makeObject(EventManager.java:227)
      at org.apache.commons.pool.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:964)
      at org.apache.commons.pool.PoolUtils$SynchronizedKeyedObjectPool.borrowObject(PoolUtils.java:1159)
      at org.dspace.event.EventManager.getDispatcher(EventManager.java:111)
      at org.dspace.core.Context.commit(Context.java:333)
      at org.dspace.sword.SWORDContext.commit(SWORDContext.java:178)
      at org.dspace.sword.DSpaceSWORDServer.doDeposit(DSpaceSWORDServer.java:123)
      at org.purl.sword.server.DepositServlet.doPost(DepositServlet.java:299)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
      at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875)
      at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
      at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
      at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
      at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
      at java.lang.Thread.run(Thread.java:619)

        Attachments

          Activity

          Hide
          kshepherd Kim Shepherd added a comment - - edited

          [i've edited this comment as some instructions were unnecessary -- it is recommended to apply the attached patch instead]

          Show
          kshepherd Kim Shepherd added a comment - - edited [i've edited this comment as some instructions were unnecessary -- it is recommended to apply the attached patch instead]
          Hide
          kshepherd Kim Shepherd added a comment -

          After chatting with Mark and testing more, I realised the Spring stuff is unnecessary – all we need in this case is the new DSpaceKernelServletContextListener included as a listener, dspace-services-impl included as a dependency of dspace-sword-api, and an exclusion for slf4j in dspace-sword-api's dspace-api dependency.

          I've tested this smaller change, and it's working well. Patch will be committed to trunk and 1_7_x shortly

          Show
          kshepherd Kim Shepherd added a comment - After chatting with Mark and testing more, I realised the Spring stuff is unnecessary – all we need in this case is the new DSpaceKernelServletContextListener included as a listener, dspace-services-impl included as a dependency of dspace-sword-api, and an exclusion for slf4j in dspace-sword-api's dspace-api dependency. I've tested this smaller change, and it's working well. Patch will be committed to trunk and 1_7_x shortly
          Hide
          kshepherd Kim Shepherd added a comment -

          Patch against trunk and 1_7_x branch

          Show
          kshepherd Kim Shepherd added a comment - Patch against trunk and 1_7_x branch
          Hide
          kshepherd Kim Shepherd added a comment -

          Committed to trunk (6175) and 1_7_x (6176)

          Show
          kshepherd Kim Shepherd added a comment - Committed to trunk (6175) and 1_7_x (6176)
          Hide
          kshepherd Kim Shepherd added a comment -

          Resolving.

          Show
          kshepherd Kim Shepherd added a comment - Resolving.

            People

            • Assignee:
              kshepherd Kim Shepherd
              Reporter:
              kshepherd Kim Shepherd
            • Votes:
              2 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: