You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Alex Rudyy (JIRA)" <ji...@apache.org> on 2016/10/24 12:11:59 UTC
[jira] [Updated] (QPID-7396) [Java Broker] Await actual shutdown of
TaskExecutor
[ https://issues.apache.org/jira/browse/QPID-7396?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Alex Rudyy updated QPID-7396:
-----------------------------
Fix Version/s: (was: qpid-java-6.1)
qpid-java-6.2
> [Java Broker] Await actual shutdown of TaskExecutor
> ---------------------------------------------------
>
> Key: QPID-7396
> URL: https://issues.apache.org/jira/browse/QPID-7396
> Project: Qpid
> Issue Type: Bug
> Components: Java Broker
> Affects Versions: qpid-java-6.1
> Reporter: Lorenz Quack
> Priority: Minor
> Fix For: qpid-java-6.2
>
> Attachments: 0001-QPID-7396-Java-Broker-Await-actual-shutdown-of-TaskE.patch
>
>
> When calling {{TaskExecutorImpl#stop()}} or {{TaskExecutorImpl#stopImmediately()}} we call {{shutdown()}} or {{shutdownNow()}} on the underlying {{ExecutorService}}.
> According to the [documentation|https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ExecutorService.html] these calls do not wait for the actual shutdown to happen. For this one must call {{ExecutorService#awaitTermination()}} (see example in the documentaion).
> I think this could cause a race condition for example in the UserPreference:
> * There is a task on the executor when the virtual host is being stopped
> * The executor is being shutdown but we do not await the termination
> * After the call to {{TaskExecutor#stop()}} we close the PreferenceStore
> * The task on the executor could still be executing leading to an {{IllegalStateException}} in the {{PreferenceStore}} or worse.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org