Unlike Java/JS, firestore's python transactions do not retry on invalid transaction errors

Đang mở
#19,063 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

@pcbeingused333 đang làm issue này rồi.

Từ ngày 13/11/2026.

  • #19066 của @pcbeingused333 — đang mở

Đánh giá

Độ khó
3/5
Thời gian dự kiến
1-2 ngày
Mức phù hợp với người mới
25/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Đình trệ
Công nghệ
python
Lĩnh vực
databases

Hướng nghiên cứu

Read the Python Firestore transaction retry behavior described in the issue and compare it with the linked Node and Java fixes. An open pull request, #19066, is already linked, so check its scope and status before considering this work. Done means invalid-transaction errors are retried consistently with the expected behavior.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

triage me type: bug
Determine this is the right repository
  • I determined this is the correct repository in which to report this bug.
Summary of the issue

Context
We use firestore transactions with some reasonable load. For whatever reason the error rate has been elevated today that doesn't seem to match any change in our traffic or usage.

Expected Behavior:
I'd expect transaction's retry behavior to be consistent across platforms. Instead some platforms retry invalid transaction errors but python does not.

Node: https://github.com/googleapis/nodejs-firestore/pull/1347
Java: https://github.com/googleapis/java-firestore/pull/447

Actual Behavior:
Python firestore transactions seem not to retry this error message

API client name and version

google-cloud-firestore 2.34.1

Reproduction steps: code

No response

Reproduction steps: supporting files

No response

Reproduction steps: actual results
_InactiveRpcError: <_InactiveRpcError of RPC that terminated with:
	status = StatusCode.INVALID_ARGUMENT
	details = "The referenced transaction has expired or is no longer valid."
	debug_error_string = "INVALID_ARGUMENT:The referenced transaction has expired or is no longer valid."
>
(2 additional frame(s) were not displayed)
...
  File "grpc/_interceptor.py", line 331, in _with_call
    return call.result(), call
  File "grpc/_channel.py", line 447, in result
    raise self
  File "grpc/_interceptor.py", line 314, in continuation
    response, call = self._thunk(new_method).with_call(
  File "grpc/_channel.py", line 1182, in with_call
    return _end_unary_response_blocking(state, call, True, None)
  File "grpc/_channel.py", line 999, in _end_unary_response_blocking
    raise _InactiveRpcError(state)  # pytype: disable=not-instantiable

InvalidArgument: The referenced transaction has expired or is no longer valid.
Reproduction steps: expected results

file: output.txtmydata.csv

Calculated: bar
OS & version + platform

Various

Python environment

Python 3.12.14

Python dependencies

No response

Additional context

No response

Ngôn ngữ chính
Python
Star
5.4k
Fork
1.8k
Merge trung bình
2 ngày 7 giờ
Pull request đã merge (30 ngày)
173

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của googleapis/google-cloud-python

Tất cả issue của googleapis/google-cloud-python

Issue tương tự

Thêm issue về Python

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.