[
https://issues.apache.org/jira/browse/EDGENT-258?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Dale LaBossiere closed EDGENT-258.
----------------------------------
Resolution: Duplicate
Duplicate of EDGENT-435
> 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.4.14#64029)