René's URL Explorer Experiment


Title: `bidi.BackgroundConsumer.start()` eats exception when `_bidi_rpc.open()` fails · Issue #268 · googleapis/python-api-core · GitHub

Open Graph Title: `bidi.BackgroundConsumer.start()` eats exception when `_bidi_rpc.open()` fails · Issue #268 · googleapis/python-api-core

X Title: `bidi.BackgroundConsumer.start()` eats exception when `_bidi_rpc.open()` fails · Issue #268 · googleapis/python-api-core

Description: Environment details OS type and version: Python version: python --version Python 3.9.5 pip version: pip --version conda 4.9.2 pip 21.2.1 from /usr/local/Caskroom/miniconda/base/envs/dev-3.9/lib/python3.9/site-packages/pip (python 3.9) go...

Open Graph Description: Environment details OS type and version: Python version: python --version Python 3.9.5 pip version: pip --version conda 4.9.2 pip 21.2.1 from /usr/local/Caskroom/miniconda/base/envs/dev-3.9/lib/pyt...

X Description: Environment details OS type and version: Python version: python --version Python 3.9.5 pip version: pip --version conda 4.9.2 pip 21.2.1 from /usr/local/Caskroom/miniconda/base/envs/dev-3.9/lib/pyt...

Opengraph URL: https://github.com/googleapis/python-api-core/issues/268

X: @github

direct link

Domain: github.com


