Updated Branches: refs/heads/trunk 1e289fa0e -> a9d4e649f
Use the correct stream id for error message Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/a9d4e649 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/a9d4e649 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/a9d4e649 Branch: refs/heads/trunk Commit: a9d4e649ffee05d8ce50685bdbc08a6572657194 Parents: 1e289fa Author: Sylvain Lebresne <[email protected]> Authored: Wed Sep 5 15:51:32 2012 +0200 Committer: Sylvain Lebresne <[email protected]> Committed: Wed Sep 5 15:51:32 2012 +0200 ---------------------------------------------------------------------- .../org/apache/cassandra/transport/Message.java | 30 ++++++++++----- 1 files changed, 20 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/a9d4e649/src/java/org/apache/cassandra/transport/Message.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/transport/Message.java b/src/java/org/apache/cassandra/transport/Message.java index 0a51ad2..85de3e4 100644 --- a/src/java/org/apache/cassandra/transport/Message.java +++ b/src/java/org/apache/cassandra/transport/Message.java @@ -124,9 +124,10 @@ public abstract class Message return connection; } - public void setStreamId(int streamId) + public Message setStreamId(int streamId) { this.streamId = streamId; + return this; } public int getStreamId() @@ -197,19 +198,28 @@ public abstract class Message throw new ProtocolException("Invalid response message received, expecting requests"); Request request = (Request)e.getMessage(); - Connection connection = request.connection(); - connection.validateNewMessage(request.type); - logger.debug("Received: " + request); + try + { + Connection connection = request.connection(); + connection.validateNewMessage(request.type); + + logger.debug("Received: " + request); - Response response = request.execute(); - response.setStreamId(request.getStreamId()); - response.attach(connection); - response.connection().applyStateTransition(request.type, response.type); + Response response = request.execute(); + response.setStreamId(request.getStreamId()); + response.attach(connection); + response.connection().applyStateTransition(request.type, response.type); - logger.debug("Responding: " + response); + logger.debug("Responding: " + response); - e.getChannel().write(response); + e.getChannel().write(response); + } + catch (Exception ex) + { + // Don't let the exception propagate to exceptionCaught() if we can help it so that we can assign the right streamID. + e.getChannel().write(ErrorMessage.fromException(ex).setStreamId(request.getStreamId())); + } } @Override
