This repository was archived by the owner on Jun 8, 2026. It is now read-only.
Repository navigation
This repository was archived by the owner on Jun 8, 2026. It is now read-only.
samples/snippets.py: missing optimizer statistics package in 'create_client_with_query_options' #417
Copy link
Copy link
Closed
Labels
api: spannerIssues related to the googleapis/python-spanner API.Issues related to the googleapis/python-spanner API.externalThis issue is blocked on a bug with the actual product.This issue is blocked on a bug with the actual product.samplesIssues that are directly related to samples.Issues that are directly related to samples.type: processA process-related concern. May include testing, release, or the like.A process-related concern. May include testing, release, or the like.
Description
From these failures today: 1, 2, 3:
args = (session: "projects/python-docs-samples-tests/instances/test-instance-7a56b372c7/databases/test-db-84dfce0c13/sessions...s"
params {
}
query_options {
optimizer_version: "1"
optimizer_statistics_package: "auto_20191128_14_47_22UTC"
}
,)
kwargs = {'metadata': [('google-cloud-resource-prefix', 'projects/python-docs-samples-tests/instances/test-instance-7a56b372c7/...BSaKgG9895aXkbCh9qw'), ('x-goog-api-client', 'gl-python/3.6.13 grpc/1.38.1 gax/1.31.0 gccl/3.6.0')], 'timeout': 3600.0}
result = <_MultiThreadedRendezvous of RPC that terminated with:
status = StatusCode.INVALID_ARGUMENT
details = "Requested opt...:1066,"grpc_message":"Requested optimizer statistics package not found: auto_20191128_14_47_22UTC.","grpc_status":3}"
>
prefetch_first = True
@general_helpers.wraps(callable_)
def error_remapped_callable(*args, **kwargs):
try:
result = callable_(*args, **kwargs)
# Auto-fetching the first result causes PubSub client's streaming pull
# to hang when re-opening the stream, thus we need examine the hacky
# hidden flag to see if pre-fetching is disabled.
# https://github.com/googleapis/python-pubsub/issues/93#issuecomment-630762257
prefetch_first = getattr(callable_, "_prefetch_first_result_", True)
return _StreamingResponseIterator(
> result, prefetch_first_result=prefetch_first
)
.nox/py-3-6/lib/python3.6/site-packages/google/api_core/grpc_helpers.py:161:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <google.api_core.grpc_helpers._StreamingResponseIterator object at 0x7fdcd4dbb710>
wrapped = <_MultiThreadedRendezvous of RPC that terminated with:
status = StatusCode.INVALID_ARGUMENT
details = "Requested opt...:1066,"grpc_message":"Requested optimizer statistics package not found: auto_20191128_14_47_22UTC.","grpc_status":3}"
>
prefetch_first_result = True
def __init__(self, wrapped, prefetch_first_result=True):
self._wrapped = wrapped
# This iterator is used in a retry context, and returned outside after init.
# gRPC will not throw an exception until the stream is consumed, so we need
# to retrieve the first result, in order to fail, in order to trigger a retry.
try:
if prefetch_first_result:
> self._stored_first_result = six.next(self._wrapped)
.nox/py-3-6/lib/python3.6/site-packages/google/api_core/grpc_helpers.py:83:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <_MultiThreadedRendezvous of RPC that terminated with:
status = StatusCode.INVALID_ARGUMENT
details = "Requested opt...:1066,"grpc_message":"Requested optimizer statistics package not found: auto_20191128_14_47_22UTC.","grpc_status":3}"
>
def __next__(self):
> return self._next()
.nox/py-3-6/lib/python3.6/site-packages/grpc/_channel.py:426:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <_MultiThreadedRendezvous of RPC that terminated with:
status = StatusCode.INVALID_ARGUMENT
details = "Requested opt...:1066,"grpc_message":"Requested optimizer statistics package not found: auto_20191128_14_47_22UTC.","grpc_status":3}"
>
def _next(self):
with self._state.condition:
if self._state.code is None:
event_handler = _event_handler(self._state,
self._response_deserializer)
self._state.due.add(cygrpc.OperationType.receive_message)
operating = self._call.operate(
(cygrpc.ReceiveMessageOperation(_EMPTY_FLAGS),),
event_handler)
if not operating:
self._state.due.remove(cygrpc.OperationType.receive_message)
elif self._state.code is grpc.StatusCode.OK:
raise StopIteration()
else:
raise self
def _response_ready():
return (self._state.response is not None or
(cygrpc.OperationType.receive_message
not in self._state.due and
self._state.code is not None))
_common.wait(self._state.condition.wait, _response_ready)
if self._state.response is not None:
response = self._state.response
self._state.response = None
return response
elif cygrpc.OperationType.receive_message not in self._state.due:
if self._state.code is grpc.StatusCode.OK:
raise StopIteration()
elif self._state.code is not None:
> raise self
E grpc._channel._MultiThreadedRendezvous: <_MultiThreadedRendezvous of RPC that terminated with:
E status = StatusCode.INVALID_ARGUMENT
E details = "Requested optimizer statistics package not found: auto_20191128_14_47_22UTC."
E debug_error_string = "{"created":"@1626448167.694914863","description":"Error received from peer ipv4:74.125.142.95:443","file":"src/core/lib/surface/call.cc","file_line":1066,"grpc_message":"Requested optimizer statistics package not found: auto_20191128_14_47_22UTC.","grpc_status":3}"
E >
.nox/py-3-6/lib/python3.6/site-packages/grpc/_channel.py:826: _MultiThreadedRendezvous
The above exception was the direct cause of the following exception:
capsys = <_pytest.capture.CaptureFixture object at 0x7fdcd1c96c88>
def test_create_client_with_query_options(capsys):
> snippets.create_client_with_query_options(INSTANCE_ID, DATABASE_ID)
snippets_test.py:448:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
snippets.py:1768: in create_client_with_query_options
for row in results:
../../google/cloud/spanner_v1/streamed.py:149: in __iter__
self._consume_next()
../../google/cloud/spanner_v1/streamed.py:121: in _consume_next
response = six.next(self._response_iterator)
../../google/cloud/spanner_v1/snapshot.py:59: in _restart_on_unavailable
iterator = method(request=request)
../../google/cloud/spanner_v1/services/spanner/client.py:884: in execute_streaming_sql
response = rpc(request, retry=retry, timeout=timeout, metadata=metadata,)
.nox/py-3-6/lib/python3.6/site-packages/google/api_core/gapic_v1/method.py:145: in __call__
return wrapped_func(*args, **kwargs)
.nox/py-3-6/lib/python3.6/site-packages/google/api_core/timeout.py:102: in func_with_timeout
return func(*args, **kwargs)
.nox/py-3-6/lib/python3.6/site-packages/google/api_core/grpc_helpers.py:164: in error_remapped_callable
six.raise_from(exceptions.from_grpc_error(exc), exc)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
value = None
from_value = <_MultiThreadedRendezvous of RPC that terminated with:
status = StatusCode.INVALID_ARGUMENT
details = "Requested opt...:1066,"grpc_message":"Requested optimizer statistics package not found: auto_20191128_14_47_22UTC.","grpc_status":3}"
>
> ???
E google.api_core.exceptions.InvalidArgument: 400 Requested optimizer statistics package not found: auto_20191128_14_47_22UTC.
<string>:3: InvalidArgument
I have no idea how to find the list of "correct" optimizer statistics packages. I've checked the Managing the query optimizer and Optimizer Version History docs. The "managing" doc actually uses this sample, and all the other languages use the same package.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
api: spannerIssues related to the googleapis/python-spanner API.Issues related to the googleapis/python-spanner API.externalThis issue is blocked on a bug with the actual product.This issue is blocked on a bug with the actual product.samplesIssues that are directly related to samples.Issues that are directly related to samples.type: processA process-related concern. May include testing, release, or the like.A process-related concern. May include testing, release, or the like.
Activity
tseaver commentedon Jul 16, 2021
@larkee That package ID was added recently, in PR #373.
tseaver commentedon Jul 16, 2021
Hmm, that snippet just started passing for me locally. Maybe somebody put the stats package back, after deleting it in error?
larkee commentedon Jul 20, 2021
Closing in favour of #421