Hey, it has json ld scripts:
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"`bidi.BackgroundConsumer.start()` eats exception when `_bidi_rpc.open()` fails","articleBody":"#### Environment details\r\n\r\n  - OS type and version:\r\n  - Python version: `python --version`\r\n\r\nPython 3.9.5\r\n\r\n  - pip version: `pip --version`\r\n\r\n```\r\nconda 4.9.2\r\npip 21.2.1 from /usr/local/Caskroom/miniconda/base/envs/dev-3.9/lib/python3.9/site-packages/pip (python 3.9)\r\n```\r\n\r\n  - `google-api-core` version: `pip show google-api-core`\r\n\r\n```\r\nconda list google-api-core        # packages in environment at /usr/local/Caskroom/miniconda/base/envs/dev-3.9:\r\n#\r\n# Name                    Version                   Build  Channel\r\ngoogle-api-core           2.0.1                     dev_0    \u003cdevelop @ dcb6ebd9994fddcb1729150df1675ebf8c503a73\u003e\r\n```\r\n\r\n\r\n\r\n#### Steps to reproduce\r\n\r\n1. Construct a BackgroundConsumer and BidiRpc.\r\n2. Intentionally make the initial request one that will fail.\r\n3. Observe that RPC \"done callback\" is never called. Nor is any notification sent to `on_response`.\r\n\r\n\r\n#### Code example\r\n\r\n```python\r\n        start_time = time.monotonic()\r\n        self._inital_request = initial_request\r\n        self._stream_name = initial_request.write_stream\r\n\r\n        inital_response_future = AppendRowsFuture()\r\n        self._futures_queue.put(inital_response_future)\r\n\r\n        self._rpc = bidi.BidiRpc(\r\n            self._client.append_rows,\r\n            initial_request=self._inital_request,\r\n            # TODO: pass in retry and timeout. Blocked by\r\n            # https://github.com/googleapis/python-api-core/issues/262\r\n            metadata=tuple(\r\n                itertools.chain(\r\n                    self._metadata,\r\n                    # This header is required so that the BigQuery Storage API\r\n                    # knows which region to route the request to.\r\n                    ((\"x-goog-request-params\", f\"write_stream={self._stream_name}\"),),\r\n                )\r\n            ),\r\n        )\r\n        self._rpc.add_done_callback(self._on_rpc_done)\r\n\r\n        self._consumer = bidi.BackgroundConsumer(self._rpc, self._on_response)\r\n        self._consumer.start()\r\n\r\n        # Make sure RPC has started before returning.\r\n        # Without this, consumers may get:\r\n        #\r\n        # ValueError: Can not send() on an RPC that has never been open()ed.\r\n        #\r\n        # when they try to send a request.\r\n        while not self._rpc.is_active and self._consumer.is_active:\r\n            # Avoid 100% CPU while waiting for RPC to be ready.\r\n            time.sleep(_WRITE_OPEN_INTERVAL)\r\n\r\n            # TODO: Check retry.deadline instead of (per-request) timeout.\r\n            # Blocked by\r\n            # https://github.com/googleapis/python-api-core/issues/262\r\n            if timeout is None:\r\n                continue\r\n            current_time = time.monotonic()\r\n            if current_time - start_time \u003e timeout:\r\n                break\r\n\r\n        return inital_response_future\r\n```\r\n\r\n```\r\n...\r\n\r\n    request = types.AppendRowsRequest()\r\n    request.write_stream = \"invalid\"\r\n    proto_data = types.AppendRowsRequest.ProtoData()\r\n    proto_data.rows = proto_rows\r\n\r\n...\r\n\r\n    request.offset = 0\r\n    # requests = generate_sample_data(write_stream.name)\r\n    append_rows_stream, response_future_1 = write_client.append_rows(request)\r\n```\r\n\r\nSee https://github.com/googleapis/python-bigquery-storage/pull/284\r\n\r\n#### Stack trace\r\n\r\nThe problem is that there isn't a stacktrace, but here's the output when I turn on DEBUG logging:\r\n\r\n```\r\n$ pytest 'samples/snippets/append_rows_proto2_test.py::test_append_rows_proto2[US]' --log-cli-level=DEBUG\r\n================================ test session starts ================================\r\nplatform darwin -- Python 3.9.5, pytest-6.2.4, py-1.10.0, pluggy-0.13.1\r\nrootdir: /Users/swast/src/github.com/googleapis/python-bigquery-storage\r\nplugins: cov-2.12.1, asyncio-0.15.1, requests-mock-1.9.3\r\ncollected 1 item                                                                    \r\n\r\nsamples/snippets/append_rows_proto2_test.py::test_append_rows_proto2[US] \r\n---------------------------------- live log setup -----------------------------------\r\nDEBUG    google.auth._default:_default.py:206 Checking None for explicit credentials as part of auth process...\r\nDEBUG    google.auth._default:_default.py:181 Checking Cloud SDK credentials as part of auth process...\r\nDEBUG    google.cloud.bigquery.opentelemetry_tracing:opentelemetry_tracing.py:66 This service is instrumented using OpenTelemetry. OpenTelemetry could not be imported; please add opentelemetry-api and opentelemetry-instrumentation packages in order to get BigQuery Tracing data.\r\nDEBUG    urllib3.util.retry:retry.py:333 Converted retries value: 3 -\u003e Retry(total=3, connect=None, read=None, redirect=None, status=None)\r\nDEBUG    google.auth.transport.requests:requests.py:182 Making request: POST https://oauth2.googleapis.com/token\r\nDEBUG    urllib3.connectionpool:connectionpool.py:971 Starting new HTTPS connection (1): oauth2.googleapis.com:443\r\nDEBUG    urllib3.connectionpool:connectionpool.py:452 https://oauth2.googleapis.com:443 \"POST /token HTTP/1.1\" 200 None\r\nDEBUG    urllib3.connectionpool:connectionpool.py:971 Starting new HTTPS connection (1): bigquery.googleapis.com:443\r\nDEBUG    urllib3.connectionpool:connectionpool.py:452 https://bigquery.googleapis.com:443 \"GET /bigquery/v2/projects/swast-scratch/datasets?prettyPrint=false HTTP/1.1\" 200 None\r\nDEBUG    urllib3.connectionpool:connectionpool.py:452 https://bigquery.googleapis.com:443 \"POST /bigquery/v2/projects/swast-scratch/datasets?prettyPrint=false HTTP/1.1\" 200 None\r\nDEBUG    urllib3.connectionpool:connectionpool.py:452 https://bigquery.googleapis.com:443 \"POST /bigquery/v2/projects/swast-scratch/datasets?prettyPrint=false HTTP/1.1\" 200 None\r\nDEBUG    urllib3.connectionpool:connectionpool.py:452 https://bigquery.googleapis.com:443 \"POST /bigquery/v2/projects/swast-scratch/datasets/python_bigquery_storage_samples_snippets_20210831210924_9f81bc/tables?prettyPrint=false HTTP/1.1\" 200 None\r\n----------------------------------- live log call -----------------------------------\r\nDEBUG    google.auth._default:_default.py:206 Checking None for explicit credentials as part of auth process...\r\nDEBUG    google.auth._default:_default.py:181 Checking Cloud SDK credentials as part of auth process...\r\nDEBUG    google.auth.transport.requests:requests.py:182 Making request: POST https://oauth2.googleapis.com/token\r\nDEBUG    urllib3.connectionpool:connectionpool.py:971 Starting new HTTPS connection (1): oauth2.googleapis.com:443\r\nDEBUG    urllib3.connectionpool:connectionpool.py:452 https://oauth2.googleapis.com:443 \"POST /token HTTP/1.1\" 200 None\r\nDEBUG    google.api_core.bidi:bidi.py:695 Started helper thread Thread-ConsumeBidirectionalStream\r\nDEBUG    google.api_core.bidi:bidi.py:660 Thread-ConsumeBidirectionalStream caught error 400 Invalid stream name. Entity: invalid and will exit. Generally this is due to the RPC itself being cancelled and the error will be surfaced to the calling code.\r\nTraceback (most recent call last):\r\n  File \"/Users/swast/src/github.com/googleapis/python-api-core/google/api_core/grpc_helpers.py\", line 156, in error_remapped_callable\r\n    return _StreamingResponseIterator(\r\n  File \"/Users/swast/src/github.com/googleapis/python-api-core/google/api_core/grpc_helpers.py\", line 82, in __init__\r\n    self._stored_first_result = next(self._wrapped)\r\n  File \"/usr/local/Caskroom/miniconda/base/envs/dev-3.9/lib/python3.9/site-packages/grpc/_channel.py\", line 426, in __next__\r\n    return self._next()\r\n  File \"/usr/local/Caskroom/miniconda/base/envs/dev-3.9/lib/python3.9/site-packages/grpc/_channel.py\", line 826, in _next\r\n    raise self\r\ngrpc._channel._MultiThreadedRendezvous: \u003c_MultiThreadedRendezvous of RPC that terminated with:\r\n        status = StatusCode.INVALID_ARGUMENT\r\n        details = \"Invalid stream name. Entity: invalid\"\r\n        debug_error_string = \"{\"created\":\"@1630444168.199761000\",\"description\":\"Error received from peer ipv6:[2607:f8b0:4009:819::200a]:443\",\"file\":\"src/core/lib/surface/call.cc\",\"file_line\":1067,\"grpc_message\":\"Invalid stream name. Entity: invalid\",\"grpc_status\":3}\"\r\n\u003e\r\n\r\nThe above exception was the direct cause of the following exception:\r\n\r\nTraceback (most recent call last):\r\n  File \"/Users/swast/src/github.com/googleapis/python-api-core/google/api_core/bidi.py\", line 636, in _thread_main\r\n    self._bidi_rpc.open()\r\n  File \"/Users/swast/src/github.com/googleapis/python-api-core/google/api_core/bidi.py\", line 279, in open\r\n    call = self._start_rpc(iter(request_generator), metadata=self._rpc_metadata)\r\n  File \"/Users/swast/src/github.com/googleapis/python-bigquery-storage/google/cloud/bigquery_storage_v1beta2/services/big_query_write/client.py\", line 522, in append_rows\r\n    response = rpc(requests, retry=retry, timeout=timeout, metadata=metadata,)\r\n  File \"/Users/swast/src/github.com/googleapis/python-api-core/google/api_core/gapic_v1/method.py\", line 142, in __call__\r\n    return wrapped_func(*args, **kwargs)\r\n  File \"/Users/swast/src/github.com/googleapis/python-api-core/google/api_core/retry.py\", line 283, in retry_wrapped_func\r\n    return retry_target(\r\n  File \"/Users/swast/src/github.com/googleapis/python-api-core/google/api_core/retry.py\", line 190, in retry_target\r\n    return target()\r\n  File \"/Users/swast/src/github.com/googleapis/python-api-core/google/api_core/grpc_helpers.py\", line 160, in error_remapped_callable\r\n    raise exceptions.from_grpc_error(exc) from exc\r\ngoogle.api_core.exceptions.InvalidArgument: 400 Invalid stream name. Entity: invalid\r\nINFO     google.api_core.bidi:bidi.py:676 Thread-ConsumeBidirectionalStream exiting\r\nFAILED                                                                        [100%]\r\n--------------------------------- live log teardown ---------------------------------\r\nDEBUG    urllib3.connectionpool:connectionpool.py:452 https://bigquery.googleapis.com:443 \"DELETE /bigquery/v2/projects/swast-scratch/datasets/python_bigquery_storage_samples_snippets_20210831210924_9f81bc/tables/append_rows_proto2_9096?prettyPrint=false HTTP/1.1\" 200 None\r\nDEBUG    urllib3.connectionpool:connectionpool.py:452 https://bigquery.googleapis.com:443 \"DELETE /bigquery/v2/projects/swast-scratch/datasets/python_bigquery_storage_samples_snippets_20210831210924_5c5f49?deleteContents=true\u0026prettyPrint=false HTTP/1.1\" 200 None\r\nDEBUG    urllib3.connectionpool:connectionpool.py:452 https://bigquery.googleapis.com:443 \"DELETE /bigquery/v2/projects/swast-scratch/datasets/python_bigquery_storage_samples_snippets_20210831210924_9f81bc?deleteContents=true\u0026prettyPrint=false HTTP/1.1\" 200 None\r\n\r\n\r\n===================================== FAILURES ======================================\r\n____________________________ test_append_rows_proto2[US] ____________________________\r\n\r\ncapsys = \u003c_pytest.capture.CaptureFixture object at 0x110c67370\u003e\r\nbigquery_client = \u003cgoogle.cloud.bigquery.client.Client object at 0x110c6de20\u003e\r\nsample_data_table = 'swast-scratch.python_bigquery_storage_samples_snippets_20210831210924_9f81bc.append_rows_proto2_9096'\r\n\r\n\u003e   ???\r\n\r\n/Users/swast/src/python-bigquery-storage/samples/snippets/append_rows_proto2_test.py:58: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _\r\nsamples/snippets/append_rows_proto2.py:180: in append_rows_proto2\r\n    response_future_2 = append_rows_stream.send(request)\r\ngoogle/cloud/bigquery_storage_v1beta2/writer.py:206: in send\r\n    self._rpc.send(request)\r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _\r\n\r\nself = \u003cgoogle.api_core.bidi.BidiRpc object at 0x110d7b760\u003e\r\nrequest = offset {\r\n  value: 6\r\n}\r\nproto_rows {\r\n  rows {\r\n    serialized_rows: \"0\\243\\223\\001\\200\\001\\007\"\r\n    serialized_rows: \":\\0...ed_rows: \"Z\\01711:07:48.123456\\200\\001\\013\"\r\n    serialized_rows: \"`\\206\\341\\307\\343\\357\\253\\362\\002\\200\\001\\014\"\r\n  }\r\n}\r\n\r\n\r\n    def send(self, request):\r\n        \"\"\"Queue a message to be sent on the stream.\r\n    \r\n        Send is non-blocking.\r\n    \r\n        If the underlying RPC has been closed, this will raise.\r\n    \r\n        Args:\r\n            request (protobuf.Message): The request to send.\r\n        \"\"\"\r\n        if self.call is None:\r\n\u003e           raise ValueError(\"Can not send() on an RPC that has never been open()ed.\")\r\nE           ValueError: Can not send() on an RPC that has never been open()ed.\r\n\r\n../python-api-core/google/api_core/bidi.py:315: ValueError\r\n-------------------------------- Captured log setup ---------------------------------\r\nDEBUG    google.auth._default:_default.py:206 Checking None for explicit credentials as part of auth process...\r\nDEBUG    google.auth._default:_default.py:181 Checking Cloud SDK credentials as part of auth process...\r\nDEBUG    google.cloud.bigquery.opentelemetry_tracing:opentelemetry_tracing.py:66 This service is instrumented using OpenTelemetry. OpenTelemetry could not be imported; please add opentelemetry-api and opentelemetry-instrumentation packages in order to get BigQuery Tracing data.\r\nDEBUG    urllib3.util.retry:retry.py:333 Converted retries value: 3 -\u003e Retry(total=3, connect=None, read=None, redirect=None, status=None)\r\nDEBUG    google.auth.transport.requests:requests.py:182 Making request: POST https://oauth2.googleapis.com/token\r\nDEBUG    urllib3.connectionpool:connectionpool.py:971 Starting new HTTPS connection (1): oauth2.googleapis.com:443\r\nDEBUG    urllib3.connectionpool:connectionpool.py:452 https://oauth2.googleapis.com:443 \"POST /token HTTP/1.1\" 200 None\r\nDEBUG    urllib3.connectionpool:connectionpool.py:971 Starting new HTTPS connection (1): bigquery.googleapis.com:443\r\nDEBUG    urllib3.connectionpool:connectionpool.py:452 https://bigquery.googleapis.com:443 \"GET /bigquery/v2/projects/swast-scratch/datasets?prettyPrint=false HTTP/1.1\" 200 None\r\nDEBUG    urllib3.connectionpool:connectionpool.py:452 https://bigquery.googleapis.com:443 \"POST /bigquery/v2/projects/swast-scratch/datasets?prettyPrint=false HTTP/1.1\" 200 None\r\nDEBUG    urllib3.connectionpool:connectionpool.py:452 https://bigquery.googleapis.com:443 \"POST /bigquery/v2/projects/swast-scratch/datasets?prettyPrint=false HTTP/1.1\" 200 None\r\nDEBUG    urllib3.connectionpool:connectionpool.py:452 https://bigquery.googleapis.com:443 \"POST /bigquery/v2/projects/swast-scratch/datasets/python_bigquery_storage_samples_snippets_20210831210924_9f81bc/tables?prettyPrint=false HTTP/1.1\" 200 None\r\n--------------------------------- Captured log call ---------------------------------\r\nDEBUG    google.auth._default:_default.py:206 Checking None for explicit credentials as part of auth process...\r\nDEBUG    google.auth._default:_default.py:181 Checking Cloud SDK credentials as part of auth process...\r\nDEBUG    google.auth.transport.requests:requests.py:182 Making request: POST https://oauth2.googleapis.com/token\r\nDEBUG    urllib3.connectionpool:connectionpool.py:971 Starting new HTTPS connection (1): oauth2.googleapis.com:443\r\nDEBUG    urllib3.connectionpool:connectionpool.py:452 https://oauth2.googleapis.com:443 \"POST /token HTTP/1.1\" 200 None\r\nDEBUG    google.api_core.bidi:bidi.py:695 Started helper thread Thread-ConsumeBidirectionalStream\r\nDEBUG    google.api_core.bidi:bidi.py:660 Thread-ConsumeBidirectionalStream caught error 400 Invalid stream name. Entity: invalid and will exit. Generally this is due to the RPC itself being cancelled and the error will be surfaced to the calling code.\r\nTraceback (most recent call last):\r\n  File \"/Users/swast/src/github.com/googleapis/python-api-core/google/api_core/grpc_helpers.py\", line 156, in error_remapped_callable\r\n    return _StreamingResponseIterator(\r\n  File \"/Users/swast/src/github.com/googleapis/python-api-core/google/api_core/grpc_helpers.py\", line 82, in __init__\r\n    self._stored_first_result = next(self._wrapped)\r\n  File \"/usr/local/Caskroom/miniconda/base/envs/dev-3.9/lib/python3.9/site-packages/grpc/_channel.py\", line 426, in __next__\r\n    return self._next()\r\n  File \"/usr/local/Caskroom/miniconda/base/envs/dev-3.9/lib/python3.9/site-packages/grpc/_channel.py\", line 826, in _next\r\n    raise self\r\ngrpc._channel._MultiThreadedRendezvous: \u003c_MultiThreadedRendezvous of RPC that terminated with:\r\n        status = StatusCode.INVALID_ARGUMENT\r\n        details = \"Invalid stream name. Entity: invalid\"\r\n        debug_error_string = \"{\"created\":\"@1630444168.199761000\",\"description\":\"Error received from peer ipv6:[2607:f8b0:4009:819::200a]:443\",\"file\":\"src/core/lib/surface/call.cc\",\"file_line\":1067,\"grpc_message\":\"Invalid stream name. Entity: invalid\",\"grpc_status\":3}\"\r\n\u003e\r\n\r\nThe above exception was the direct cause of the following exception:\r\n\r\nTraceback (most recent call last):\r\n  File \"/Users/swast/src/github.com/googleapis/python-api-core/google/api_core/bidi.py\", line 636, in _thread_main\r\n    self._bidi_rpc.open()\r\n  File \"/Users/swast/src/github.com/googleapis/python-api-core/google/api_core/bidi.py\", line 279, in open\r\n    call = self._start_rpc(iter(request_generator), metadata=self._rpc_metadata)\r\n  File \"/Users/swast/src/github.com/googleapis/python-bigquery-storage/google/cloud/bigquery_storage_v1beta2/services/big_query_write/client.py\", line 522, in append_rows\r\n    response = rpc(requests, retry=retry, timeout=timeout, metadata=metadata,)\r\n  File \"/Users/swast/src/github.com/googleapis/python-api-core/google/api_core/gapic_v1/method.py\", line 142, in __call__\r\n    return wrapped_func(*args, **kwargs)\r\n  File \"/Users/swast/src/github.com/googleapis/python-api-core/google/api_core/retry.py\", line 283, in retry_wrapped_func\r\n    return retry_target(\r\n  File \"/Users/swast/src/github.com/googleapis/python-api-core/google/api_core/retry.py\", line 190, in retry_target\r\n    return target()\r\n  File \"/Users/swast/src/github.com/googleapis/python-api-core/google/api_core/grpc_helpers.py\", line 160, in error_remapped_callable\r\n    raise exceptions.from_grpc_error(exc) from exc\r\ngoogle.api_core.exceptions.InvalidArgument: 400 Invalid stream name. Entity: invalid\r\nINFO     google.api_core.bidi:bidi.py:676 Thread-ConsumeBidirectionalStream exiting\r\n------------------------------- Captured log teardown -------------------------------\r\nDEBUG    urllib3.connectionpool:connectionpool.py:452 https://bigquery.googleapis.com:443 \"DELETE /bigquery/v2/projects/swast-scratch/datasets/python_bigquery_storage_samples_snippets_20210831210924_9f81bc/tables/append_rows_proto2_9096?prettyPrint=false HTTP/1.1\" 200 None\r\nDEBUG    urllib3.connectionpool:connectionpool.py:452 https://bigquery.googleapis.com:443 \"DELETE /bigquery/v2/projects/swast-scratch/datasets/python_bigquery_storage_samples_snippets_20210831210924_5c5f49?deleteContents=true\u0026prettyPrint=false HTTP/1.1\" 200 None\r\nDEBUG    urllib3.connectionpool:connectionpool.py:452 https://bigquery.googleapis.com:443 \"DELETE /bigquery/v2/projects/swast-scratch/datasets/python_bigquery_storage_samples_snippets_20210831210924_9f81bc?deleteContents=true\u0026prettyPrint=false HTTP/1.1\" 200 None\r\n============================== short test summary info ==============================\r\nFAILED samples/snippets/append_rows_proto2_test.py::test_append_rows_proto2[US] - ...\r\n================================= 1 failed in 7.33s =================================\r\n```\r\n","author":{"url":"https://github.com/tswast","@type":"Person","name":"tswast"},"datePublished":"2021-08-31T21:09:59.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":3},"url":"https://github.com/268/python-api-core/issues/268"}

