You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@bookkeeper.apache.org by "Sijie Guo (JIRA)" <ji...@apache.org> on 2012/07/09 09:15:34 UTC

[jira] [Commented] (BOOKKEEPER-310) Changes in hedwig server to support JMS spec

    [ https://issues.apache.org/jira/browse/BOOKKEEPER-310?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13409233#comment-13409233 ] 

Sijie Guo commented on BOOKKEEPER-310:
--------------------------------------

reviews for hedwig to support returning message seq id for publish requests are listed as below:

1) protocol changes in BOOKKEEPER-309:

{code}
+    public static PubSubResponse getSuccessResponse(long txnId, PubSubProtocol.MessageSeqId publishedMessageSeqId) {
+        if (null == publishedMessageSeqId) return getBasicBuilder(StatusCode.SUCCESS).setTxnId(txnId).build();
+        PubSubProtocol.PublishResponse publishResponse = PubSubProtocol.PublishResponse.newBuilder().setPublishedMsgId(publishedMessageSeqId).build();
+        PubSubProtocol.ResponseBody responseBody = PubSubProtocol.ResponseBody.newBuilder().setPublishResponse(publishResponse).build();
+        return getBasicBuilder(StatusCode.SUCCESS).setTxnId(txnId).setResponseBody(responseBody).build();
+    }
+
{code}

I would be better to provide a common help method to convert ResponseBody to PubSubResponse. And for PublishResponse, there is special help method to form PublishResponse. It might be:

{code}
// convert response body to pubsub response.
public static PubSubResponse getSuccessResponse(long txnId, PubSubProtocol.ResponseBody respBody);

// form publish response
public static PubSubProtocol.ResponseBody.Builder getPublishResponse(PubSubProtocol.MessageSeqId publishedMessageSeqId);
{code}

2) server changes in BOOKKEEPER-310:

{code}
-            ++latencyBuckets[bucket];
+            // This threw java.lang.ArrayIndexOutOfBoundsException: for me in a test.
+            if (bucket < latencyBuckets.length) ++latencyBuckets[bucket];
{code}

the ArrayIndexOutOfBoundsException is due to time changed, so a negative latency is passed. it would be fixed in BOOKKEEPER-327 and BOOKKEEPER-330 for both hedwig and bookkeeper.

{code}
message.getBody();
+                // Optional to have body : not sure why the dangling call exists ! Flush state ?
+                // if (message.hasBody()) message.getBody();
{code}

seems body is a required field for Message. is there anything special you considered?




                
> Changes in hedwig server to support JMS spec
> --------------------------------------------
>
>                 Key: BOOKKEEPER-310
>                 URL: https://issues.apache.org/jira/browse/BOOKKEEPER-310
>             Project: Bookkeeper
>          Issue Type: Sub-task
>            Reporter: Mridul Muralidharan
>         Attachments: hedwig-server.patch, hedwig-server.patch.1
>
>
> The primary changes are :
> a) Support modified protocol changes (optional body).
> b) Return the published message's seq-id in the response.
> c) Minor bugfix to Array indexing in bucket which was triggered in a testcase.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira