[ 
https://issues.apache.org/jira/browse/NIFI-740?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14623533#comment-14623533
 ] 

Toivo Adams commented on NIFI-740:
----------------------------------

I modified heavily test flow XML files and now almost all 
StandardFlowServiceTest tests run successfully.
Well, only when run one by one (one at time).

When running them all at once, third, fourth and fifth test fail with same 
error:

java.lang.RuntimeException: java.nio.channels.OverlappingFileLockException
        at 
org.apache.nifi.controller.FlowController.createFlowFileRepository(FlowController.java:512)
        at 
org.apache.nifi.controller.FlowController.<init>(FlowController.java:394)
        at 
org.apache.nifi.controller.FlowController.createStandaloneInstance(FlowController.java:347)
        at 
org.apache.nifi.controller.StandardFlowServiceTest.setup(StandardFlowServiceTest.java:70)
        . . .
apache.nifi.controller.repository.WriteAheadFlowFileRepository.initialize(WriteAheadFlowFileRepository.java:138)
        at 
org.apache.nifi.controller.FlowController.createFlowFileRepository(FlowController.java:508)
        ... 27 more

I added following to  StandardFlowServiceTest

    @After
    public void stop() {
        flowController.stopAllProcessors();
        flowController.shutdown(true);
        flowService.stop(true);
    }

And now tests are failing with:

org.apache.nifi.controller.FlowSynchronizationException: 
java.lang.IllegalStateException: The specified observer identifier already 
exists.
        at 
org.apache.nifi.controller.StandardFlowSynchronizer.sync(StandardFlowSynchronizer.java:317)
        at 
org.apache.nifi.controller.FlowController.synchronize(FlowController.java:1156)
        at 
org.apache.nifi.persistence.StandardXMLFlowConfigurationDAO.load(StandardXMLFlowConfigurationDAO.java:72)
        at 
org.apache.nifi.controller.StandardFlowService.loadFromBytes(StandardFlowService.java:608)
        at 
org.apache.nifi.controller.StandardFlowService.load(StandardFlowService.java:458)
        at 
org.apache.nifi.controller.StandardFlowServiceTest.testLoadExistingFlow(StandardFlowServiceTest.java:105)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at 
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
        at 
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
        at 
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
        at 
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
        at 
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
        at 
org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
        at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
        at 
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
        at 
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
        at 
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
        at 
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
        at 
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
        at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
        at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
        at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
        at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
Caused by: java.lang.IllegalStateException: The specified observer identifier 
already exists.
        at 
org.apache.nifi.logging.repository.StandardLogRepository.addObserver(StandardLogRepository.java:131)
        at 
org.apache.nifi.controller.FlowController.createProcessor(FlowController.java:823)
        at 
org.apache.nifi.controller.StandardFlowSynchronizer.addProcessGroup(StandardFlowSynchronizer.java:774)
        at 
org.apache.nifi.controller.StandardFlowSynchronizer.sync(StandardFlowSynchronizer.java:271)
        ... 31 more

Looking FlowController code I noticed createProcessor will add observer
        logRepository.addObserver(StandardProcessorNode.BULLETIN_OBSERVER_ID, 
LogLevel.WARN, new ProcessorLogObserver(getBulletinRepository(), procNode));

But I did not found anywhere in the code removeObserver() method call.
Don't know, is this bug or intended behaviour.

Thanks
Toivo

> StandardFlowServiceTest need to be updated.
> -------------------------------------------
>
>                 Key: NIFI-740
>                 URL: https://issues.apache.org/jira/browse/NIFI-740
>             Project: Apache NiFi
>          Issue Type: Bug
>          Components: Core Framework
>            Reporter: Toivo Adams
>            Assignee: Toivo Adams
>            Priority: Minor
>             Fix For: 0.3.0
>
>
> Currently 
> /nifi-framework-core/src/test/java/org/apache/nifi/controller/StandardFlowServiceTest.java
>  :
> [Error] :22:16: cvc-complex-type.2.4.a: Invalid content was found starting 
> with element 'style'. One of '{comment}' is expected. 
> [Error] :28:20: cvc-complex-type.2.4.a: Invalid content was found starting 
> with element 'style'. One of '{styles}' is expected. 
> [Error] :46:20: cvc-complex-type.2.4.a: Invalid content was found starting 
> with element 'style'. One of '{styles}' is expected. 
> [Error] :69:20: cvc-complex-type.2.4.a: Invalid content was found starting 
> with element 'style'. One of '{comments}' is expected. 
> [Error] :75:20: cvc-complex-type.2.4.a: Invalid content was found starting 
> with element 'style'. One of '{comments}' is expected. 
> [Error] :80:20: cvc-complex-type.2.4.a: Invalid content was found starting 
> with element 'style'. One of '{size}' is expected. 
> [Error] :87:20: cvc-complex-type.2.4.a: Invalid content was found starting 
> with element 'style'. One of '{comment}' is expected. 
> [Error] :93:24: cvc-complex-type.2.4.a: Invalid content was found starting 
> with element 'style'. One of '{styles}' is expected. 
> [Error] :112:24: cvc-complex-type.2.4.a: Invalid content was found starting 
> with element 'style'. One of '{comments}' is expected. 
> [Error] :118:24: cvc-complex-type.2.4.a: Invalid content was found starting 
> with element 'style'. One of '{comments}' is expected. 
> [Error] :126:25: cvc-complex-type.2.4.a: Invalid content was found starting 
> with element 'style'. One of '{sourceId}' is expected. 
> [Error] :142:20: cvc-complex-type.2.4.a: Invalid content was found starting 
> with element 'style'. One of '{comment}' is expected. 
> [Error] :152:21: cvc-complex-type.2.4.a: Invalid content was found starting 
> with element 'style'. One of '{sourceId}' is expected. 
> [Error] :169:21: cvc-complex-type.2.4.a: Invalid content was found starting 
> with element 'style'. One of '{sourceId}' is expected. 
> [Error] :186:21: cvc-complex-type.2.4.a: Invalid content was found starting 
> with element 'style'. One of '{sourceId}' is expected. 
> And finally public void testLoadExistingFlow() test fails: 
> org.apache.nifi.controller.FlowSynchronizationException: 
> java.lang.NullPointerException: Name is null 
>         at 
> org.apache.nifi.controller.StandardFlowSynchronizer.sync(StandardFlowSynchronizer.java:317)
>  
>         at 
> org.apache.nifi.controller.FlowController.synchronize(FlowController.java:1154)
>  
>         at 
> org.apache.nifi.persistence.StandardXMLFlowConfigurationDAO.load(StandardXMLFlowConfigurationDAO.java:72)
>  
>         at 
> org.apache.nifi.controller.StandardFlowService.loadFromBytes(StandardFlowService.java:608)
>  
>         at 
> org.apache.nifi.controller.StandardFlowService.load(StandardFlowService.java:458)
>  
>         at 
> org.apache.nifi.controller.StandardFlowServiceTest.testLoadExistingFlow(StandardFlowServiceTest.java:98)
>  
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
>         at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>  
>         at java.lang.reflect.Method.invoke(Method.java:606) 
>         at 
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
>  
>         at 
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
>  
>         at 
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
>  
>         at 
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
>  
>         at 
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) 
>         at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) 
>         at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
>  
>         at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
>  
>         at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) 
>         at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) 
>         at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) 
>         at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) 
>         at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) 
>         at 
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) 
>         at org.junit.runners.ParentRunner.run(ParentRunner.java:363) 
>         at 
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
>  
>         at 
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
>  
>         at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
>  
>         at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
>  
>         at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
>  
>         at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
>  
> Caused by: java.lang.NullPointerException: Name is null 
>         at java.lang.Enum.valueOf(Enum.java:235) 
>         at 
> org.apache.nifi.controller.ScheduledState.valueOf(ScheduledState.java:1) 
>         at 
> org.apache.nifi.controller.FlowFromDOMFactory.getScheduledState(FlowFromDOMFactory.java:444)
>  
>         at 
> org.apache.nifi.controller.FlowFromDOMFactory.getProcessor(FlowFromDOMFactory.java:356)
>  
>         at 
> org.apache.nifi.controller.FlowFromDOMFactory.getProcessGroup(FlowFromDOMFactory.java:147)
>  
>         at 
> org.apache.nifi.controller.StandardFlowSynchronizer.addProcessGroup(StandardFlowSynchronizer.java:758)
>  
>         at 
> org.apache.nifi.controller.StandardFlowSynchronizer.sync(StandardFlowSynchronizer.java:271)
>  
>         ... 30 more 
> Possibly flow files used for testing 
> "/conf/all-flow.xml" 
> "/conf/all-flow-inheritable.xml"
> etc
> need to be updated to comply with newer FlowConfiguration.xsd requirements. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to