{"action":"created","issue":{"url":"https://api.github.com/repos/chrsmith/google-api-java-client/issues/144","labels_url":"https://api.github.com/repos/chrsmith/google-api-java-client/issues/144/labels{/name}","comments_url":"https://api.github.com/repos/chrsmith/google-api-java-client/issues/144/comments","events_url":"https://api.github.com/repos/chrsmith/google-api-java-client/issues/144/events","html_url":"https://github.com/chrsmith/google-api-java-client/issues/144","id":59374229,"number":144,"title":"HttpTransport should be thread-safe","user":{"login":"GoogleCodeExporter","id":9614759,"avatar_url":"https://avatars.githubusercontent.com/u/9614759?v=3","gravatar_id":"","url":"https://api.github.com/users/GoogleCodeExporter","html_url":"https://github.com/GoogleCodeExporter","followers_url":"https://api.github.com/users/GoogleCodeExporter/followers","following_url":"https://api.github.com/users/GoogleCodeExporter/following{/other_user}","gists_url":"https://api.github.com/users/GoogleCodeExporter/gists{/gist_id}","starred_url":"https://api.github.com/users/GoogleCodeExporter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GoogleCodeExporter/subscriptions","organizations_url":"https://api.github.com/users/GoogleCodeExporter/orgs","repos_url":"https://api.github.com/users/GoogleCodeExporter/repos","events_url":"https://api.github.com/users/GoogleCodeExporter/events{/privacy}","received_events_url":"https://api.github.com/users/GoogleCodeExporter/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/chrsmith/google-api-java-client/labels/auto-migrated","name":"auto-migrated","color":"ededed"},{"url":"https://api.github.com/repos/chrsmith/google-api-java-client/labels/Component-HTTP","name":"Component-HTTP","color":"ededed"},{"url":"https://api.github.com/repos/chrsmith/google-api-java-client/labels/Milestone-Version1.4.0","name":"Milestone-Version1.4.0","color":"ededed"},{"url":"https://api.github.com/repos/chrsmith/google-api-java-client/labels/Priority-Medium","name":"Priority-Medium","color":"ededed"},{"url":"https://api.github.com/repos/chrsmith/google-api-java-client/labels/Type-Enhancement","name":"Type-Enhancement","color":"ededed"}],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2015-03-01T03:19:18Z","updated_at":"2015-03-01T03:19:19Z","closed_at":"2015-03-01T03:19:18Z","body":"```\nExternal references, such as a standards document, or specification?\n\nN/A\n\nJava environments (e.g. Java 6, Android 2.3, App Engine 1.4.2, or All)?\n\nAll.\n\nPlease describe the feature requested.\n\nHttpTransport is not thread safe. For a multi-threaded application you \ntherefore have these choices:\n1. Only use it from a single thread.\n2. Only modify it before any threads are started.\n3. Use thread-local (but then you have duplicate copy for each thread, and any \ntime you update it in one thread, you have to update it in all threads).\n4. Use some kind of custom synchronization lock every time you access \nHttpTransport.\n\nThis makes the library difficult to use for multi-threaded applications.  With \nOAuth 2 for example, we want to be able to refresh the access token when it \nexpires, which requires updating the HttpTransport instance.  The only really \nviable way to write a utility library that does this for you automatically is \nto make HttpTransport thread-safe.\n```\n\nOriginal issue reported on code.google.com by `yan...@google.com` on 11 Mar 2011 at 12:24"},"comment":{"url":"https://api.github.com/repos/chrsmith/google-api-java-client/issues/comments/76567818","html_url":"https://github.com/chrsmith/google-api-java-client/issues/144#issuecomment-76567818","issue_url":"https://api.github.com/repos/chrsmith/google-api-java-client/issues/144","id":76567818,"user":{"login":"GoogleCodeExporter","id":9614759,"avatar_url":"https://avatars.githubusercontent.com/u/9614759?v=3","gravatar_id":"","url":"https://api.github.com/users/GoogleCodeExporter","html_url":"https://github.com/GoogleCodeExporter","followers_url":"https://api.github.com/users/GoogleCodeExporter/followers","following_url":"https://api.github.com/users/GoogleCodeExporter/following{/other_user}","gists_url":"https://api.github.com/users/GoogleCodeExporter/gists{/gist_id}","starred_url":"https://api.github.com/users/GoogleCodeExporter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GoogleCodeExporter/subscriptions","organizations_url":"https://api.github.com/users/GoogleCodeExporter/orgs","repos_url":"https://api.github.com/users/GoogleCodeExporter/repos","events_url":"https://api.github.com/users/GoogleCodeExporter/events{/privacy}","received_events_url":"https://api.github.com/users/GoogleCodeExporter/received_events","type":"User","site_admin":false},"created_at":"2015-03-01T03:19:19Z","updated_at":"2015-03-01T03:19:19Z","body":"\n\nOriginal comment by `yan...@google.com` on 2 May 2011 at 8:16\n* Changed state: **Fixed**"}}