You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ta...@apache.org on 2015/01/13 21:37:11 UTC
qpid-jms git commit: Better handling of close on a resource that was
remotely closed already.
Repository: qpid-jms
Updated Branches:
refs/heads/master 05d83c6f7 -> a3ae2856c
Better handling of close on a resource that was remotely closed already.
Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/a3ae2856
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/a3ae2856
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/a3ae2856
Branch: refs/heads/master
Commit: a3ae2856c67b6ad18ce684175929ffbd57c1d2e3
Parents: 05d83c6
Author: Timothy Bish <ta...@gmail.com>
Authored: Tue Jan 13 15:36:26 2015 -0500
Committer: Timothy Bish <ta...@gmail.com>
Committed: Tue Jan 13 15:36:53 2015 -0500
----------------------------------------------------------------------
.../jms/provider/amqp/AmqpAbstractResource.java | 23 ++++++++++++++------
.../qpid/jms/provider/amqp/AmqpConnection.java | 2 ++
2 files changed, 18 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/a3ae2856/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpAbstractResource.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpAbstractResource.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpAbstractResource.java
index cd15122..090fb1a 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpAbstractResource.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpAbstractResource.java
@@ -99,7 +99,15 @@ public abstract class AmqpAbstractResource<R extends JmsResource, E extends Endp
@Override
public void close(AsyncResult request) {
// If already closed signal success or else the caller might never get notified.
- if (getEndpoint().getLocalState() == EndpointState.CLOSED) {
+ if (getEndpoint().getLocalState() == EndpointState.CLOSED ||
+ getEndpoint().getRemoteState() == EndpointState.CLOSED) {
+
+ // Remote already closed this resource, close locally and free.
+ if (getEndpoint().getLocalState() != EndpointState.CLOSED) {
+ doClose();
+ getEndpoint().free();
+ }
+
request.onSuccess();
return;
}
@@ -137,9 +145,9 @@ public abstract class AmqpAbstractResource<R extends JmsResource, E extends Endp
@Override
public void failed(Exception cause) {
if (openRequest != null) {
- if(endpoint != null) {
- //TODO: if this is a producer/consumer link then we may only be detached,
- //rather than fully closed, and should respond appropriately.
+ if (endpoint != null) {
+ // TODO: if this is a producer/consumer link then we may only be detached,
+ // rather than fully closed, and should respond appropriately.
endpoint.close();
}
openRequest.onFailure(cause);
@@ -160,9 +168,9 @@ public abstract class AmqpAbstractResource<R extends JmsResource, E extends Endp
error = new IOException("Remote has closed without error information");
}
- if(endpoint != null) {
- //TODO: if this is a producer/consumer link then we may only be detached,
- //rather than fully closed, and should respond appropriately.
+ if (endpoint != null) {
+ // TODO: if this is a producer/consumer link then we may only be detached,
+ // rather than fully closed, and should respond appropriately.
endpoint.close();
}
@@ -171,6 +179,7 @@ public abstract class AmqpAbstractResource<R extends JmsResource, E extends Endp
}
// TODO - We need a way to signal that the remote closed unexpectedly.
+ LOG.info("Resource was remotely closed");
}
public E getEndpoint() {
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/a3ae2856/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpConnection.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpConnection.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpConnection.java
index 2f7bf05..4c1d60e 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpConnection.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpConnection.java
@@ -153,8 +153,10 @@ public class AmqpConnection extends AmqpAbstractResource<JmsConnectionInfo, Conn
LOG.info("Error condition detected on Connection open {}.", getEndpoint().getRemoteCondition().getCondition());
Exception remoteError = getRemoteError();
if (isAwaitingOpen()) {
+ doClose();
openRequest.onFailure(remoteError);
} else {
+ doClose();
provider.fireProviderException(remoteError);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org