{"action":"created","issue":{"url":"https://api.github.com/repos/couchbase/sync_gateway/issues/859","labels_url":"https://api.github.com/repos/couchbase/sync_gateway/issues/859/labels{/name}","comments_url":"https://api.github.com/repos/couchbase/sync_gateway/issues/859/comments","events_url":"https://api.github.com/repos/couchbase/sync_gateway/issues/859/events","html_url":"https://github.com/couchbase/sync_gateway/issues/859","id":76480919,"number":859,"title":"Uptake TCP keep-alive support for go-couchbase","user":{"login":"adamcfraser","id":8866453,"avatar_url":"https://avatars.githubusercontent.com/u/8866453?v=3","gravatar_id":"","url":"https://api.github.com/users/adamcfraser","html_url":"https://github.com/adamcfraser","followers_url":"https://api.github.com/users/adamcfraser/followers","following_url":"https://api.github.com/users/adamcfraser/following{/other_user}","gists_url":"https://api.github.com/users/adamcfraser/gists{/gist_id}","starred_url":"https://api.github.com/users/adamcfraser/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/adamcfraser/subscriptions","organizations_url":"https://api.github.com/users/adamcfraser/orgs","repos_url":"https://api.github.com/users/adamcfraser/repos","events_url":"https://api.github.com/users/adamcfraser/events{/privacy}","received_events_url":"https://api.github.com/users/adamcfraser/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/couchbase/sync_gateway/labels/enhancement","name":"enhancement","color":"84b6eb"},{"url":"https://api.github.com/repos/couchbase/sync_gateway/labels/release-prep","name":"release-prep","color":"eb6420"},{"url":"https://api.github.com/repos/couchbase/sync_gateway/labels/size-medium","name":"size-medium","color":"fad8c7"},{"url":"https://api.github.com/repos/couchbase/sync_gateway/labels/verify","name":"verify","color":"fbca04"}],"state":"closed","locked":false,"assignee":{"login":"adamcfraser","id":8866453,"avatar_url":"https://avatars.githubusercontent.com/u/8866453?v=3","gravatar_id":"","url":"https://api.github.com/users/adamcfraser","html_url":"https://github.com/adamcfraser","followers_url":"https://api.github.com/users/adamcfraser/followers","following_url":"https://api.github.com/users/adamcfraser/following{/other_user}","gists_url":"https://api.github.com/users/adamcfraser/gists{/gist_id}","starred_url":"https://api.github.com/users/adamcfraser/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/adamcfraser/subscriptions","organizations_url":"https://api.github.com/users/adamcfraser/orgs","repos_url":"https://api.github.com/users/adamcfraser/repos","events_url":"https://api.github.com/users/adamcfraser/events{/privacy}","received_events_url":"https://api.github.com/users/adamcfraser/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/couchbase/sync_gateway/milestones/10","html_url":"https://github.com/couchbase/sync_gateway/milestones/1.1.0","labels_url":"https://api.github.com/repos/couchbase/sync_gateway/milestones/10/labels","id":757913,"number":10,"title":"1.1.0","description":"","creator":{"login":"jessliu","id":4998909,"avatar_url":"https://avatars.githubusercontent.com/u/4998909?v=3","gravatar_id":"","url":"https://api.github.com/users/jessliu","html_url":"https://github.com/jessliu","followers_url":"https://api.github.com/users/jessliu/followers","following_url":"https://api.github.com/users/jessliu/following{/other_user}","gists_url":"https://api.github.com/users/jessliu/gists{/gist_id}","starred_url":"https://api.github.com/users/jessliu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jessliu/subscriptions","organizations_url":"https://api.github.com/users/jessliu/orgs","repos_url":"https://api.github.com/users/jessliu/repos","events_url":"https://api.github.com/users/jessliu/events{/privacy}","received_events_url":"https://api.github.com/users/jessliu/received_events","type":"User","site_admin":false},"open_issues":14,"closed_issues":46,"state":"open","created_at":"2014-08-18T20:44:06Z","updated_at":"2015-06-08T21:20:58Z","due_on":null,"closed_at":null},"comments":7,"created_at":"2015-05-14T20:31:26Z","updated_at":"2015-06-10T21:37:38Z","closed_at":"2015-06-08T17:36:43Z","body":"Manik has added support for enabling TCP keep-alive for go-memcached connections in go-couchbase.  Need to uptake this change on the Sync Gateway side.  @zgramana - any preference on whether we enable by default, or add as a config parameter?\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/couchbase/sync_gateway/issues/comments/110922037","html_url":"https://github.com/couchbase/sync_gateway/issues/859#issuecomment-110922037","issue_url":"https://api.github.com/repos/couchbase/sync_gateway/issues/859","id":110922037,"user":{"login":"maniktaneja","id":4716919,"avatar_url":"https://avatars.githubusercontent.com/u/4716919?v=3","gravatar_id":"","url":"https://api.github.com/users/maniktaneja","html_url":"https://github.com/maniktaneja","followers_url":"https://api.github.com/users/maniktaneja/followers","following_url":"https://api.github.com/users/maniktaneja/following{/other_user}","gists_url":"https://api.github.com/users/maniktaneja/gists{/gist_id}","starred_url":"https://api.github.com/users/maniktaneja/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maniktaneja/subscriptions","organizations_url":"https://api.github.com/users/maniktaneja/orgs","repos_url":"https://api.github.com/users/maniktaneja/repos","events_url":"https://api.github.com/users/maniktaneja/events{/privacy}","received_events_url":"https://api.github.com/users/maniktaneja/received_events","type":"User","site_admin":false},"created_at":"2015-06-10T21:37:38Z","updated_at":"2015-06-10T21:37:38Z","body":"Hey Traun. See : http://felixge.de/2014/08/26/tcp-keepalive-with-golang.html\r\n\r\n\r\n Go allows you to enable TCP keepalive using net.TCPConn's SetKeepAlive. On OSX and Linux this will cause up to 8 TCP keepalive probes to be sent at an interval of 75 seconds after a connection has been idle for 2 hours. Or in other words, Read will return an io.EOF error after 2 hours and 10 minutes (7200 + 8 * 75).\r\n\r\nDepending on your application, that may be too long of a timeout. In this case you can call SetKeepAlivePeriod. However, this method currently behaves different for different operating systems. On OSX, it will modify the idle time before probes are being sent. On Linux however, it will modify both the idle time, as well as the interval that probes are sent at. So calling SetKeepAlivePeriod with an argument of 30 seconds will cause a total timeout of 10 minutes and 30 seconds for OSX (30 + 8 * 75), but 4 minutes and 30 seconds on Linux (30 + 8 * 30)."}}