)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1000327,"name":"Michael Nitschinger","email":"michael.nitschinger@couchbase.com","username":"daschl","avatars":[{"url":"https://www.gravatar.com/avatar/ca669dcaa36c077d54b96af979d77b9d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/ca669dcaa36c077d54b96af979d77b9d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/ca669dcaa36c077d54b96af979d77b9d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/ca669dcaa36c077d54b96af979d77b9d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"e511fa2dd369dd359a4730d96136880261225ff9","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Philipp Fehre \u003cphilipp@fehre.co.uk\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-03-10 18:13:54 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Support Libmemcached ketama weighted"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"- Add support for alternative Ketama Node key format"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"f6df48f0_83774e0d","line":7,"updated":"2015-03-11 08:41:59.000000000","message":"Please create a SPY ticket on jira and if you could follow the \n\nMotivation, Modifications, Result format of the other commit messages that would be great.","commit_id":"a67a19394682c7d27d3accc6c894fe9a91c808ea"}],"src/main/java/net/spy/memcached/KetamaConnectionFactory.java":[{"author":{"_account_id":1000327,"name":"Michael Nitschinger","email":"michael.nitschinger@couchbase.com","username":"daschl","avatars":[{"url":"https://www.gravatar.com/avatar/ca669dcaa36c077d54b96af979d77b9d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/ca669dcaa36c077d54b96af979d77b9d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/ca669dcaa36c077d54b96af979d77b9d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/ca669dcaa36c077d54b96af979d77b9d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"e511fa2dd369dd359a4730d96136880261225ff9","unresolved":false,"context_lines":[{"line_number":43,"context_line":" */"},{"line_number":44,"context_line":"public class KetamaConnectionFactory extends DefaultConnectionFactory {"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    private KetamaNodeKeyFormat.Format ketamaNodeKeyFormat;"},{"line_number":47,"context_line":"    private Map\u003cInetSocketAddress, Integer\u003e weights;"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"  /**"}],"source_content_type":"text/x-java","patch_set":2,"id":"f6df48f0_43716615","line":46,"updated":"2015-03-11 08:41:59.000000000","message":"fields should be made final","commit_id":"a67a19394682c7d27d3accc6c894fe9a91c808ea"}],"src/main/java/net/spy/memcached/KetamaNodeKeyFormat.java":[{"author":{"_account_id":1000327,"name":"Michael Nitschinger","email":"michael.nitschinger@couchbase.com","username":"daschl","avatars":[{"url":"https://www.gravatar.com/avatar/ca669dcaa36c077d54b96af979d77b9d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/ca669dcaa36c077d54b96af979d77b9d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/ca669dcaa36c077d54b96af979d77b9d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/ca669dcaa36c077d54b96af979d77b9d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"e511fa2dd369dd359a4730d96136880261225ff9","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        return format;"},{"line_number":37,"context_line":"    }"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    public enum Format { SPYMEMCACHED, LIBMEMCACHED }"},{"line_number":40,"context_line":"    /**"},{"line_number":41,"context_line":"     * SPYMEMCACHED uses the format traditionally used by spymemcached to map"},{"line_number":42,"context_line":"     * nodes to names. The format is HOSTNAME/IP:PORT-ITERATION"}],"source_content_type":"text/x-java","patch_set":2,"id":"f6df48f0_236c6242","line":39,"updated":"2015-03-11 08:41:59.000000000","message":"Hmm somehow it is odd that you are using it in a getter (the inner class) like KetamaNodeKeyFormat.Format\n\nmaybe you could rename this class to \"formatter\"?","commit_id":"a67a19394682c7d27d3accc6c894fe9a91c808ea"}],"src/main/java/net/spy/memcached/KetamaNodeLocator.java":[{"author":{"_account_id":1000327,"name":"Michael Nitschinger","email":"michael.nitschinger@couchbase.com","username":"daschl","avatars":[{"url":"https://www.gravatar.com/avatar/ca669dcaa36c077d54b96af979d77b9d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/ca669dcaa36c077d54b96af979d77b9d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/ca669dcaa36c077d54b96af979d77b9d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/ca669dcaa36c077d54b96af979d77b9d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"6f1ec7eb43915abe99a58010022ceceb9b6e3fa8","unresolved":false,"context_lines":[{"line_number":224,"context_line":"    int numReps \u003d config.getNodeRepetitions();"},{"line_number":225,"context_line":"    int nodeCount \u003d nodes.size();"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"    if (isWeightedKetama \u0026\u0026 totalWeight \u003d\u003d 0) {"},{"line_number":228,"context_line":"        for (MemcachedNode node : nodes) {"},{"line_number":229,"context_line":"            totalWeight +\u003d weights.get(node.getSocketAddress());"},{"line_number":230,"context_line":"        }"}],"source_content_type":"text/x-java","patch_set":5,"id":"dbf0ada0_c2e932e9","line":227,"updated":"2015-05-12 21:15:22.000000000","message":"as disucssed it makes sense to move the totalWeight into a local field only since its not on the hot code path","commit_id":"67bf3792c3edd5abd0bf862379b9602ec8ba9283"},{"author":{"_account_id":1000327,"name":"Michael Nitschinger","email":"michael.nitschinger@couchbase.com","username":"daschl","avatars":[{"url":"https://www.gravatar.com/avatar/ca669dcaa36c077d54b96af979d77b9d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/ca669dcaa36c077d54b96af979d77b9d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/ca669dcaa36c077d54b96af979d77b9d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/ca669dcaa36c077d54b96af979d77b9d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"6f1ec7eb43915abe99a58010022ceceb9b6e3fa8","unresolved":false,"context_lines":[{"line_number":239,"context_line":"          for (int i \u003d 0; i \u003c pointerPerServer / 4; i++) {"},{"line_number":240,"context_line":"              byte[] digest \u003d DefaultHashAlgorithm.computeMd5(config.getKeyForNode(node, i));"},{"line_number":241,"context_line":"              for (int h \u003d 0; h \u003c 4; h++) {"},{"line_number":242,"context_line":"                  Long k \u003d ((long) (digest[3 + h * 4] \u0026 0xFF) \u003c\u003c 24)"},{"line_number":243,"context_line":"                      | ((long) (digest[2 + h * 4] \u0026 0xFF) \u003c\u003c 16)"},{"line_number":244,"context_line":"                      | ((long) (digest[1 + h * 4] \u0026 0xFF) \u003c\u003c 8)"},{"line_number":245,"context_line":"                      | (digest[h * 4] \u0026 0xFF);"}],"source_content_type":"text/x-java","patch_set":5,"id":"dbf0ada0_a2e6a616","line":242,"updated":"2015-05-12 21:15:22.000000000","message":"since weighted and unweighted now use the same block code here this can be moved into a helper method","commit_id":"67bf3792c3edd5abd0bf862379b9602ec8ba9283"}]}
