)]}'
{"src/main/java/net/spy/memcached/MemcachedClient.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":"ef235246051bdf1c3653a4c2bf66eead6216dda7","unresolved":false,"context_lines":[{"line_number":990,"context_line":"\t * Gets and locks the given key asynchronously."},{"line_number":991,"context_line":"\t *"},{"line_number":992,"context_line":"\t * @param key the key to fetch and lock"},{"line_number":993,"context_line":"\t * @param exp the amount of time the lock should be valid for"},{"line_number":994,"context_line":"\t * @param tc the transcoder to serialize and unserialize value"},{"line_number":995,"context_line":"\t * @return a future that will hold the return value of the fetch"},{"line_number":996,"context_line":"\t * @throws IllegalStateException in the rare circumstance where queue"}],"source_content_type":"text/x-java","patch_set":3,"id":"AAABRn%2F%2F%2FSE%3D","line":993,"updated":"2011-06-05 17:53:12.000000000","message":"Range and units should be documented.  Integer wouldn\u0027t tell me much.  The javadoc should tell me what the default max on the server is.","commit_id":"50e33da1aaf9f920c9a4bdaf324b5d1efa42b67e"},{"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":"aaa26dd8d0286b71dd2a203e63f4903efa85c27a","unresolved":false,"context_lines":[{"line_number":992,"context_line":"\t * @param key the key to fetch and lock"},{"line_number":993,"context_line":"\t * @param exp the amount of time the lock should be valid for in seconds."},{"line_number":994,"context_line":"\t * By default the maximum allowed timeout is 30 seconds. Timeouts greater"},{"line_number":995,"context_line":"\t * than this will be set to 30 seconds."},{"line_number":996,"context_line":"\t * @param tc the transcoder to serialize and unserialize value"},{"line_number":997,"context_line":"\t * @return a future that will hold the return value of the fetch"},{"line_number":998,"context_line":"\t * @throws IllegalStateException in the rare circumstance where queue"}],"source_content_type":"text/x-java","patch_set":4,"id":"AAABRn%2F%2F%2FQg%3D","line":995,"updated":"2011-06-05 20:49:42.000000000","message":"Does this render correctly in javadoc?  (I generally don\u0027t put that much in a param doc, so I\u0027m not quite sure how that works)","commit_id":"767fad41527886057d23c71608dc4e4d07284c24"},{"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":"9a2e8a3d43db58e98b752e27bcc675dcb1445c4a","unresolved":false,"context_lines":[{"line_number":992,"context_line":"\t * @param key the key to fetch and lock"},{"line_number":993,"context_line":"\t * @param exp the amount of time the lock should be valid for in seconds."},{"line_number":994,"context_line":"\t * By default the maximum allowed timeout is 30 seconds. Timeouts greater"},{"line_number":995,"context_line":"\t * than this will be set to 30 seconds."},{"line_number":996,"context_line":"\t * @param tc the transcoder to serialize and unserialize value"},{"line_number":997,"context_line":"\t * @return a future that will hold the return value of the fetch"},{"line_number":998,"context_line":"\t * @throws IllegalStateException in the rare circumstance where queue"}],"source_content_type":"text/x-java","patch_set":4,"id":"AAABRn%2F%2F%2FQQ%3D","line":995,"in_reply_to":"AAABRn%2F%2F%2FQg%3D","updated":"2011-06-05 20:58:11.000000000","message":"It will, but I\u0027ll move this information to the function description since I think it fits better there anyways.","commit_id":"767fad41527886057d23c71608dc4e4d07284c24"},{"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":"786f3935c15bc05a0217b3eceffd392bf5ddabf5","unresolved":false,"context_lines":[{"line_number":987,"context_line":"\t}"},{"line_number":988,"context_line":""},{"line_number":989,"context_line":"\t/**"},{"line_number":990,"context_line":"\t * Gets and locks the given key asynchronously.By default the maximum allowed "},{"line_number":991,"context_line":"\t * timeout is 30 seconds. Timeouts greater than this will be set to 30 seconds."},{"line_number":992,"context_line":"\t *"},{"line_number":993,"context_line":"\t * @param key the key to fetch and lock"}],"source_content_type":"text/x-java","patch_set":5,"id":"AAABRn%2F%2F%2FPo%3D","line":990,"updated":"2011-06-06 04:30:50.000000000","message":"Missing space after the period, and there\u0027s a whitespace issue here at the end of the line.  There are a few more in the file too.","commit_id":"e053b4364afeeeaf3c93eb74cdbd13b594ed1404"}],"src/main/java/net/spy/memcached/OperationFactory.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":"786f3935c15bc05a0217b3eceffd392bf5ddabf5","unresolved":false,"context_lines":[{"line_number":71,"context_line":"\t * Create a getl operation."},{"line_number":72,"context_line":"\t *"},{"line_number":73,"context_line":"\t * @param key the key to get and lock"},{"line_number":74,"context_line":"\t * @param exp the amount of time the lock should be valid for"},{"line_number":75,"context_line":"\t * @param callback the callback that will contain the results"},{"line_number":76,"context_line":"\t * @return a new GetOperation"},{"line_number":77,"context_line":"\t */"}],"source_content_type":"text/x-java","patch_set":5,"id":"AAABRn%2F%2F%2FPs%3D","line":74,"updated":"2011-06-06 04:30:50.000000000","message":"would be nice to add \"in seconds\" here too, but it\u0027s really minor.","commit_id":"e053b4364afeeeaf3c93eb74cdbd13b594ed1404"}],"src/main/java/net/spy/memcached/protocol/ascii/BaseGetOpImpl.java":[{"author":{"_account_id":1000018,"name":"Blair Zajac","username":"blair","avatars":[{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"inactive":true},"change_message_id":"38d69c10df55f7921257dc9b612591b1fbbfdd55","unresolved":false,"context_lines":[{"line_number":22,"context_line":"\tprivate final String cmd;"},{"line_number":23,"context_line":"\tprivate final Collection\u003cString\u003e keys;"},{"line_number":24,"context_line":"\tprivate String currentKey \u003d null;"},{"line_number":25,"context_line":"\tprivate final int exp;"},{"line_number":26,"context_line":"\tprivate long casValue\u003d0;"},{"line_number":27,"context_line":"\tprivate int currentFlags \u003d 0;"},{"line_number":28,"context_line":"\tprivate byte[] data \u003d null;"}],"source_content_type":"text/x-java","patch_set":1,"id":"AAABRn%2F%2F%2FVQ%3D","line":25,"updated":"2011-06-05 02:56:09.000000000","message":"Since exp and hasExp are related, have them next to each other.","commit_id":"91c60e1da6342adac61011453f889b66983661ec"},{"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":"d1e56187ec2d3dd8090fdd0f816511fa552b832e","unresolved":false,"context_lines":[{"line_number":22,"context_line":"\tprivate final String cmd;"},{"line_number":23,"context_line":"\tprivate final Collection\u003cString\u003e keys;"},{"line_number":24,"context_line":"\tprivate String currentKey \u003d null;"},{"line_number":25,"context_line":"\tprivate final int exp;"},{"line_number":26,"context_line":"\tprivate long casValue\u003d0;"},{"line_number":27,"context_line":"\tprivate int currentFlags \u003d 0;"},{"line_number":28,"context_line":"\tprivate byte[] data \u003d null;"}],"source_content_type":"text/x-java","patch_set":1,"id":"AAABRn%2F%2F%2FVI%3D","line":25,"in_reply_to":"AAABRn%2F%2F%2FVQ%3D","updated":"2011-06-05 02:57:24.000000000","message":"Your quick. I\u0027m still cleaning a few things up. I\u0027ll have this in the next patch set.","commit_id":"91c60e1da6342adac61011453f889b66983661ec"},{"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":"2f04b20b204f438f541ef66197b62af9a0683541","unresolved":false,"context_lines":[{"line_number":112,"context_line":"\t\t\t\t\tGetsOperation.Callback gcb\u003d(GetsOperation.Callback)"},{"line_number":113,"context_line":"\t\t\t\t\tgetCallback();"},{"line_number":114,"context_line":"\t\t\t\t\tgcb.gotData(currentKey, currentFlags, casValue, data);"},{"line_number":115,"context_line":"\t\t\t\t} catch (ClassCastException e1) {"},{"line_number":116,"context_line":"\t\t\t\t\tGetlOperation.Callback gcb\u003d(GetlOperation.Callback)"},{"line_number":117,"context_line":"\t\t\t\t\tgetCallback();"},{"line_number":118,"context_line":"\t\t\t\t\tgcb.gotData(currentKey, currentFlags, data);"}],"source_content_type":"text/x-java","patch_set":3,"id":"AAABRn%2F%2F%2FUQ%3D","line":115,"updated":"2011-06-05 07:42:06.000000000","message":"The nested class cast exception capture for flow control seems bad.  Even though I started it, can we see if there\u0027s a better way?","commit_id":"50e33da1aaf9f920c9a4bdaf324b5d1efa42b67e"},{"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":"2f04b20b204f438f541ef66197b62af9a0683541","unresolved":false,"context_lines":[{"line_number":155,"context_line":"\t\t\tsize+\u003dk.length;"},{"line_number":156,"context_line":"\t\t\tsize++;"},{"line_number":157,"context_line":"\t\t}"},{"line_number":158,"context_line":"\t\tbyte[] e \u003d (new Integer(exp)).toString().getBytes();"},{"line_number":159,"context_line":"\t\tif (hasExp) {"},{"line_number":160,"context_line":"\t\t\tsize+\u003de.length + 1;"},{"line_number":161,"context_line":"\t\t}"}],"source_content_type":"text/x-java","patch_set":3,"id":"AAABRn%2F%2F%2FUM%3D","line":158,"updated":"2011-06-05 07:42:06.000000000","message":"byte[] e \u003d KeyUtil.getKeyBytes(String.valueOf(exp));","commit_id":"50e33da1aaf9f920c9a4bdaf324b5d1efa42b67e"},{"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":"aaa26dd8d0286b71dd2a203e63f4903efa85c27a","unresolved":false,"context_lines":[{"line_number":155,"context_line":"\t\t\tsize+\u003dk.length;"},{"line_number":156,"context_line":"\t\t\tsize++;"},{"line_number":157,"context_line":"\t\t}"},{"line_number":158,"context_line":"\t\tbyte[] e \u003d (exp + \"\").getBytes();"},{"line_number":159,"context_line":"\t\tif (hasExp) {"},{"line_number":160,"context_line":"\t\t\tsize+\u003de.length + 1;"},{"line_number":161,"context_line":"\t\t}"}],"source_content_type":"text/x-java","patch_set":4,"id":"AAABRn%2F%2F%2FQc%3D","line":158,"updated":"2011-06-05 20:49:42.000000000","message":"Just do String.valueOf(exp).  (exp + \"\") does roughly this:\n\n  new StringBuilder(String.valueOf(exp)).append(\"\").toString()","commit_id":"767fad41527886057d23c71608dc4e4d07284c24"},{"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":"9a2e8a3d43db58e98b752e27bcc675dcb1445c4a","unresolved":false,"context_lines":[{"line_number":155,"context_line":"\t\t\tsize+\u003dk.length;"},{"line_number":156,"context_line":"\t\t\tsize++;"},{"line_number":157,"context_line":"\t\t}"},{"line_number":158,"context_line":"\t\tbyte[] e \u003d (exp + \"\").getBytes();"},{"line_number":159,"context_line":"\t\tif (hasExp) {"},{"line_number":160,"context_line":"\t\t\tsize+\u003de.length + 1;"},{"line_number":161,"context_line":"\t\t}"}],"source_content_type":"text/x-java","patch_set":4,"id":"AAABRn%2F%2F%2FQM%3D","line":158,"in_reply_to":"AAABRn%2F%2F%2FQc%3D","updated":"2011-06-05 20:58:11.000000000","message":"Sounds good.","commit_id":"767fad41527886057d23c71608dc4e4d07284c24"},{"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":"786f3935c15bc05a0217b3eceffd392bf5ddabf5","unresolved":false,"context_lines":[{"line_number":109,"context_line":"\t\t\t\tgcb.gotData(currentKey, currentFlags, data);"},{"line_number":110,"context_line":"\t\t\t} catch(ClassCastException e) {"},{"line_number":111,"context_line":"\t\t\t\ttry {"},{"line_number":112,"context_line":"\t\t\t\t\tGetsOperation.Callback gcb\u003d(GetsOperation.Callback)"},{"line_number":113,"context_line":"\t\t\t\t\tgetCallback();"},{"line_number":114,"context_line":"\t\t\t\t\tgcb.gotData(currentKey, currentFlags, casValue, data);"},{"line_number":115,"context_line":"\t\t\t\t} catch (ClassCastException e1) {"}],"source_content_type":"text/x-java","patch_set":5,"id":"AAABRn%2F%2F%2FPk%3D","line":112,"updated":"2011-06-06 04:30:50.000000000","message":"Hm.  I didn\u0027t read this very well the first time.  Might it not be better to use instanceof here?  Not a big deal since I said it was okay earlier, but exception handling is more expensive, I believe.","commit_id":"e053b4364afeeeaf3c93eb74cdbd13b594ed1404"}],"src/main/java/net/spy/memcached/protocol/ascii/GetlOperationImpl.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":"ef235246051bdf1c3653a4c2bf66eead6216dda7","unresolved":false,"context_lines":[{"line_number":10,"context_line":"\tprivate static final String CMD\u003d\"getl\";"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"\tpublic GetlOperationImpl(String key, int exp, GetlOperation.Callback c) {"},{"line_number":13,"context_line":"\t\tsuper(CMD, exp, c, key);"},{"line_number":14,"context_line":"\t}"},{"line_number":15,"context_line":"}"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-java","patch_set":3,"id":"AAABRn%2F%2F%2FSI%3D","line":13,"updated":"2011-06-05 17:53:12.000000000","message":"maybe I missed it, but I don\u0027t see anywhere in the heirarchy a guard against an unreasonable expiration.  I think getl is tunable on the server side, but we can probably enforce the default here without sending anything over the network.","commit_id":"50e33da1aaf9f920c9a4bdaf324b5d1efa42b67e"},{"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":"61682d3ed54a4b8a52cff911df58be7bf93663ff","unresolved":false,"context_lines":[{"line_number":10,"context_line":"\tprivate static final String CMD\u003d\"getl\";"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"\tpublic GetlOperationImpl(String key, int exp, GetlOperation.Callback c) {"},{"line_number":13,"context_line":"\t\tsuper(CMD, exp, c, key);"},{"line_number":14,"context_line":"\t}"},{"line_number":15,"context_line":"}"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-java","patch_set":3,"id":"AAABRn%2F%2F%2FQ8%3D","line":13,"in_reply_to":"AAABRn%2F%2F%2FSI%3D","updated":"2011-06-05 20:10:25.000000000","message":"I disagree on having a guard here. As you mentioned the default timeout is configurable so it wouldn\u0027t make sense to decide the max timeout is always 30 seconds. Also, setting the timeout greater than 30 seconds isn\u0027t an error. The server automatically resets the timeout to 30 seconds. Maybe a warning log message here would be useful?","commit_id":"50e33da1aaf9f920c9a4bdaf324b5d1efa42b67e"}],"src/main/java/net/spy/memcached/protocol/binary/GetOperationImpl.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":"786f3935c15bc05a0217b3eceffd392bf5ddabf5","unresolved":false,"context_lines":[{"line_number":65,"context_line":"\t\t} catch(ClassCastException e) {"},{"line_number":66,"context_line":"\t\t\ttry {"},{"line_number":67,"context_line":"\t\t\t\tGetsOperation.Callback cb\u003d(GetsOperation.Callback)getCallback();"},{"line_number":68,"context_line":"\t\t\t\tcb.gotData(key, flags, responseCas, data);"},{"line_number":69,"context_line":"\t\t\t} catch (ClassCastException e1) {"},{"line_number":70,"context_line":"\t\t\t\t//getl return the key and value. So we need to strip off the key"},{"line_number":71,"context_line":"\t\t\t\tbyte[] value \u003d new byte[data.length-key.length()];"}],"source_content_type":"text/x-java","patch_set":5,"id":"AAABRn%2F%2F%2FPg%3D","line":68,"updated":"2011-06-06 04:30:50.000000000","message":"Another case where instanceof would be okay I think.\n\nBetter would possibly be a more polymorphic approach where the slightly-different-operation impl strips off the key for you, so the caller can just get the data in the format expected.","commit_id":"e053b4364afeeeaf3c93eb74cdbd13b594ed1404"}]}
