[
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)