)]}'
{"src/main/java/net/spy/memcached/ConnectionFactoryBuilder.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":"6031f60560f85f11a6f34e51a6670810011fbd19","unresolved":false,"context_lines":[{"line_number":298,"context_line":"   *"},{"line_number":299,"context_line":"   * @param executorService the ExecutorService to use."},{"line_number":300,"context_line":"   */"},{"line_number":301,"context_line":"  public ConnectionFactoryBuilder setListenerExecutorService(ExecutorService executorService) {"},{"line_number":302,"context_line":"    this.executorService \u003d executorService;"},{"line_number":303,"context_line":"    return this;"},{"line_number":304,"context_line":"  }"}],"source_content_type":"text/x-java","patch_set":1,"id":"0982ed18_6ab4b7d0","line":301,"updated":"2013-10-08 04:45:22.000000000","message":"There\u0027s a bit of a concurrency issue here.  The caller can keep a reference to this and can shut it down.  Of course, we can document that\u0027s not allowed, but we can\u0027t enforce it.\n\nAt the very least, we should document who is responsible for starting or stopping the thing passed in.\n\nThinking about this a bit, in some ways, maybe we should just have an enum defined that specifies a few different behaviors and we manage all of the creation.  This is way less flexible, but far more correct?","commit_id":"fbfb5e63e72a0c2d57a5c7bba08008e1e8643891"},{"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":"5a85f0fe426698b3001a47c0bc407032659d9918","unresolved":false,"context_lines":[{"line_number":298,"context_line":"   *"},{"line_number":299,"context_line":"   * @param executorService the ExecutorService to use."},{"line_number":300,"context_line":"   */"},{"line_number":301,"context_line":"  public ConnectionFactoryBuilder setListenerExecutorService(ExecutorService executorService) {"},{"line_number":302,"context_line":"    this.executorService \u003d executorService;"},{"line_number":303,"context_line":"    return this;"},{"line_number":304,"context_line":"  }"}],"source_content_type":"text/x-java","patch_set":1,"id":"0982ed18_ead8a71c","line":301,"in_reply_to":"0982ed18_6ab4b7d0","updated":"2013-10-08 05:47:32.000000000","message":"I think we _need_ passing in an actual ExecutorService, just because of the fact that if you create a bunch of CouchbaseClient objects you want to create one externally and share it with all of them.\n\nI\u0027ll add some docs here in the docblock and also make sure it gets in the official docs.","commit_id":"fbfb5e63e72a0c2d57a5c7bba08008e1e8643891"},{"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":"8b0a93d0699adc1ede79914e035d5ca3a5cc096a","unresolved":false,"context_lines":[{"line_number":298,"context_line":"   *"},{"line_number":299,"context_line":"   * @param executorService the ExecutorService to use."},{"line_number":300,"context_line":"   */"},{"line_number":301,"context_line":"  public ConnectionFactoryBuilder setListenerExecutorService(ExecutorService executorService) {"},{"line_number":302,"context_line":"    this.executorService \u003d executorService;"},{"line_number":303,"context_line":"    return this;"},{"line_number":304,"context_line":"  }"}],"source_content_type":"text/x-java","patch_set":2,"id":"0982ed18_2a7f1fdf","line":301,"updated":"2013-10-08 13:09:37.000000000","message":"What about the docs about shutdown()?","commit_id":"b99d9bcc39fe26248d1be595d9fac3ac17824318"},{"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":"3edde5c297fab3f220f35cda65281e727065c208","unresolved":false,"context_lines":[{"line_number":298,"context_line":"   *"},{"line_number":299,"context_line":"   * @param executorService the ExecutorService to use."},{"line_number":300,"context_line":"   */"},{"line_number":301,"context_line":"  public ConnectionFactoryBuilder setListenerExecutorService(ExecutorService executorService) {"},{"line_number":302,"context_line":"    this.executorService \u003d executorService;"},{"line_number":303,"context_line":"    return this;"},{"line_number":304,"context_line":"  }"}],"source_content_type":"text/x-java","patch_set":2,"id":"0982ed18_ca776300","line":301,"in_reply_to":"0982ed18_2a7f1fdf","updated":"2013-10-08 13:30:23.000000000","message":"good point.","commit_id":"b99d9bcc39fe26248d1be595d9fac3ac17824318"}],"src/main/java/net/spy/memcached/DefaultConnectionFactory.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":"6031f60560f85f11a6f34e51a6670810011fbd19","unresolved":false,"context_lines":[{"line_number":260,"context_line":"  @Override"},{"line_number":261,"context_line":"  public ExecutorService getListenerExecutorService() {"},{"line_number":262,"context_line":"    if (executorService \u003d\u003d null) {"},{"line_number":263,"context_line":"      executorService \u003d Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());"},{"line_number":264,"context_line":"    }"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    return executorService;"}],"source_content_type":"text/x-java","patch_set":1,"id":"0982ed18_8ac80b59","line":263,"updated":"2013-10-08 04:45:22.000000000","message":"I should have thought about this before, but I think this really should be a cachedThreadPool() with some specifics about keeping the number of threads bound.  I think we can change this here though.  It shouldn\u0027t be too much I don\u0027t think.  See ThreadPoolExecutor.\n\nThe concern is that in the ideal, we don\u0027t want a bunch of threads running when there\u0027s no work to be done.  We *will* get questions about this if we do.","commit_id":"fbfb5e63e72a0c2d57a5c7bba08008e1e8643891"},{"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":"8b0a93d0699adc1ede79914e035d5ca3a5cc096a","unresolved":false,"context_lines":[{"line_number":272,"context_line":"  @Override"},{"line_number":273,"context_line":"  public ExecutorService getListenerExecutorService() {"},{"line_number":274,"context_line":"    if (executorService \u003d\u003d null) {"},{"line_number":275,"context_line":"      executorService \u003d new ThreadPoolExecutor("},{"line_number":276,"context_line":"        0,"},{"line_number":277,"context_line":"        Runtime.getRuntime().availableProcessors(),"},{"line_number":278,"context_line":"        60L,"}],"source_content_type":"text/x-java","patch_set":2,"id":"0982ed18_0a7a5bee","line":275,"updated":"2013-10-08 13:09:37.000000000","message":"Will these be named threads?  It would be best if they are.","commit_id":"b99d9bcc39fe26248d1be595d9fac3ac17824318"},{"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":"3edde5c297fab3f220f35cda65281e727065c208","unresolved":false,"context_lines":[{"line_number":272,"context_line":"  @Override"},{"line_number":273,"context_line":"  public ExecutorService getListenerExecutorService() {"},{"line_number":274,"context_line":"    if (executorService \u003d\u003d null) {"},{"line_number":275,"context_line":"      executorService \u003d new ThreadPoolExecutor("},{"line_number":276,"context_line":"        0,"},{"line_number":277,"context_line":"        Runtime.getRuntime().availableProcessors(),"},{"line_number":278,"context_line":"        60L,"}],"source_content_type":"text/x-java","patch_set":2,"id":"0982ed18_aa6a2f19","line":275,"in_reply_to":"0982ed18_0a7a5bee","updated":"2013-10-08 13:30:23.000000000","message":"they are indeed. currently they get named in the AbstractListener implementation when tasks are dispatched.","commit_id":"b99d9bcc39fe26248d1be595d9fac3ac17824318"}]}