route-pattern/_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format)
route-controllervoltron_issues_fragments
route-actionissue_layout
fetch-noncev2:b843942f-7d1e-8f4a-baf4-56145b690743
current-catalog-service-hash81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114
request-id9FA6:13A7CE:15D682C:1E4D895:6A4DF046
html-safe-nonce65c0ecee20bb143fd62ed6cd6881170ee52fae716be38c9bff87b6184b8f9ecd
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI5RkE2OjEzQTdDRToxNUQ2ODJDOjFFNEQ4OTU6NkE0REYwNDYiLCJ2aXNpdG9yX2lkIjoiNjMyODMzMjYxNjc1Njc1MjQ1NSIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9
visitor-hmace8d73f759432bfb168ef0244b6a28bb5c4e3a81f56cc8e1a869417368dea2daa
hovercard-subject-tagissue:984323570
github-keyboard-shortcutsrepository,issues,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///voltron/issues_fragments/issue_layout
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/googleapis/python-api-core/268/issue_layout
twitter:imagehttps://opengraph.githubassets.com/8ff48b8412c598d09b780f8e0b320b4a09ec1882535db10de00b447763d0f1fc/googleapis/python-api-core/issues/268
twitter:cardsummary_large_image
og:imagehttps://opengraph.githubassets.com/8ff48b8412c598d09b780f8e0b320b4a09ec1882535db10de00b447763d0f1fc/googleapis/python-api-core/issues/268
og:image:altEnvironment details OS type and version: Python version: python --version Python 3.9.5 pip version: pip --version conda 4.9.2 pip 21.2.1 from /usr/local/Caskroom/miniconda/base/envs/dev-3.9/lib/pyt...
og:image:width1200
og:image:height600
og:site_nameGitHub
og:typeobject
og:author:usernametswast
hostnamegithub.com
expected-hostnamegithub.com
None5818716c93c6a2925b815402541a32814e43a7b1261c322b0c2df75224289566
turbo-cache-controlno-preview
go-importgithub.com/googleapis/python-api-core git https://github.com/googleapis/python-api-core.git
octolytics-dimension-user_id16785467
octolytics-dimension-user_logingoogleapis
octolytics-dimension-repository_id226992456
octolytics-dimension-repository_nwogoogleapis/python-api-core
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id226992456
octolytics-dimension-repository_network_root_nwogoogleapis/python-api-core
turbo-body-classeslogged-out env-production page-responsive
disable-turbofalse
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
releasef4bb89367ca678f057d79b1abc45d6675b1bd5b2
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/googleapis/python-api-core/issues/268#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fgoogleapis%2Fpython-api-core%2Fissues%2F268
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub Copilot appDirect agents from issue to mergehttps://github.com/features/ai/github-app
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
View all resourceshttps://github.com/resources
GitHub SponsorsFund open source developershttps://github.com/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/accelerator
GitHub Starshttps://stars.github.com
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fgoogleapis%2Fpython-api-core%2Fissues%2F268
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fvoltron%2Fissues_fragments%2Fissue_layout&source=header-repo&source_repo=googleapis%2Fpython-api-core
Reloadhttps://github.com/googleapis/python-api-core/issues/268
Reloadhttps://github.com/googleapis/python-api-core/issues/268
Reloadhttps://github.com/googleapis/python-api-core/issues/268
Please reload this pagehttps://github.com/googleapis/python-api-core/issues/268
googleapis https://github.com/googleapis
python-api-corehttps://github.com/googleapis/python-api-core
Notifications https://github.com/login?return_to=%2Fgoogleapis%2Fpython-api-core
Fork 97 https://github.com/login?return_to=%2Fgoogleapis%2Fpython-api-core
Star 144 https://github.com/login?return_to=%2Fgoogleapis%2Fpython-api-core
Code https://github.com/googleapis/python-api-core
Issues 0 https://github.com/googleapis/python-api-core/issues
Pull requests 0 https://github.com/googleapis/python-api-core/pulls
Actions https://github.com/googleapis/python-api-core/actions
Projects https://github.com/googleapis/python-api-core/projects
Security and quality 0 https://github.com/googleapis/python-api-core/security
Insights https://github.com/googleapis/python-api-core/pulse
Code https://github.com/googleapis/python-api-core
Issues https://github.com/googleapis/python-api-core/issues
Pull requests https://github.com/googleapis/python-api-core/pulls
Actions https://github.com/googleapis/python-api-core/actions
Projects https://github.com/googleapis/python-api-core/projects
Security and quality https://github.com/googleapis/python-api-core/security
Insights https://github.com/googleapis/python-api-core/pulse
#357https://github.com/googleapis/python-api-core/pull/357
bidi.BackgroundConsumer.start() eats exception when _bidi_rpc.open() failshttps://github.com/googleapis/python-api-core/issues/268#top
#357https://github.com/googleapis/python-api-core/pull/357
https://github.com/parthea
type: cleanupAn internal cleanup or hygiene concern.https://github.com/googleapis/python-api-core/issues?q=state%3Aopen%20label%3A%22type%3A%20cleanup%22
https://github.com/tswast
tswasthttps://github.com/tswast
on Aug 31, 2021https://github.com/googleapis/python-api-core/issues/268#issue-984323570
googleapis/python-bigquery-storage#284https://github.com/googleapis/python-bigquery-storage/pull/284
partheahttps://github.com/parthea
type: cleanupAn internal cleanup or hygiene concern.https://github.com/googleapis/python-api-core/issues?q=state%3Aopen%20label%3A%22type%3A%20cleanup%22
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.