diff options
| author | Alex Rudyy <orudyy@apache.org> | 2014-07-04 01:16:07 +0000 |
|---|---|---|
| committer | Alex Rudyy <orudyy@apache.org> | 2014-07-04 01:16:07 +0000 |
| commit | a2dfed6abeaad71e69d9d73c6db42b47d7d93c66 (patch) | |
| tree | 3d985f74b3e8c434bb65c6517093e944b2ba8b34 /qpid/java/broker-core/src | |
| parent | 29481e51fdbd1a87c7ec75eac8e60ba93028e123 (diff) | |
| download | qpid-python-a2dfed6abeaad71e69d9d73c6db42b47d7d93c66.tar.gz | |
QPID-5867: Add intruder protection functionality for a cluster of BDB HA virtual host nodes
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1607772 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/broker-core/src')
4 files changed, 55 insertions, 3 deletions
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/updater/TaskExecutor.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/updater/TaskExecutor.java index c1e2f59bd8..e0c03fe822 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/updater/TaskExecutor.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/updater/TaskExecutor.java @@ -21,6 +21,7 @@ package org.apache.qpid.server.configuration.updater; import java.util.concurrent.CancellationException; +import java.util.concurrent.Future; public interface TaskExecutor { @@ -40,4 +41,6 @@ public interface TaskExecutor <T> T run(Task<T> task) throws CancellationException; + <T> Future<T> submit(Task<T> task) throws CancellationException; + } diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/updater/TaskExecutorImpl.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/updater/TaskExecutorImpl.java index b140fc4a61..96e4e256b2 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/updater/TaskExecutorImpl.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/updater/TaskExecutorImpl.java @@ -117,7 +117,8 @@ public class TaskExecutorImpl implements TaskExecutor } } - <T> Future<T> submit(Task<T> task) + @Override + public <T> Future<T> submit(Task<T> task) { checkState(); if (LOGGER.isDebugEnabled()) diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractVirtualHostNode.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractVirtualHostNode.java index 44bc923f0e..0cb69e4cd8 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractVirtualHostNode.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractVirtualHostNode.java @@ -88,7 +88,7 @@ public abstract class AbstractVirtualHostNode<X extends AbstractVirtualHostNode< } - @StateTransition( currentState = {State.UNINITIALIZED, State.STOPPED }, desiredState = State.ACTIVE ) + @StateTransition( currentState = {State.UNINITIALIZED, State.STOPPED, State.ERRORED }, desiredState = State.ACTIVE ) private void doActivate() { try @@ -176,9 +176,14 @@ public abstract class AbstractVirtualHostNode<X extends AbstractVirtualHostNode< @StateTransition( currentState = { State.ACTIVE, State.ERRORED, State.UNINITIALIZED }, desiredState = State.STOPPED ) protected void doStop() { + stopAndSetStateTo(State.STOPPED); + } + + protected void stopAndSetStateTo(State stoppedState) + { closeChildren(); closeConfigurationStore(); - _state.set(State.STOPPED); + _state.set(stoppedState); } @Override diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/updater/CurrentThreadTaskExecutor.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/updater/CurrentThreadTaskExecutor.java index 6e21e5325d..4343419505 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/updater/CurrentThreadTaskExecutor.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/updater/CurrentThreadTaskExecutor.java @@ -21,6 +21,10 @@ package org.apache.qpid.server.configuration.updater; import java.util.concurrent.CancellationException; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; import java.util.concurrent.atomic.AtomicReference; public class CurrentThreadTaskExecutor implements TaskExecutor @@ -94,6 +98,45 @@ public class CurrentThreadTaskExecutor implements TaskExecutor return task.execute(); } + @Override + public <T> Future<T> submit(Task<T> task) throws CancellationException + { + checkThread(); + final T result = task.execute(); + return new Future<T>() + { + @Override + public boolean cancel(boolean mayInterruptIfRunning) + { + return true; + } + + @Override + public boolean isCancelled() + { + return false; + } + + @Override + public boolean isDone() + { + return true; + } + + @Override + public T get() throws InterruptedException, ExecutionException + { + return result; + } + + @Override + public T get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException + { + return result; + } + }; + } + public static TaskExecutor newStartedInstance() { TaskExecutor executor = new CurrentThreadTaskExecutor(); |
