[ 
https://issues.apache.org/jira/browse/EDGENT-258?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dale LaBossiere updated EDGENT-258:
-----------------------------------
    Description: 
This happened in an (ant) travis-ci run.

The DirectTStreamTest.testMultiTopologyPollWithError() test failed with a 
CancellationException (end of the traces below).  Perhaps that was fallout from 
a CME reported within TrackingScheduledExecutor.cancelAllAsyncTasks() on the 
iteration of asyncTasks @ TrackingScheduledExecutor:121 which is the line:
            for (RunnableScheduledFuture<?> task : asyncTasks) {

(there's also an InterruptedException below)

But I don't see how that CME can happen.  asyncTasks is a (private) 
SynchronizedSet and all iteration on it in TrackingScheduledExecutor does the 
required "synchronized(asyncTasks) { iterate... }" pattern.  The 
SynchronizedSet methods all synchronize on the SynchronizedSet object 
(asyncTasks) too so 
an operation like add() or remove() can't occur during that synchronized 
iteration. All access to the underlying set is via the SynchronizedSet.  So how 
can that CME happen???

The only possible non-CME-inducing flaw I see is in removeTrack() where there's 
the non-synchronized sequential access:
    asyncTasks.remove();
    if (asyncTasks.isEmpty() ...   // hence may not reflect state following 
preceeding remove()

Note, there should normally only be 4 instances reporting "Expected Test 
Exception" but there a 8 (maybe due to removeTrack()?).  Trust me, they're all 
from this test method execution.  I've triple checked :-)

I'm also confused a bit by the thread pool/thread ids reported on those 8 
instances.  Would have expected them to all be associated with the test's 
allocated fixed thread pool and would have expected that to have a single pool 
with 4 thread.  But that doesn't seem to be the case?

Here's the various msgs from the test's execution.  Maybe someone else can 
figure it out.  From 
https://travis-ci.org/apache/incubator-edgent/builds/164076026

    [junit] Sep 30, 2016 4:37:46 PM 
org.apache.edgent.runtime.etiao.TrackingScheduledExecutor afterExecute
    [junit] SEVERE: Thread: 
pool-5-thread-7-0a765e86-37c1-4299-9655-118420e3f1be: task terminated with 
exception : 
    [junit] java.lang.RuntimeException: java.lang.RuntimeException: Expected 
Test Exception
    [junit]     at 
org.apache.edgent.oplet.core.PeriodicSource.run(PeriodicSource.java:83)
    [junit]     at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    [junit]     at 
java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
    [junit]     at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
    [junit]     at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
    [junit]     at 
org.apache.edgent.runtime.etiao.TrackingScheduledExecutor$TrackedFuture.run(TrackingScheduledExecutor.java:205)
    [junit]     at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    [junit]     at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    [junit]     at 
org.apache.edgent.runtime.etiao.ThreadFactoryTracker$2.run(ThreadFactoryTracker.java:87)
    [junit]     at java.lang.Thread.run(Thread.java:745)
    [junit] Caused by: java.lang.RuntimeException: Expected Test Exception
    [junit]     at 
org.apache.edgent.test.topology.TStreamTest.lambda$null$5f279479$1(TStreamTest.java:774)
    [junit]     at 
org.apache.edgent.test.topology.TStreamTest$$Lambda$8/2070622949.accept(Unknown 
Source)
    [junit]     at 
org.apache.edgent.function.Functions$ThreadSafeConsumer.accept(Functions.java:204)
    [junit]     at 
org.apache.edgent.runtime.etiao.SettableForwarder.accept(SettableForwarder.java:54)
    [junit]     at org.apache.edgent.oplet.core.FanOut.accept(FanOut.java:50)
    [junit]     at 
org.apache.edgent.runtime.etiao.SettableForwarder.accept(SettableForwarder.java:54)
    [junit]     at org.apache.edgent.oplet.core.Source.submit(Source.java:47)
    [junit]     at 
org.apache.edgent.oplet.functional.SupplierPeriodicSource.fetchTuples(SupplierPeriodicSource.java:52)
    [junit]     at 
org.apache.edgent.oplet.core.PeriodicSource.run(PeriodicSource.java:81)
    [junit]     ... 9 more



   [junit] Sep 30, 2016 4:37:46 PM 
org.apache.edgent.runtime.etiao.ThreadFactoryTracker 
trackedThreadUncaughtException
    [junit] SEVERE: Uncaught exception in thread 
pool-5-thread-7-0a765e86-37c1-4299-9655-118420e3f1be
    [junit] java.util.ConcurrentModificationException
    [junit]     at java.util.HashMap$HashIterator.nextNode(HashMap.java:1429)
    [junit]     at java.util.HashMap$KeyIterator.next(HashMap.java:1453)
    [junit]     at 
org.apache.edgent.runtime.etiao.TrackingScheduledExecutor.cancelAllAsyncTasks(TrackingScheduledExecutor.java:121)
    [junit]     at 
org.apache.edgent.runtime.etiao.TrackingScheduledExecutor.cleanup(TrackingScheduledExecutor.java:115)
    [junit]     at 
org.apache.edgent.runtime.etiao.TrackingScheduledExecutor.afterExecute(TrackingScheduledExecutor.java:88)
    [junit]     at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1150)
    [junit]     at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    [junit]     at 
org.apache.edgent.runtime.etiao.ThreadFactoryTracker$2.run(ThreadFactoryTracker.java:87)
    [junit]     at java.lang.Thread.run(Thread.java:745)


    [junit] Sep 30, 2016 4:37:46 PM 
org.apache.edgent.runtime.etiao.TrackingScheduledExecutor afterExecute
    [junit] SEVERE: Thread: 
pool-4-thread-15-79a62c35-c201-4800-b5fe-0981a922a901: task terminated with 
exception : 
    [junit] java.lang.RuntimeException: java.lang.RuntimeException: Expected 
Test Exception
...  like the first above

    [junit] Sep 30, 2016 4:37:46 PM 
org.apache.edgent.runtime.etiao.TrackingScheduledExecutor afterExecute
    [junit] SEVERE: Thread: 
pool-5-thread-11-0a765e86-37c1-4299-9655-118420e3f1be: task terminated with 
exception : 
    [junit] java.lang.RuntimeException: java.lang.RuntimeException: Expected 
Test Exception
...

    [junit] Sep 30, 2016 4:37:46 PM org.apache.edgent.runtime.etiao.Executable 
invokeAction
    [junit] SEVERE: Exception caught while waiting for future to complete
    [junit] java.lang.InterruptedException
    [junit]     at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireInterruptibly(AbstractQueuedSynchronizer.java:1220)
    [junit]     at 
java.util.concurrent.locks.ReentrantLock.lockInterruptibly(ReentrantLock.java:335)
    [junit]     at 
java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:462)
    [junit]     at 
java.util.concurrent.ExecutorCompletionService.poll(ExecutorCompletionService.java:202)
    [junit]     at 
org.apache.edgent.runtime.etiao.Executable.invokeAction(Executable.java:222)
    [junit]     at 
org.apache.edgent.runtime.etiao.Executable.start(Executable.java:180)
    [junit]     at 
org.apache.edgent.runtime.etiao.EtiaoJob.stateChange(EtiaoJob.java:107)
    [junit]     at 
org.apache.edgent.providers.direct.DirectTopology.execute(DirectTopology.java:110)
    [junit]     at 
org.apache.edgent.providers.direct.DirectTopology.access$000(DirectTopology.java:46)
    [junit]     at 
org.apache.edgent.providers.direct.DirectTopology$1.call(DirectTopology.java:89)
    [junit]     at 
org.apache.edgent.providers.direct.DirectTopology$1.call(DirectTopology.java:85)
    [junit]     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    [junit]     at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
    [junit]     at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
    [junit]     at 
org.apache.edgent.runtime.etiao.TrackingScheduledExecutor$TrackedFuture.run(TrackingScheduledExecutor.java:205)
    [junit]     at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    [junit]     at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    [junit]     at 
org.apache.edgent.runtime.etiao.ThreadFactoryTracker$2.run(ThreadFactoryTracker.java:87)
    [junit]     at java.lang.Thread.run(Thread.java:745)


   [junit] Sep 30, 2016 4:37:46 PM 
org.apache.edgent.runtime.etiao.TrackingScheduledExecutor afterExecute
    [junit] SEVERE: Thread: 
pool-5-thread-9-0a765e86-37c1-4299-9655-118420e3f1be: task terminated with 
exception : 
    [junit] java.lang.RuntimeException: java.lang.RuntimeException: Expected 
Test Exception
...

   [junit] Sep 30, 2016 4:37:46 PM 
org.apache.edgent.runtime.etiao.TrackingScheduledExecutor afterExecute
    [junit] SEVERE: Thread: 
pool-4-thread-7-79a62c35-c201-4800-b5fe-0981a922a901: task terminated with 
exception : 
    [junit] java.lang.RuntimeException: java.lang.RuntimeException: Expected 
Test Exception
... 

   [junit] Sep 30, 2016 4:37:46 PM 
org.apache.edgent.runtime.etiao.TrackingScheduledExecutor afterExecute
    [junit] SEVERE: Thread: 
pool-5-thread-8-0a765e86-37c1-4299-9655-118420e3f1be: task terminated with 
exception : 
    [junit] java.lang.RuntimeException: java.lang.RuntimeException: Expected 
Test Exception
...

    [junit] Sep 30, 2016 4:37:46 PM 
org.apache.edgent.runtime.etiao.TrackingScheduledExecutor afterExecute
    [junit] SEVERE: Thread: 
pool-4-thread-8-79a62c35-c201-4800-b5fe-0981a922a901: task terminated with 
exception : 
    [junit] java.lang.RuntimeException: java.lang.RuntimeException: Expected 
Test Exception
...

   [junit] Sep 30, 2016 4:37:46 PM 
org.apache.edgent.runtime.etiao.TrackingScheduledExecutor afterExecute
    [junit] SEVERE: Thread: 
pool-4-thread-1-79a62c35-c201-4800-b5fe-0981a922a901: task terminated with 
exception : 
    [junit] java.lang.RuntimeException: java.lang.RuntimeException: Expected 
Test Exception
...

   [junit] Sep 30, 2016 4:37:46 PM 
org.apache.edgent.runtime.etiao.TrackingScheduledExecutor afterExecute
    [junit] SEVERE: Thread: 
pool-2-thread-1-b0a11f1a-309f-48d3-a0cc-72ccd245fefd: task terminated with 
exception : 
    [junit] java.lang.RuntimeException: java.lang.RuntimeException: Expected 
Test Exception
... 

==================================
Reported test failure:

    [junit] Testcase: 
testMultiTopologyPollWithError(org.apache.edgent.test.providers.direct.topology.DirectTStreamTest):
       Caused an ERROR
    [junit] java.util.concurrent.CancellationException
    [junit] java.util.concurrent.ExecutionException: 
java.util.concurrent.CancellationException
    [junit]     at java.util.concurrent.FutureTask.report(FutureTask.java:122)
    [junit]     at java.util.concurrent.FutureTask.get(FutureTask.java:192)
    [junit]     at 
org.apache.edgent.test.topology.TStreamTest.waitForCompletion(TStreamTest.java:867)
    [junit]     at 
org.apache.edgent.test.topology.TStreamTest.testMultiTopologyPollWithError(TStreamTest.java:781)
    [junit] Caused by: java.util.concurrent.CancellationException
    [junit]     at java.util.concurrent.FutureTask.report(FutureTask.java:121)
    [junit]     at java.util.concurrent.FutureTask.get(FutureTask.java:206)
    [junit]     at 
org.apache.edgent.runtime.etiao.TrackingScheduledExecutor$TrackedFuture.get(TrackingScheduledExecutor.java:255)
    [junit]     at 
org.apache.edgent.topology.spi.tester.AbstractTester.complete(AbstractTester.java:46)
    [junit]     at 
org.apache.edgent.test.topology.TopologyAbstractTest.complete(TopologyAbstractTest.java:72)
    [junit]     at 
org.apache.edgent.test.topology.TopologyAbstractTest.complete(TopologyAbstractTest.java:76)
    [junit]     at 
org.apache.edgent.test.topology.TStreamTest.lambda$testMultiTopologyPollWithError$2(TStreamTest.java:777)
    [junit]     at 
org.apache.edgent.test.topology.TStreamTest$$Lambda$1/1233595751.call(Unknown 
Source)
    [junit]     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    [junit]     at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    [junit]     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    [junit]     at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    [junit]     at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    [junit]     at java.lang.Thread.run(Thread.java:745)
    [junit] 



  was:
This happened in an (ant) travis-ci run.

The DirectTStreamTest.testMultiTopologyPollWithError() test failed with a 
CancellationException (end of the traces below).  Perhaps that was fallout from 
a CME reported within TrackingScheduledExecutor.cancelAllAsyncTasks() on the 
iteration of asyncTasks @ TrackingScheduledExecutor:121 which is the line:
            for (RunnableScheduledFuture<?> task : asyncTasks) {

(there's also an InterruptedException below)

But I don't see how that CME can happen.  asyncTasks is a (private) 
SynchronizedSet and all iteration on it in TrackingScheduledExecutor does the 
required "synchronized(asyncTasks) { iterate... }" pattern.  The 
SynchronizedSet methods all synchronize on the SynchronizedSet object 
(asyncTasks) too so 
an operation like add() or remove() can't occur during that synchronized 
iteration. All access to the underlying set is via the SynchronizedSet.  So how 
can that CME happen???

The only possible non-CME-inducing flaw I see is in removeTrack() where there's 
the non-synchronized sequential access:
    asyncTasks.remove();
    if (asyncTasks.isEmpty() ...   // hence may not reflect state following 
preceeding remove()

Note, there should normally only be 4 instances reporting "Expected Test 
Exception" but there a 8 (maybe due to removeTrack()?).  Trust me, they're all 
from this test method execution.  I've triple checked :-)

I'm also confused a bit by the thread pool/thread ids reported on those 8 
instances.  Would have expected them to all be associated with the test's 
allocated fixed thread pool and would have expected that to have a single pool 
with 4 thread.  But that doesn't seem to be the case?

Here's the various msgs from the test's execution.  Maybe someone else can 
figure it out.

    [junit] Sep 30, 2016 4:37:46 PM 
org.apache.edgent.runtime.etiao.TrackingScheduledExecutor afterExecute
    [junit] SEVERE: Thread: 
pool-5-thread-7-0a765e86-37c1-4299-9655-118420e3f1be: task terminated with 
exception : 
    [junit] java.lang.RuntimeException: java.lang.RuntimeException: Expected 
Test Exception
    [junit]     at 
org.apache.edgent.oplet.core.PeriodicSource.run(PeriodicSource.java:83)
    [junit]     at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    [junit]     at 
java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
    [junit]     at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
    [junit]     at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
    [junit]     at 
org.apache.edgent.runtime.etiao.TrackingScheduledExecutor$TrackedFuture.run(TrackingScheduledExecutor.java:205)
    [junit]     at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    [junit]     at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    [junit]     at 
org.apache.edgent.runtime.etiao.ThreadFactoryTracker$2.run(ThreadFactoryTracker.java:87)
    [junit]     at java.lang.Thread.run(Thread.java:745)
    [junit] Caused by: java.lang.RuntimeException: Expected Test Exception
    [junit]     at 
org.apache.edgent.test.topology.TStreamTest.lambda$null$5f279479$1(TStreamTest.java:774)
    [junit]     at 
org.apache.edgent.test.topology.TStreamTest$$Lambda$8/2070622949.accept(Unknown 
Source)
    [junit]     at 
org.apache.edgent.function.Functions$ThreadSafeConsumer.accept(Functions.java:204)
    [junit]     at 
org.apache.edgent.runtime.etiao.SettableForwarder.accept(SettableForwarder.java:54)
    [junit]     at org.apache.edgent.oplet.core.FanOut.accept(FanOut.java:50)
    [junit]     at 
org.apache.edgent.runtime.etiao.SettableForwarder.accept(SettableForwarder.java:54)
    [junit]     at org.apache.edgent.oplet.core.Source.submit(Source.java:47)
    [junit]     at 
org.apache.edgent.oplet.functional.SupplierPeriodicSource.fetchTuples(SupplierPeriodicSource.java:52)
    [junit]     at 
org.apache.edgent.oplet.core.PeriodicSource.run(PeriodicSource.java:81)
    [junit]     ... 9 more



   [junit] Sep 30, 2016 4:37:46 PM 
org.apache.edgent.runtime.etiao.ThreadFactoryTracker 
trackedThreadUncaughtException
    [junit] SEVERE: Uncaught exception in thread 
pool-5-thread-7-0a765e86-37c1-4299-9655-118420e3f1be
    [junit] java.util.ConcurrentModificationException
    [junit]     at java.util.HashMap$HashIterator.nextNode(HashMap.java:1429)
    [junit]     at java.util.HashMap$KeyIterator.next(HashMap.java:1453)
    [junit]     at 
org.apache.edgent.runtime.etiao.TrackingScheduledExecutor.cancelAllAsyncTasks(TrackingScheduledExecutor.java:121)
    [junit]     at 
org.apache.edgent.runtime.etiao.TrackingScheduledExecutor.cleanup(TrackingScheduledExecutor.java:115)
    [junit]     at 
org.apache.edgent.runtime.etiao.TrackingScheduledExecutor.afterExecute(TrackingScheduledExecutor.java:88)
    [junit]     at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1150)
    [junit]     at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    [junit]     at 
org.apache.edgent.runtime.etiao.ThreadFactoryTracker$2.run(ThreadFactoryTracker.java:87)
    [junit]     at java.lang.Thread.run(Thread.java:745)


    [junit] Sep 30, 2016 4:37:46 PM 
org.apache.edgent.runtime.etiao.TrackingScheduledExecutor afterExecute
    [junit] SEVERE: Thread: 
pool-4-thread-15-79a62c35-c201-4800-b5fe-0981a922a901: task terminated with 
exception : 
    [junit] java.lang.RuntimeException: java.lang.RuntimeException: Expected 
Test Exception
...  like the first above

    [junit] Sep 30, 2016 4:37:46 PM 
org.apache.edgent.runtime.etiao.TrackingScheduledExecutor afterExecute
    [junit] SEVERE: Thread: 
pool-5-thread-11-0a765e86-37c1-4299-9655-118420e3f1be: task terminated with 
exception : 
    [junit] java.lang.RuntimeException: java.lang.RuntimeException: Expected 
Test Exception
...

    [junit] Sep 30, 2016 4:37:46 PM org.apache.edgent.runtime.etiao.Executable 
invokeAction
    [junit] SEVERE: Exception caught while waiting for future to complete
    [junit] java.lang.InterruptedException
    [junit]     at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireInterruptibly(AbstractQueuedSynchronizer.java:1220)
    [junit]     at 
java.util.concurrent.locks.ReentrantLock.lockInterruptibly(ReentrantLock.java:335)
    [junit]     at 
java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:462)
    [junit]     at 
java.util.concurrent.ExecutorCompletionService.poll(ExecutorCompletionService.java:202)
    [junit]     at 
org.apache.edgent.runtime.etiao.Executable.invokeAction(Executable.java:222)
    [junit]     at 
org.apache.edgent.runtime.etiao.Executable.start(Executable.java:180)
    [junit]     at 
org.apache.edgent.runtime.etiao.EtiaoJob.stateChange(EtiaoJob.java:107)
    [junit]     at 
org.apache.edgent.providers.direct.DirectTopology.execute(DirectTopology.java:110)
    [junit]     at 
org.apache.edgent.providers.direct.DirectTopology.access$000(DirectTopology.java:46)
    [junit]     at 
org.apache.edgent.providers.direct.DirectTopology$1.call(DirectTopology.java:89)
    [junit]     at 
org.apache.edgent.providers.direct.DirectTopology$1.call(DirectTopology.java:85)
    [junit]     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    [junit]     at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
    [junit]     at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
    [junit]     at 
org.apache.edgent.runtime.etiao.TrackingScheduledExecutor$TrackedFuture.run(TrackingScheduledExecutor.java:205)
    [junit]     at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    [junit]     at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    [junit]     at 
org.apache.edgent.runtime.etiao.ThreadFactoryTracker$2.run(ThreadFactoryTracker.java:87)
    [junit]     at java.lang.Thread.run(Thread.java:745)


   [junit] Sep 30, 2016 4:37:46 PM 
org.apache.edgent.runtime.etiao.TrackingScheduledExecutor afterExecute
    [junit] SEVERE: Thread: 
pool-5-thread-9-0a765e86-37c1-4299-9655-118420e3f1be: task terminated with 
exception : 
    [junit] java.lang.RuntimeException: java.lang.RuntimeException: Expected 
Test Exception
...

   [junit] Sep 30, 2016 4:37:46 PM 
org.apache.edgent.runtime.etiao.TrackingScheduledExecutor afterExecute
    [junit] SEVERE: Thread: 
pool-4-thread-7-79a62c35-c201-4800-b5fe-0981a922a901: task terminated with 
exception : 
    [junit] java.lang.RuntimeException: java.lang.RuntimeException: Expected 
Test Exception
... 

   [junit] Sep 30, 2016 4:37:46 PM 
org.apache.edgent.runtime.etiao.TrackingScheduledExecutor afterExecute
    [junit] SEVERE: Thread: 
pool-5-thread-8-0a765e86-37c1-4299-9655-118420e3f1be: task terminated with 
exception : 
    [junit] java.lang.RuntimeException: java.lang.RuntimeException: Expected 
Test Exception
...

    [junit] Sep 30, 2016 4:37:46 PM 
org.apache.edgent.runtime.etiao.TrackingScheduledExecutor afterExecute
    [junit] SEVERE: Thread: 
pool-4-thread-8-79a62c35-c201-4800-b5fe-0981a922a901: task terminated with 
exception : 
    [junit] java.lang.RuntimeException: java.lang.RuntimeException: Expected 
Test Exception
...

   [junit] Sep 30, 2016 4:37:46 PM 
org.apache.edgent.runtime.etiao.TrackingScheduledExecutor afterExecute
    [junit] SEVERE: Thread: 
pool-4-thread-1-79a62c35-c201-4800-b5fe-0981a922a901: task terminated with 
exception : 
    [junit] java.lang.RuntimeException: java.lang.RuntimeException: Expected 
Test Exception
...

   [junit] Sep 30, 2016 4:37:46 PM 
org.apache.edgent.runtime.etiao.TrackingScheduledExecutor afterExecute
    [junit] SEVERE: Thread: 
pool-2-thread-1-b0a11f1a-309f-48d3-a0cc-72ccd245fefd: task terminated with 
exception : 
    [junit] java.lang.RuntimeException: java.lang.RuntimeException: Expected 
Test Exception
... 

==================================
Reported test failure:

    [junit] Testcase: 
testMultiTopologyPollWithError(org.apache.edgent.test.providers.direct.topology.DirectTStreamTest):
       Caused an ERROR
    [junit] java.util.concurrent.CancellationException
    [junit] java.util.concurrent.ExecutionException: 
java.util.concurrent.CancellationException
    [junit]     at java.util.concurrent.FutureTask.report(FutureTask.java:122)
    [junit]     at java.util.concurrent.FutureTask.get(FutureTask.java:192)
    [junit]     at 
org.apache.edgent.test.topology.TStreamTest.waitForCompletion(TStreamTest.java:867)
    [junit]     at 
org.apache.edgent.test.topology.TStreamTest.testMultiTopologyPollWithError(TStreamTest.java:781)
    [junit] Caused by: java.util.concurrent.CancellationException
    [junit]     at java.util.concurrent.FutureTask.report(FutureTask.java:121)
    [junit]     at java.util.concurrent.FutureTask.get(FutureTask.java:206)
    [junit]     at 
org.apache.edgent.runtime.etiao.TrackingScheduledExecutor$TrackedFuture.get(TrackingScheduledExecutor.java:255)
    [junit]     at 
org.apache.edgent.topology.spi.tester.AbstractTester.complete(AbstractTester.java:46)
    [junit]     at 
org.apache.edgent.test.topology.TopologyAbstractTest.complete(TopologyAbstractTest.java:72)
    [junit]     at 
org.apache.edgent.test.topology.TopologyAbstractTest.complete(TopologyAbstractTest.java:76)
    [junit]     at 
org.apache.edgent.test.topology.TStreamTest.lambda$testMultiTopologyPollWithError$2(TStreamTest.java:777)
    [junit]     at 
org.apache.edgent.test.topology.TStreamTest$$Lambda$1/1233595751.call(Unknown 
Source)
    [junit]     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    [junit]     at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    [junit]     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    [junit]     at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    [junit]     at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    [junit]     at java.lang.Thread.run(Thread.java:745)
    [junit] 




> testMultiTopologyPollWithError failure; CME in 
> TrackingScheduledExecutor.cancelAllAsyncTasks()
> ----------------------------------------------------------------------------------------------
>
>                 Key: EDGENT-258
>                 URL: https://issues.apache.org/jira/browse/EDGENT-258
>             Project: Edgent
>          Issue Type: Bug
>          Components: Runtime, Test
>            Reporter: Dale LaBossiere
>
> This happened in an (ant) travis-ci run.
> The DirectTStreamTest.testMultiTopologyPollWithError() test failed with a 
> CancellationException (end of the traces below).  Perhaps that was fallout 
> from a CME reported within TrackingScheduledExecutor.cancelAllAsyncTasks() on 
> the iteration of asyncTasks @ TrackingScheduledExecutor:121 which is the line:
>             for (RunnableScheduledFuture<?> task : asyncTasks) {
> (there's also an InterruptedException below)
> But I don't see how that CME can happen.  asyncTasks is a (private) 
> SynchronizedSet and all iteration on it in TrackingScheduledExecutor does the 
> required "synchronized(asyncTasks) { iterate... }" pattern.  The 
> SynchronizedSet methods all synchronize on the SynchronizedSet object 
> (asyncTasks) too so 
> an operation like add() or remove() can't occur during that synchronized 
> iteration. All access to the underlying set is via the SynchronizedSet.  So 
> how can that CME happen???
> The only possible non-CME-inducing flaw I see is in removeTrack() where 
> there's the non-synchronized sequential access:
>     asyncTasks.remove();
>     if (asyncTasks.isEmpty() ...   // hence may not reflect state following 
> preceeding remove()
> Note, there should normally only be 4 instances reporting "Expected Test 
> Exception" but there a 8 (maybe due to removeTrack()?).  Trust me, they're 
> all from this test method execution.  I've triple checked :-)
> I'm also confused a bit by the thread pool/thread ids reported on those 8 
> instances.  Would have expected them to all be associated with the test's 
> allocated fixed thread pool and would have expected that to have a single 
> pool with 4 thread.  But that doesn't seem to be the case?
> Here's the various msgs from the test's execution.  Maybe someone else can 
> figure it out.  From 
> https://travis-ci.org/apache/incubator-edgent/builds/164076026
>     [junit] Sep 30, 2016 4:37:46 PM 
> org.apache.edgent.runtime.etiao.TrackingScheduledExecutor afterExecute
>     [junit] SEVERE: Thread: 
> pool-5-thread-7-0a765e86-37c1-4299-9655-118420e3f1be: task terminated with 
> exception : 
>     [junit] java.lang.RuntimeException: java.lang.RuntimeException: Expected 
> Test Exception
>     [junit]   at 
> org.apache.edgent.oplet.core.PeriodicSource.run(PeriodicSource.java:83)
>     [junit]   at 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
>     [junit]   at 
> java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
>     [junit]   at 
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
>     [junit]   at 
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
>     [junit]   at 
> org.apache.edgent.runtime.etiao.TrackingScheduledExecutor$TrackedFuture.run(TrackingScheduledExecutor.java:205)
>     [junit]   at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>     [junit]   at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>     [junit]   at 
> org.apache.edgent.runtime.etiao.ThreadFactoryTracker$2.run(ThreadFactoryTracker.java:87)
>     [junit]   at java.lang.Thread.run(Thread.java:745)
>     [junit] Caused by: java.lang.RuntimeException: Expected Test Exception
>     [junit]   at 
> org.apache.edgent.test.topology.TStreamTest.lambda$null$5f279479$1(TStreamTest.java:774)
>     [junit]   at 
> org.apache.edgent.test.topology.TStreamTest$$Lambda$8/2070622949.accept(Unknown
>  Source)
>     [junit]   at 
> org.apache.edgent.function.Functions$ThreadSafeConsumer.accept(Functions.java:204)
>     [junit]   at 
> org.apache.edgent.runtime.etiao.SettableForwarder.accept(SettableForwarder.java:54)
>     [junit]   at org.apache.edgent.oplet.core.FanOut.accept(FanOut.java:50)
>     [junit]   at 
> org.apache.edgent.runtime.etiao.SettableForwarder.accept(SettableForwarder.java:54)
>     [junit]   at org.apache.edgent.oplet.core.Source.submit(Source.java:47)
>     [junit]   at 
> org.apache.edgent.oplet.functional.SupplierPeriodicSource.fetchTuples(SupplierPeriodicSource.java:52)
>     [junit]   at 
> org.apache.edgent.oplet.core.PeriodicSource.run(PeriodicSource.java:81)
>     [junit]   ... 9 more
>    [junit] Sep 30, 2016 4:37:46 PM 
> org.apache.edgent.runtime.etiao.ThreadFactoryTracker 
> trackedThreadUncaughtException
>     [junit] SEVERE: Uncaught exception in thread 
> pool-5-thread-7-0a765e86-37c1-4299-9655-118420e3f1be
>     [junit] java.util.ConcurrentModificationException
>     [junit]   at java.util.HashMap$HashIterator.nextNode(HashMap.java:1429)
>     [junit]   at java.util.HashMap$KeyIterator.next(HashMap.java:1453)
>     [junit]   at 
> org.apache.edgent.runtime.etiao.TrackingScheduledExecutor.cancelAllAsyncTasks(TrackingScheduledExecutor.java:121)
>     [junit]   at 
> org.apache.edgent.runtime.etiao.TrackingScheduledExecutor.cleanup(TrackingScheduledExecutor.java:115)
>     [junit]   at 
> org.apache.edgent.runtime.etiao.TrackingScheduledExecutor.afterExecute(TrackingScheduledExecutor.java:88)
>     [junit]   at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1150)
>     [junit]   at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>     [junit]   at 
> org.apache.edgent.runtime.etiao.ThreadFactoryTracker$2.run(ThreadFactoryTracker.java:87)
>     [junit]   at java.lang.Thread.run(Thread.java:745)
>     [junit] Sep 30, 2016 4:37:46 PM 
> org.apache.edgent.runtime.etiao.TrackingScheduledExecutor afterExecute
>     [junit] SEVERE: Thread: 
> pool-4-thread-15-79a62c35-c201-4800-b5fe-0981a922a901: task terminated with 
> exception : 
>     [junit] java.lang.RuntimeException: java.lang.RuntimeException: Expected 
> Test Exception
> ...  like the first above
>     [junit] Sep 30, 2016 4:37:46 PM 
> org.apache.edgent.runtime.etiao.TrackingScheduledExecutor afterExecute
>     [junit] SEVERE: Thread: 
> pool-5-thread-11-0a765e86-37c1-4299-9655-118420e3f1be: task terminated with 
> exception : 
>     [junit] java.lang.RuntimeException: java.lang.RuntimeException: Expected 
> Test Exception
> ...
>     [junit] Sep 30, 2016 4:37:46 PM 
> org.apache.edgent.runtime.etiao.Executable invokeAction
>     [junit] SEVERE: Exception caught while waiting for future to complete
>     [junit] java.lang.InterruptedException
>     [junit]   at 
> java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireInterruptibly(AbstractQueuedSynchronizer.java:1220)
>     [junit]   at 
> java.util.concurrent.locks.ReentrantLock.lockInterruptibly(ReentrantLock.java:335)
>     [junit]   at 
> java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:462)
>     [junit]   at 
> java.util.concurrent.ExecutorCompletionService.poll(ExecutorCompletionService.java:202)
>     [junit]   at 
> org.apache.edgent.runtime.etiao.Executable.invokeAction(Executable.java:222)
>     [junit]   at 
> org.apache.edgent.runtime.etiao.Executable.start(Executable.java:180)
>     [junit]   at 
> org.apache.edgent.runtime.etiao.EtiaoJob.stateChange(EtiaoJob.java:107)
>     [junit]   at 
> org.apache.edgent.providers.direct.DirectTopology.execute(DirectTopology.java:110)
>     [junit]   at 
> org.apache.edgent.providers.direct.DirectTopology.access$000(DirectTopology.java:46)
>     [junit]   at 
> org.apache.edgent.providers.direct.DirectTopology$1.call(DirectTopology.java:89)
>     [junit]   at 
> org.apache.edgent.providers.direct.DirectTopology$1.call(DirectTopology.java:85)
>     [junit]   at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>     [junit]   at 
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
>     [junit]   at 
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
>     [junit]   at 
> org.apache.edgent.runtime.etiao.TrackingScheduledExecutor$TrackedFuture.run(TrackingScheduledExecutor.java:205)
>     [junit]   at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>     [junit]   at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>     [junit]   at 
> org.apache.edgent.runtime.etiao.ThreadFactoryTracker$2.run(ThreadFactoryTracker.java:87)
>     [junit]   at java.lang.Thread.run(Thread.java:745)
>    [junit] Sep 30, 2016 4:37:46 PM 
> org.apache.edgent.runtime.etiao.TrackingScheduledExecutor afterExecute
>     [junit] SEVERE: Thread: 
> pool-5-thread-9-0a765e86-37c1-4299-9655-118420e3f1be: task terminated with 
> exception : 
>     [junit] java.lang.RuntimeException: java.lang.RuntimeException: Expected 
> Test Exception
> ...
>    [junit] Sep 30, 2016 4:37:46 PM 
> org.apache.edgent.runtime.etiao.TrackingScheduledExecutor afterExecute
>     [junit] SEVERE: Thread: 
> pool-4-thread-7-79a62c35-c201-4800-b5fe-0981a922a901: task terminated with 
> exception : 
>     [junit] java.lang.RuntimeException: java.lang.RuntimeException: Expected 
> Test Exception
> ... 
>    [junit] Sep 30, 2016 4:37:46 PM 
> org.apache.edgent.runtime.etiao.TrackingScheduledExecutor afterExecute
>     [junit] SEVERE: Thread: 
> pool-5-thread-8-0a765e86-37c1-4299-9655-118420e3f1be: task terminated with 
> exception : 
>     [junit] java.lang.RuntimeException: java.lang.RuntimeException: Expected 
> Test Exception
> ...
>     [junit] Sep 30, 2016 4:37:46 PM 
> org.apache.edgent.runtime.etiao.TrackingScheduledExecutor afterExecute
>     [junit] SEVERE: Thread: 
> pool-4-thread-8-79a62c35-c201-4800-b5fe-0981a922a901: task terminated with 
> exception : 
>     [junit] java.lang.RuntimeException: java.lang.RuntimeException: Expected 
> Test Exception
> ...
>    [junit] Sep 30, 2016 4:37:46 PM 
> org.apache.edgent.runtime.etiao.TrackingScheduledExecutor afterExecute
>     [junit] SEVERE: Thread: 
> pool-4-thread-1-79a62c35-c201-4800-b5fe-0981a922a901: task terminated with 
> exception : 
>     [junit] java.lang.RuntimeException: java.lang.RuntimeException: Expected 
> Test Exception
> ...
>    [junit] Sep 30, 2016 4:37:46 PM 
> org.apache.edgent.runtime.etiao.TrackingScheduledExecutor afterExecute
>     [junit] SEVERE: Thread: 
> pool-2-thread-1-b0a11f1a-309f-48d3-a0cc-72ccd245fefd: task terminated with 
> exception : 
>     [junit] java.lang.RuntimeException: java.lang.RuntimeException: Expected 
> Test Exception
> ... 
> ==================================
> Reported test failure:
>     [junit] Testcase: 
> testMultiTopologyPollWithError(org.apache.edgent.test.providers.direct.topology.DirectTStreamTest):
>      Caused an ERROR
>     [junit] java.util.concurrent.CancellationException
>     [junit] java.util.concurrent.ExecutionException: 
> java.util.concurrent.CancellationException
>     [junit]   at java.util.concurrent.FutureTask.report(FutureTask.java:122)
>     [junit]   at java.util.concurrent.FutureTask.get(FutureTask.java:192)
>     [junit]   at 
> org.apache.edgent.test.topology.TStreamTest.waitForCompletion(TStreamTest.java:867)
>     [junit]   at 
> org.apache.edgent.test.topology.TStreamTest.testMultiTopologyPollWithError(TStreamTest.java:781)
>     [junit] Caused by: java.util.concurrent.CancellationException
>     [junit]   at java.util.concurrent.FutureTask.report(FutureTask.java:121)
>     [junit]   at java.util.concurrent.FutureTask.get(FutureTask.java:206)
>     [junit]   at 
> org.apache.edgent.runtime.etiao.TrackingScheduledExecutor$TrackedFuture.get(TrackingScheduledExecutor.java:255)
>     [junit]   at 
> org.apache.edgent.topology.spi.tester.AbstractTester.complete(AbstractTester.java:46)
>     [junit]   at 
> org.apache.edgent.test.topology.TopologyAbstractTest.complete(TopologyAbstractTest.java:72)
>     [junit]   at 
> org.apache.edgent.test.topology.TopologyAbstractTest.complete(TopologyAbstractTest.java:76)
>     [junit]   at 
> org.apache.edgent.test.topology.TStreamTest.lambda$testMultiTopologyPollWithError$2(TStreamTest.java:777)
>     [junit]   at 
> org.apache.edgent.test.topology.TStreamTest$$Lambda$1/1233595751.call(Unknown 
> Source)
>     [junit]   at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>     [junit]   at 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
>     [junit]   at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>     [junit]   at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>     [junit]   at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>     [junit]   at java.lang.Thread.run(Thread.java:745)
>     [junit] 



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

Reply via email to