)]}'
{"src/main/java/net/spy/memcached/MembaseClient.java":[{"author":{"_account_id":1000013,"name":"Matt Ingenthron","email":"ingenthr@gmail.com","username":"ingenthr","avatars":[{"url":"https://www.gravatar.com/avatar/dface45e4481ef6bd571492fa3b4ef8c.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/dface45e4481ef6bd571492fa3b4ef8c.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/dface45e4481ef6bd571492fa3b4ef8c.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/dface45e4481ef6bd571492fa3b4ef8c.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"834ba98864a15813aa83b1c8a7d291ba7c718158","unresolved":false,"context_lines":[{"line_number":273,"context_line":"  @Override"},{"line_number":274,"context_line":"  public int getNumVBuckets() {"},{"line_number":275,"context_line":"    return ((MembaseConnectionFactory)connFactory).getVBucketConfig()"},{"line_number":276,"context_line":"      .getVbucketsCount();"},{"line_number":277,"context_line":"  }"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"  @Override"}],"source_content_type":"text/x-java","patch_set":2,"id":"AAABjX%2F%2F%2Bbk%3D","line":276,"updated":"2011-09-13 05:13:52.000000000","message":"I\u0027m not certain this is right.  It\u0027ll certainly give the current vbucket configuration count, but that\u0027s updated by another thread and allows observation of configuration changes, as things like this could change.  \n\nBefore approving this change, I\u0027d need to know more about what the other side of the interface is expecting to do with the vbucket count.  Generally speaking vbuckets are an abstraction the client shouldn\u0027t be aware of.  We\u0027re leaking that abstraction way too much already, and adding a public method to just give up more details on it doesn\u0027t sound good to me.\n\nThere\u0027s quite possibly a rational explanation, I just can\u0027t see it from here.","commit_id":"0921fa2b1832ff4dea44bc4c5a9df2c7ad892588"},{"author":{"_account_id":1000136,"name":"Mike Wiederhold","email":"mike@couchbase.com","username":"mikewied","avatars":[{"url":"https://www.gravatar.com/avatar/337c57dab3946ecdea245eaabfe99a17.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/337c57dab3946ecdea245eaabfe99a17.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/337c57dab3946ecdea245eaabfe99a17.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/337c57dab3946ecdea245eaabfe99a17.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"d578787ec7d664bb9879134d92f96b3695542839","unresolved":false,"context_lines":[{"line_number":273,"context_line":"  @Override"},{"line_number":274,"context_line":"  public int getNumVBuckets() {"},{"line_number":275,"context_line":"    return ((MembaseConnectionFactory)connFactory).getVBucketConfig()"},{"line_number":276,"context_line":"      .getVbucketsCount();"},{"line_number":277,"context_line":"  }"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"  @Override"}],"source_content_type":"text/x-java","patch_set":2,"id":"AAABjX%2F%2F%2BOg%3D","line":276,"in_reply_to":"AAABjX%2F%2F%2BQE%3D","updated":"2011-09-14 17:54:02.000000000","message":"I don\u0027t really like maxConcurrency because you can theoretically create as many tap streams as you want from the tap client. Eg.\n\nwhile (true) {\n  client.tapBackfill();\n}\n\nSo having maxConcurrency here to me doesn\u0027t really make sense.\n\nAlso, this is more important that throughput. Mappers also split things into different files in hdfs.","commit_id":"0921fa2b1832ff4dea44bc4c5a9df2c7ad892588"},{"author":{"_account_id":1000013,"name":"Matt Ingenthron","email":"ingenthr@gmail.com","username":"ingenthr","avatars":[{"url":"https://www.gravatar.com/avatar/dface45e4481ef6bd571492fa3b4ef8c.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/dface45e4481ef6bd571492fa3b4ef8c.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/dface45e4481ef6bd571492fa3b4ef8c.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/dface45e4481ef6bd571492fa3b4ef8c.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"4a9c71974f380d0a735957d68cb17ebdc81a4432","unresolved":false,"context_lines":[{"line_number":273,"context_line":"  @Override"},{"line_number":274,"context_line":"  public int getNumVBuckets() {"},{"line_number":275,"context_line":"    return ((MembaseConnectionFactory)connFactory).getVBucketConfig()"},{"line_number":276,"context_line":"      .getVbucketsCount();"},{"line_number":277,"context_line":"  }"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"  @Override"}],"source_content_type":"text/x-java","patch_set":2,"id":"AAABjX%2F%2F%2BQE%3D","line":276,"in_reply_to":"AAABjX%2F%2F%2BWA%3D","updated":"2011-09-14 16:00:27.000000000","message":"Does there need to be a 1:1 between hadoop mappers and vbuckets, or is that just out of trying to get good throughput?  I\u0027ll look out for the change.  That make some sense now, but it may be better to talk about it in terms of int maxConcurrency or something like that from the TapClient class.\n\nTAP is, theoretically, not vbucket specific either.\n\nSorry to be holding it up, but want it to be right.","commit_id":"0921fa2b1832ff4dea44bc4c5a9df2c7ad892588"},{"author":{"_account_id":1000136,"name":"Mike Wiederhold","email":"mike@couchbase.com","username":"mikewied","avatars":[{"url":"https://www.gravatar.com/avatar/337c57dab3946ecdea245eaabfe99a17.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/337c57dab3946ecdea245eaabfe99a17.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/337c57dab3946ecdea245eaabfe99a17.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/337c57dab3946ecdea245eaabfe99a17.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"e962fd42812a4b2bb0276a895694fe374431bd59","unresolved":false,"context_lines":[{"line_number":273,"context_line":"  @Override"},{"line_number":274,"context_line":"  public int getNumVBuckets() {"},{"line_number":275,"context_line":"    return ((MembaseConnectionFactory)connFactory).getVBucketConfig()"},{"line_number":276,"context_line":"      .getVbucketsCount();"},{"line_number":277,"context_line":"  }"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"  @Override"}],"source_content_type":"text/x-java","patch_set":2,"id":"AAABjX%2F%2F%2BWA%3D","line":276,"in_reply_to":"AAABjX%2F%2F%2Bbk%3D","updated":"2011-09-13 19:41:28.000000000","message":"Now that I think about it this should be moved to the TapClient class, but the reasoning is that I need to be able to split up the work between a given amount of hadoop mappers. The only way to do this is to start multiple tap streams and tell them to tap a given set of vBuckets. This is impossible to do without knowing how many vBuckets the server has. I\u0027ll update this patch set with a few changes, but this change in some form is mandatory for the hadoop connector too function usefully.","commit_id":"0921fa2b1832ff4dea44bc4c5a9df2c7ad892588"},{"author":{"_account_id":1000013,"name":"Matt Ingenthron","email":"ingenthr@gmail.com","username":"ingenthr","avatars":[{"url":"https://www.gravatar.com/avatar/dface45e4481ef6bd571492fa3b4ef8c.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/dface45e4481ef6bd571492fa3b4ef8c.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/dface45e4481ef6bd571492fa3b4ef8c.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/dface45e4481ef6bd571492fa3b4ef8c.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"53655c1f2a07e32c632ed78af2429e076651d80a","unresolved":false,"context_lines":[{"line_number":276,"context_line":"   * are few use cases in which it is necessary."},{"line_number":277,"context_line":"   */"},{"line_number":278,"context_line":"  @Override"},{"line_number":279,"context_line":"  public int getNumVBuckets() {"},{"line_number":280,"context_line":"    return ((MembaseConnectionFactory)connFactory).getVBucketConfig()"},{"line_number":281,"context_line":"      .getVbucketsCount();"},{"line_number":282,"context_line":"  }"}],"source_content_type":"text/x-java","patch_set":4,"id":"AAABjX%2F%2F%2BCM%3D","line":279,"updated":"2011-09-16 01:56:39.000000000","message":"Recommend renaming to getCurrNumVBuckets() or currVBucketsNum() since it\u0027s less an accessor.  No huge opinion on this though.\n\nAlso, recommend saying that it\u0027s the current number of vbuckets.  Those could, theoretically, change while the client is connected to the cluster.  It\u0027s a further signal that you can\u0027t always rely on this number.","commit_id":"0b59859cad895a48da530812ba3033e052fe2539"},{"author":{"_account_id":1000000,"name":"Dustin Sallings","email":"dustin@spy.net","username":"dustin","avatars":[{"url":"https://www.gravatar.com/avatar/995543cb35c3b92a2eb43275116815a7.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/995543cb35c3b92a2eb43275116815a7.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/995543cb35c3b92a2eb43275116815a7.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/995543cb35c3b92a2eb43275116815a7.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"77ec9f06fe93a23060059e3c487b213ebf4578dc","unresolved":false,"context_lines":[{"line_number":276,"context_line":"   * are few use cases in which it is necessary."},{"line_number":277,"context_line":"   */"},{"line_number":278,"context_line":"  @Override"},{"line_number":279,"context_line":"  public int getNumVBuckets() {"},{"line_number":280,"context_line":"    return ((MembaseConnectionFactory)connFactory).getVBucketConfig()"},{"line_number":281,"context_line":"      .getVbucketsCount();"},{"line_number":282,"context_line":"  }"}],"source_content_type":"text/x-java","patch_set":4,"id":"AAABjX%2F%2F%2BA0%3D","line":279,"in_reply_to":"AAABjX%2F%2F%2BCM%3D","updated":"2011-09-16 07:18:39.000000000","message":"I\u0027m a bit less worried about that.  You need to keep a decent backlog of stuff to point back at me and say \"told you so\", though.  :)","commit_id":"0b59859cad895a48da530812ba3033e052fe2539"}],"src/test/java/net/spy/memcached/MembaseClientTest.java":[{"author":{"_account_id":1000013,"name":"Matt Ingenthron","email":"ingenthr@gmail.com","username":"ingenthr","avatars":[{"url":"https://www.gravatar.com/avatar/dface45e4481ef6bd571492fa3b4ef8c.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/dface45e4481ef6bd571492fa3b4ef8c.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/dface45e4481ef6bd571492fa3b4ef8c.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/dface45e4481ef6bd571492fa3b4ef8c.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"834ba98864a15813aa83b1c8a7d291ba7c718158","unresolved":false,"context_lines":[{"line_number":62,"context_line":"  }"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"  public void testNumVBuckets() throws Exception {"},{"line_number":65,"context_line":"    assert ((MembaseClient)client).getNumVBuckets() \u003d\u003d 1024;"},{"line_number":66,"context_line":"  }"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"  protected void syncGetTimeoutsInitClient() throws Exception {"}],"source_content_type":"text/x-java","patch_set":2,"id":"AAABjX%2F%2F%2Bbo%3D","line":65,"updated":"2011-09-13 05:13:52.000000000","message":"I think this runs against a real server, which in the world of Couchbase, isn\u0027t guaranteed to always be 1024.  I think there\u0027s instead a place that you can run this against a mock of the config, which would be a better place for the test.","commit_id":"0921fa2b1832ff4dea44bc4c5a9df2c7ad892588"},{"author":{"_account_id":1000136,"name":"Mike Wiederhold","email":"mike@couchbase.com","username":"mikewied","avatars":[{"url":"https://www.gravatar.com/avatar/337c57dab3946ecdea245eaabfe99a17.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/337c57dab3946ecdea245eaabfe99a17.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/337c57dab3946ecdea245eaabfe99a17.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/337c57dab3946ecdea245eaabfe99a17.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"e962fd42812a4b2bb0276a895694fe374431bd59","unresolved":false,"context_lines":[{"line_number":62,"context_line":"  }"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"  public void testNumVBuckets() throws Exception {"},{"line_number":65,"context_line":"    assert ((MembaseClient)client).getNumVBuckets() \u003d\u003d 1024;"},{"line_number":66,"context_line":"  }"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"  protected void syncGetTimeoutsInitClient() throws Exception {"}],"source_content_type":"text/x-java","patch_set":2,"id":"AAABjX%2F%2F%2BV8%3D","line":65,"in_reply_to":"AAABjX%2F%2F%2Bbo%3D","updated":"2011-09-13 19:41:28.000000000","message":"I\u0027ll add an isMembase() above this. I thought this would only be run when testing against Membase, but looking at the build file I can see it is also run against Couchbase.","commit_id":"0921fa2b1832ff4dea44bc4c5a9df2c7ad892588"}]}
