summaryrefslogtreecommitdiff
path: root/qpid/java/broker-core/src
diff options
context:
space:
mode:
authorAlex Rudyy <orudyy@apache.org>2014-07-04 01:16:07 +0000
committerAlex Rudyy <orudyy@apache.org>2014-07-04 01:16:07 +0000
commita2dfed6abeaad71e69d9d73c6db42b47d7d93c66 (patch)
tree3d985f74b3e8c434bb65c6517093e944b2ba8b34 /qpid/java/broker-core/src
parent29481e51fdbd1a87c7ec75eac8e60ba93028e123 (diff)
downloadqpid-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')
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/updater/TaskExecutor.java3
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/updater/TaskExecutorImpl.java3
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractVirtualHostNode.java9
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/updater/CurrentThreadTaskExecutor.java43
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();