UIMA
  1. UIMA
  2. UIMA-1797

UIMA AS processParentLast logic is not working correctly

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 2.3AS
    • Fix Version/s: 2.3.1AS
    • Component/s: Async Scaleout
    • Labels:
      None

      Description

      UIMA AS aggregate fails with NPE when using multiple CMs configured with processParentLast=true. The aggregate throws this:
      java.lang.NullPointerException
      at org.apache.uima.aae.controller.AggregateAnalysisEngineController_impl.forceToDropTheCas(AggregateAnalysisEngineController_impl.java:1822)
      at org.apache.uima.aae.controller.AggregateAnalysisEngineController_impl.finalStep(AggregateAnalysisEngineController_impl.java:1624)
      at org.apache.uima.aae.controller.AggregateAnalysisEngineController_impl.finalStep(AggregateAnalysisEngineController_impl.java:1714)
      at org.apache.uima.aae.controller.AggregateAnalysisEngineController_impl.executeFlowStep(AggregateAnalysisEngineController_impl.java:2175)
      at org.apache.uima.aae.controller.AggregateAnalysisEngineController_impl.process(AggregateAnalysisEngineController_impl.java:1207)
      at org.apache.uima.aae.handler.HandlerBase.invokeProcess(HandlerBase.java:118)
      at org.apache.uima.aae.handler.input.ProcessResponseHandler.cancelTimerAndProcess(ProcessResponseHandler.java:108)
      at org.apache.uima.aae.handler.input.ProcessResponseHandler.handleProcessResponseWithCASReference(ProcessResponseHandler.java:383)
      at org.apache.uima.aae.handler.input.ProcessResponseHandler.handle(ProcessResponseHandler.java:647)
      at org.apache.uima.aae.handler.HandlerBase.delegate(HandlerBase.java:149)
      at org.apache.uima.aae.handler.input.ProcessRequestHandler_impl.handle(ProcessRequestHandler_impl.java:989)
      at org.apache.uima.aae.spi.transport.vm.UimaVmMessageListener.onMessage(UimaVmMessageListener.java:107)
      at org.apache.uima.aae.spi.transport.vm.UimaVmMessageDispatcher$1.run(UimaVmMessageDispatcher.java:70)
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
      at java.lang.Thread.run(Thread.java:619)

      It does not matter if CMs are colocated or remote. If there is more than one CM with processParentLast=true, the code fails as above. The failure seems to occur while processing parent of the last child CAS.

        Activity

        Transition Time In Source Status Execution Times Last Executer Last Execution Date
        Open Open Closed Closed
        18h 10m 1 Jerry Cwiklik 02/Jun/10 14:42
        Marshall Schor made changes -
        Fix Version/s 2.3.1AS [ 12315335 ]
        Jerry Cwiklik made changes -
        Field Original Value New Value
        Status Open [ 1 ] Closed [ 6 ]
        Resolution Fixed [ 1 ]
        Hide
        Jerry Cwiklik added a comment -

        Modified finalStep() to fetch the last delegate that handled a parent CAS to than decide which method to call finalStep() or process(). If the processParentLast=true, process() should be called with a parent CAS reference since it (the parent CAS) was previously "suspended". This call "resumes" processing the parent CAS if all of its children have been processed.

        Show
        Jerry Cwiklik added a comment - Modified finalStep() to fetch the last delegate that handled a parent CAS to than decide which method to call finalStep() or process(). If the processParentLast=true, process() should be called with a parent CAS reference since it (the parent CAS) was previously "suspended". This call "resumes" processing the parent CAS if all of its children have been processed.
        Jerry Cwiklik created issue -

          People

          • Assignee:
            Jerry Cwiklik
            Reporter:
            Jerry Cwiklik
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development