{"action":"created","issue":{"url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-python/issues/3905","repository_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-python","labels_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-python/issues/3905/labels{/name}","comments_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-python/issues/3905/comments","events_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-python/issues/3905/events","html_url":"https://github.com/GoogleCloudPlatform/google-cloud-python/issues/3905","id":254305472,"number":3905,"title":"RetryErrors obscure actual errors - PubSub API","user":{"login":"ensonic","id":1279486,"avatar_url":"https://avatars2.githubusercontent.com/u/1279486?v=4","gravatar_id":"","url":"https://api.github.com/users/ensonic","html_url":"https://github.com/ensonic","followers_url":"https://api.github.com/users/ensonic/followers","following_url":"https://api.github.com/users/ensonic/following{/other_user}","gists_url":"https://api.github.com/users/ensonic/gists{/gist_id}","starred_url":"https://api.github.com/users/ensonic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ensonic/subscriptions","organizations_url":"https://api.github.com/users/ensonic/orgs","repos_url":"https://api.github.com/users/ensonic/repos","events_url":"https://api.github.com/users/ensonic/events{/privacy}","received_events_url":"https://api.github.com/users/ensonic/received_events","type":"User","site_admin":false},"labels":[{"id":172136888,"url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-python/labels/core","name":"core","color":"f7c6c7","default":false},{"id":427331180,"url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-python/labels/gax","name":"gax","color":"0e8a16","default":false},{"id":544604243,"url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-python/labels/priority:%20p2+","name":"priority: p2+","color":"ffee58","default":false}],"state":"open","locked":false,"assignee":{"login":"lukesneeringer","id":4346,"avatar_url":"https://avatars0.githubusercontent.com/u/4346?v=4","gravatar_id":"","url":"https://api.github.com/users/lukesneeringer","html_url":"https://github.com/lukesneeringer","followers_url":"https://api.github.com/users/lukesneeringer/followers","following_url":"https://api.github.com/users/lukesneeringer/following{/other_user}","gists_url":"https://api.github.com/users/lukesneeringer/gists{/gist_id}","starred_url":"https://api.github.com/users/lukesneeringer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lukesneeringer/subscriptions","organizations_url":"https://api.github.com/users/lukesneeringer/orgs","repos_url":"https://api.github.com/users/lukesneeringer/repos","events_url":"https://api.github.com/users/lukesneeringer/events{/privacy}","received_events_url":"https://api.github.com/users/lukesneeringer/received_events","type":"User","site_admin":false},"assignees":[{"login":"lukesneeringer","id":4346,"avatar_url":"https://avatars0.githubusercontent.com/u/4346?v=4","gravatar_id":"","url":"https://api.github.com/users/lukesneeringer","html_url":"https://github.com/lukesneeringer","followers_url":"https://api.github.com/users/lukesneeringer/followers","following_url":"https://api.github.com/users/lukesneeringer/following{/other_user}","gists_url":"https://api.github.com/users/lukesneeringer/gists{/gist_id}","starred_url":"https://api.github.com/users/lukesneeringer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lukesneeringer/subscriptions","organizations_url":"https://api.github.com/users/lukesneeringer/orgs","repos_url":"https://api.github.com/users/lukesneeringer/repos","events_url":"https://api.github.com/users/lukesneeringer/events{/privacy}","received_events_url":"https://api.github.com/users/lukesneeringer/received_events","type":"User","site_admin":false}],"milestone":null,"comments":3,"created_at":"2017-08-31T11:39:35Z","updated_at":"2017-09-21T15:55:16Z","closed_at":null,"author_association":"NONE","body":"Similar to #3083, #3900 \r\n\r\n```\r\n2017-08-31T11:27:05.702393618Z   File \"main.py\", line 274, in start\r\n2017-08-31T11:27:05.702404302Z     self.add_topic(topic, params)\r\n2017-08-31T11:27:05.702413945Z   File \"main.py\", line 292, in add_topic\r\n2017-08-31T11:27:05.702472288Z     self, self.robot_id, self.pubsub_client, self.network, topic, params)\r\n2017-08-31T11:27:05.702501499Z   File \"main.py\", line 128, in __init__\r\n2017-08-31T11:27:05.702572732Z     if not self.topic.exists():\r\n2017-08-31T11:27:05.702583408Z   File \"/usr/local/lib/python2.7/dist-packages/google/cloud/pubsub/topic.py\", line 200, in exists\r\n2017-08-31T11:27:05.702634134Z     api.topic_get(topic_path=self.full_name)\r\n2017-08-31T11:27:05.702713982Z   File \"/usr/local/lib/python2.7/dist-packages/google/cloud/pubsub/_gax.py\", line 132, in topic_get\r\n2017-08-31T11:27:05.702723634Z     topic_pb = self._gax_api.get_topic(topic_path)\r\n2017-08-31T11:27:05.702729859Z   File \"/usr/local/lib/python2.7/dist-packages/google/cloud/gapic/pubsub/v1/publisher_client.py\", line 341, in get_topic\r\n2017-08-31T11:27:05.702735747Z     return self._get_topic(request, options)\r\n2017-08-31T11:27:05.702754679Z   File \"/usr/local/lib/python2.7/dist-packages/google/gax/api_callable.py\", line 428, in inner\r\n2017-08-31T11:27:05.702802263Z     return api_caller(api_call, this_settings, request)\r\n2017-08-31T11:27:05.70281738Z   File \"/usr/local/lib/python2.7/dist-packages/google/gax/api_callable.py\", line 416, in base_caller\r\n2017-08-31T11:27:05.702884253Z     return api_call(*args)\r\n2017-08-31T11:27:05.702898662Z   File \"/usr/local/lib/python2.7/dist-packages/google/gax/api_callable.py\", line 376, in inner\r\n2017-08-31T11:27:05.703026405Z     return a_func(*args, **kwargs)\r\n2017-08-31T11:27:05.703084222Z   File \"/usr/local/lib/python2.7/dist-packages/google/gax/retry.py\", line 127, in inner\r\n2017-08-31T11:27:05.703115599Z     ' classified as transient', exception)\r\n2017-08-31T11:27:05.703271957Z google.gax.errors.RetryError: GaxError(Exception occurred in retry method that was not classified as transient, caused by <_Rendezvous of RPC that terminated with (StatusCode.UNIMPLEMENTED, unknown service google.pubsub.v1.Publisher)>)\r\n```\r\n"},"comment":{"url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-python/issues/comments/331200770","html_url":"https://github.com/GoogleCloudPlatform/google-cloud-python/issues/3905#issuecomment-331200770","issue_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-python/issues/3905","id":331200770,"user":{"login":"robhaswell","id":415486,"avatar_url":"https://avatars0.githubusercontent.com/u/415486?v=4","gravatar_id":"","url":"https://api.github.com/users/robhaswell","html_url":"https://github.com/robhaswell","followers_url":"https://api.github.com/users/robhaswell/followers","following_url":"https://api.github.com/users/robhaswell/following{/other_user}","gists_url":"https://api.github.com/users/robhaswell/gists{/gist_id}","starred_url":"https://api.github.com/users/robhaswell/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/robhaswell/subscriptions","organizations_url":"https://api.github.com/users/robhaswell/orgs","repos_url":"https://api.github.com/users/robhaswell/repos","events_url":"https://api.github.com/users/robhaswell/events{/privacy}","received_events_url":"https://api.github.com/users/robhaswell/received_events","type":"User","site_admin":false},"created_at":"2017-09-21T15:55:16Z","updated_at":"2017-09-21T15:55:16Z","author_association":"NONE","body":"For near-future historians, this is how this programmer did meaningful error handling:\r\n\r\n```python\r\nfrom google.gax.errors import RetryError\r\nfrom grpc import StatusCode\r\n\r\ntry:\r\n  leap_without_looking()\r\nexcept RetryError as exc:\r\n    if exc.cause.code() is not StatusCode.ALREADY_EXISTS:\r\n        raise\r\n```"}}
{"actor":{"display_login":"robhaswell"}}