Skip to content

samples/snippets.py: missing optimizer statistics package in 'create_client_with_query_options' #417

@tseaver

Description

@tseaver

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.

Metadata

Metadata

Assignees

Labels

api: spannerIssues related to the googleapis/python-spanner API.externalThis issue is blocked on a bug with the actual product.samplesIssues that are directly related to samples.type: processA process-related concern. May include testing, release, or the like.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions