edgent-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dale LaBossiere (JIRA)" <j...@apache.org>
Subject [jira] [Created] (EDGENT-402) App doesn't stop cleanly
Date Tue, 28 Mar 2017 14:27:43 GMT
Dale LaBossiere created EDGENT-402:
--------------------------------------

             Summary: App doesn't stop cleanly
                 Key: EDGENT-402
                 URL: https://issues.apache.org/jira/browse/EDGENT-402
             Project: Edgent
          Issue Type: Bug
          Components: Runtime
            Reporter: Dale LaBossiere


I had an IotProvider based app that upon receiving a "stop application" edgentControl command
did stop, and could subsequently be restarted ok, but shutdown with Severe log entries.

It appears that the PeriodicSource oplet's run() terminated due to a presumably-job-close-induced
interrupted exception and that exception was then propagated as a runtime exception and caught
an reported by the java executor.

Perhaps some additional exception "filtering" should be done by oplets run() if interrupted-exception
means "stop"?

Or maybe the problem was with behavior of the Isolate at the end of the pipeline and its behavior
after getting an interrupted exception waiting on its blocking queue?  

In the traceback below my app code generates up to the flatMap.  After that it's a result
of using IotProvider generated (PubSub) IotDevice.events() to publish the tuples from the
flatMap.

{code}
poll() -> filter() -> map() -> peek() -> flatMap() -> [IotDevice.events() map()
-> events -> isolate ]
{code}

{code}
Mar 27, 2017 2:56:10 PM org.apache.edgent.runtime.etiao.TrackingScheduledExecutor afterExecute
SEVERE: Thread: pool-4-thread-70-face-detect: task terminated with exception : 
java.lang.RuntimeException: java.lang.RuntimeException: java.lang.InterruptedException
	at org.apache.edgent.oplet.core.PeriodicSource.run(PeriodicSource.java:83)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
	at org.apache.edgent.runtime.etiao.TrackingScheduledExecutor$TrackedFuture.run(TrackingScheduledExecutor.java:205)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at org.apache.edgent.runtime.etiao.ThreadFactoryTracker$2.run(ThreadFactoryTracker.java:87)
	at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.RuntimeException: java.lang.InterruptedException
	at org.apache.edgent.oplet.plumbing.Isolate.accept(Isolate.java:79)
	at org.apache.edgent.runtime.etiao.SettableForwarder.accept(SettableForwarder.java:54)
	at org.apache.edgent.oplet.core.Source.submit(Source.java:47)
	at org.apache.edgent.oplet.functional.Events.accept(Events.java:78)
	at org.apache.edgent.connectors.pubsub.service.TopicHandler.accept(TopicHandler.java:47)
	at org.apache.edgent.runtime.etiao.SettableForwarder.accept(SettableForwarder.java:54)
	at org.apache.edgent.oplet.core.Pipe.submit(Pipe.java:65)
	at org.apache.edgent.oplet.functional.Map.accept(Map.java:47)
	at org.apache.edgent.runtime.etiao.SettableForwarder.accept(SettableForwarder.java:54)
	at org.apache.edgent.oplet.core.Pipe.submit(Pipe.java:65)
	at org.apache.edgent.oplet.functional.FlatMap.accept(FlatMap.java:57)
	at org.apache.edgent.runtime.etiao.SettableForwarder.accept(SettableForwarder.java:54)
	at org.apache.edgent.oplet.core.Pipe.submit(Pipe.java:65)
	at org.apache.edgent.oplet.core.Peek.accept(Peek.java:38)
	at org.apache.edgent.runtime.etiao.SettableForwarder.accept(SettableForwarder.java:54)
	at org.apache.edgent.oplet.core.Pipe.submit(Pipe.java:65)
	at org.apache.edgent.oplet.functional.Map.accept(Map.java:47)
	at org.apache.edgent.runtime.etiao.SettableForwarder.accept(SettableForwarder.java:54)
	at org.apache.edgent.oplet.core.Pipe.submit(Pipe.java:65)
	at org.apache.edgent.oplet.functional.Filter.accept(Filter.java:37)
	at org.apache.edgent.runtime.etiao.SettableForwarder.accept(SettableForwarder.java:54)
	at org.apache.edgent.oplet.core.Source.submit(Source.java:47)
	at org.apache.edgent.oplet.functional.SupplierPeriodicSource.fetchTuples(SupplierPeriodicSource.java:52)
	at org.apache.edgent.oplet.core.PeriodicSource.run(PeriodicSource.java:81)
	... 9 more
Caused by: java.lang.InterruptedException
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireInterruptibly(AbstractQueuedSynchronizer.java:1220)
	at java.util.concurrent.locks.ReentrantLock.lockInterruptibly(ReentrantLock.java:335)
	at java.util.concurrent.LinkedBlockingQueue.put(LinkedBlockingQueue.java:339)
	at org.apache.edgent.oplet.plumbing.Isolate.accept(Isolate.java:76)
	... 32 more
{code}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Mime
View raw message