{"action":"created","issue":{"url":"https://api.github.com/repos/SeleniumHQ/selenium/issues/227","labels_url":"https://api.github.com/repos/SeleniumHQ/selenium/issues/227/labels{/name}","comments_url":"https://api.github.com/repos/SeleniumHQ/selenium/issues/227/comments","events_url":"https://api.github.com/repos/SeleniumHQ/selenium/issues/227/events","html_url":"https://github.com/SeleniumHQ/selenium/pull/227","id":35805706,"number":227,"title":"Issue 3951: Make HTTP client socket timeout configurable","user":{"login":"yurloc","id":673386,"avatar_url":"https://avatars.githubusercontent.com/u/673386?v=3","gravatar_id":"","url":"https://api.github.com/users/yurloc","html_url":"https://github.com/yurloc","followers_url":"https://api.github.com/users/yurloc/followers","following_url":"https://api.github.com/users/yurloc/following{/other_user}","gists_url":"https://api.github.com/users/yurloc/gists{/gist_id}","starred_url":"https://api.github.com/users/yurloc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yurloc/subscriptions","organizations_url":"https://api.github.com/users/yurloc/orgs","repos_url":"https://api.github.com/users/yurloc/repos","events_url":"https://api.github.com/users/yurloc/events{/privacy}","received_events_url":"https://api.github.com/users/yurloc/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":{"login":"barancev","id":617090,"avatar_url":"https://avatars.githubusercontent.com/u/617090?v=3","gravatar_id":"","url":"https://api.github.com/users/barancev","html_url":"https://github.com/barancev","followers_url":"https://api.github.com/users/barancev/followers","following_url":"https://api.github.com/users/barancev/following{/other_user}","gists_url":"https://api.github.com/users/barancev/gists{/gist_id}","starred_url":"https://api.github.com/users/barancev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/barancev/subscriptions","organizations_url":"https://api.github.com/users/barancev/orgs","repos_url":"https://api.github.com/users/barancev/repos","events_url":"https://api.github.com/users/barancev/events{/privacy}","received_events_url":"https://api.github.com/users/barancev/received_events","type":"User","site_admin":false},"milestone":null,"comments":17,"created_at":"2014-06-16T15:13:10Z","updated_at":"2015-03-02T20:40:37Z","closed_at":"2015-03-02T20:40:37Z","pull_request":{"url":"https://api.github.com/repos/SeleniumHQ/selenium/pulls/227","html_url":"https://github.com/SeleniumHQ/selenium/pull/227","diff_url":"https://github.com/SeleniumHQ/selenium/pull/227.diff","patch_url":"https://github.com/SeleniumHQ/selenium/pull/227.patch"},"body":"This is a proposed fix for [Issue 3951](https://code.google.com/p/selenium/issues/detail?id=3951).\r\n\r\nI decided not to make the timeout configurable through API for these reasons:\r\n* This setting is not browser related so it doesn't fit into Capabilities.\r\n* API would have to allow access to HttpClientFactory from a RemoteWebDriver instance through its HttpCommandExecutor (as suggested in [Issue 3951, comment #39](https://code.google.com/p/selenium/issues/detail?id=3951#c39)) to change the timeout value *before* the HttpClient instance is actually created (HttpClient would need to be instantiated lazily on the first call of `HttpCommandExecutor#execute()`, not in HttpCommandExecutor's constructor like it is now). This would result in unnecessary code complexity and an API allowing illegal changing of the socket timeout in the state where HttpClient is already created and its configuration cannot be changed.\r\n* This is a corner case configuration and it makes sense to use the most widely suitable default, possible to override with a System property.\r\n\r\nI also took the liberty of decreasing the default to 60 seconds. This value is suggested by Kristian Rosenvold in his commit 3f73032360e65d12f6c12a47f507697c0981b4a3 where he also explains why a bigger timeout is needed in grid environment. I hope the lesser timeout won't have negative effects since there already is a method [HttpClientFactory#getGridHttpClient(int, int)](https://github.com/SeleniumHQ/selenium/blob/c8ed0c89e45518f4e702ca26eefc7d90dba6ec84/java/client/src/org/openqa/selenium/remote/internal/HttpClientFactory.java#L96) which takes socket timeout as a parameter. In any case it is possible to override the default socket timeout value with `webdriver.remote.http.socket.timeout` System property.\r\n\r\nReview needed, especially comments from someone who can confirm this will not break things in the grid environment."},"comment":{"url":"https://api.github.com/repos/SeleniumHQ/selenium/issues/comments/76815148","html_url":"https://github.com/SeleniumHQ/selenium/pull/227#issuecomment-76815148","issue_url":"https://api.github.com/repos/SeleniumHQ/selenium/issues/227","id":76815148,"user":{"login":"andreastt","id":399120,"avatar_url":"https://avatars.githubusercontent.com/u/399120?v=3","gravatar_id":"","url":"https://api.github.com/users/andreastt","html_url":"https://github.com/andreastt","followers_url":"https://api.github.com/users/andreastt/followers","following_url":"https://api.github.com/users/andreastt/following{/other_user}","gists_url":"https://api.github.com/users/andreastt/gists{/gist_id}","starred_url":"https://api.github.com/users/andreastt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/andreastt/subscriptions","organizations_url":"https://api.github.com/users/andreastt/orgs","repos_url":"https://api.github.com/users/andreastt/repos","events_url":"https://api.github.com/users/andreastt/events{/privacy}","received_events_url":"https://api.github.com/users/andreastt/received_events","type":"User","site_admin":false},"created_at":"2015-03-02T20:40:37Z","updated_at":"2015-03-02T20:40:37Z","body":"This seems surpassed by #281.  If I'm wrong, please comment so we can reopen."}}