Description
This test failed!
To configure my behavior, see the Flaky Bot documentation.
If I'm commenting on this issue too often, add the flakybot: quiet
label and
I will stop commenting.
commit: 5e50beb
buildURL: Build Status, Sponge
status: failed
Test output
args = (session: "projects/precise-truck-742/instances/google-cloud-1674211009124/databases/test_sessions_1674211097465/sessi...contact_id" columns: "first_name" columns: "last_name" columns: "email" key_set { all_: true } request_options { } ,) kwargs = {'metadata': [('google-cloud-resource-prefix', 'projects/precise-truck-742/instances/google-cloud-1674211009124/databa...TFdAvqFDdXm6deA'), ('x-goog-api-client', 'gl-python/3.8.13 grpc/1.52.0rc1 gax/2.11.0 gccl/3.27.0')], 'timeout': 3600.0} result = <_MultiThreadedRendezvous of RPC that terminated with: status = StatusCode.ABORTED details = "Transaction was aborte...95:443 {created_time:"2023-01-20T10:38:55.191910351+00:00", grpc_status:10, grpc_message:"Transaction was aborted."}" > prefetch_first = True@functools.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/system-3-8-database_dialect-postgresql/lib/python3.8/site-packages/google/api_core/grpc_helpers.py:162:
self = <google.api_core.grpc_helpers._StreamingResponseIterator object at 0x7f87cb73e7f0>
wrapped = <_MultiThreadedRendezvous of RPC that terminated with:
status = StatusCode.ABORTED
details = "Transaction was aborte...95:443 {created_time:"2023-01-20T10:38:55.191910351+00:00", grpc_status:10, grpc_message:"Transaction was aborted."}"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 = next(self._wrapped)
.nox/system-3-8-database_dialect-postgresql/lib/python3.8/site-packages/google/api_core/grpc_helpers.py:88:
self = <_MultiThreadedRendezvous of RPC that terminated with:
status = StatusCode.ABORTED
details = "Transaction was aborte...95:443 {created_time:"2023-01-20T10:38:55.191910351+00:00", grpc_status:10, grpc_message:"Transaction was aborted."}"def __next__(self):
return self._next()
.nox/system-3-8-database_dialect-postgresql/lib/python3.8/site-packages/grpc/_channel.py:475:
self = <_MultiThreadedRendezvous of RPC that terminated with:
status = StatusCode.ABORTED
details = "Transaction was aborte...95:443 {created_time:"2023-01-20T10:38:55.191910351+00:00", grpc_status:10, grpc_message:"Transaction was aborted."}"def _next(self) -> Any: 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.ABORTED
E details = "Transaction was aborted."
E debug_error_string = "UNKNOWN:Error received from peer ipv4:74.125.142.95:443 {created_time:"2023-01-20T10:38:55.191910351+00:00", grpc_status:10, grpc_message:"Transaction was aborted."}"
E >.nox/system-3-8-database_dialect-postgresql/lib/python3.8/site-packages/grpc/_channel.py:881: _MultiThreadedRendezvous
The above exception was the direct cause of the following exception:
sessions_database = <google.cloud.spanner_v1.database.Database object at 0x7f87f0071df0>
sessions_to_delete = [<google.cloud.spanner_v1.session.Session object at 0x7f87cb736850>]@_helpers.retry_mabye_conflict def test_transaction_execute_update_read_commit(sessions_database, sessions_to_delete): # [START spanner_test_dml_read_your_writes] sd = _sample_data session = sessions_database.session() session.create() sessions_to_delete.append(session) with session.batch() as batch: batch.delete(sd.TABLE, sd.ALL) with session.transaction() as transaction: rows = list(transaction.read(sd.TABLE, sd.COLUMNS, sd.ALL)) assert rows == [] for insert_statement in _generate_insert_statements(): row_count = transaction.execute_update(insert_statement) assert row_count == 1 # Rows inserted via DML *can* be read before commit.
during_rows = list(transaction.read(sd.TABLE, sd.COLUMNS, sd.ALL))
tests/system/test_session_api.py:746:
google/cloud/spanner_v1/streamed.py:145: in iter
self._consume_next()
google/cloud/spanner_v1/streamed.py:117: in _consume_next
response = next(self._response_iterator)
google/cloud/spanner_v1/snapshot.py:83: in _restart_on_unavailable
iterator = method(request=request)
google/cloud/spanner_v1/services/spanner/client.py:1529: in streaming_read
response = rpc(
.nox/system-3-8-database_dialect-postgresql/lib/python3.8/site-packages/google/api_core/gapic_v1/method.py:113: in call
return wrapped_func(*args, **kwargs)
.nox/system-3-8-database_dialect-postgresql/lib/python3.8/site-packages/google/api_core/timeout.py:120: in func_with_timeout
return func(*args, **kwargs)
args = (session: "projects/precise-truck-742/instances/google-cloud-1674211009124/databases/test_sessions_1674211097465/sessi...contact_id"
columns: "first_name"
columns: "last_name"
columns: "email"
key_set {
all_: true
}
request_options {
}
,)
kwargs = {'metadata': [('google-cloud-resource-prefix', 'projects/precise-truck-742/instances/google-cloud-1674211009124/databa...TFdAvqFDdXm6deA'), ('x-goog-api-client', 'gl-python/3.8.13 grpc/1.52.0rc1 gax/2.11.0 gccl/3.27.0')], 'timeout': 3600.0}
result = <_MultiThreadedRendezvous of RPC that terminated with:
status = StatusCode.ABORTED
details = "Transaction was aborte...95:443 {created_time:"2023-01-20T10:38:55.191910351+00:00", grpc_status:10, grpc_message:"Transaction was aborted."}"prefetch_first = True
@functools.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 ) except grpc.RpcError as exc:
raise exceptions.from_grpc_error(exc) from exc
E google.api_core.exceptions.Aborted: 409 Transaction was aborted. [retry_delay {
E nanos: 10179537
E }
E ].nox/system-3-8-database_dialect-postgresql/lib/python3.8/site-packages/google/api_core/grpc_helpers.py:166: Aborted