Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
tseaver opened this issue Jul 16, 2021 · 3 comments
Assignees
Labels
api: spanner Issues related to the googleapis/python-spanner API. external This issue is blocked on a bug with the actual product. samples Issues that are directly related to samples. type: process A process-related concern. May include testing, release, or the like.

Comments

@tseaver
Copy link
Contributor

tseaver commented Jul 16, 2021

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.

@tseaver tseaver added external This issue is blocked on a bug with the actual product. samples Issues that are directly related to samples. labels Jul 16, 2021
@product-auto-label product-auto-label bot added the api: spanner Issues related to the googleapis/python-spanner API. label Jul 16, 2021
@tseaver
Copy link
Contributor Author

tseaver commented Jul 16, 2021

@larkee That package ID was added recently, in PR #373.

@tseaver tseaver added the type: process A process-related concern. May include testing, release, or the like. label Jul 16, 2021
@tseaver
Copy link
Contributor Author

tseaver commented 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
Copy link
Contributor

larkee commented Jul 20, 2021

Closing in favour of #421

@larkee larkee closed this as completed Jul 20, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api: spanner Issues related to the googleapis/python-spanner API. external This issue is blocked on a bug with the actual product. samples Issues that are directly related to samples. type: process A process-related concern. May include testing, release, or the like.
Projects
None yet
Development

No branches or pull requests

2 participants