Skip to content

Commit 89abfa4

Browse files
committed
removed timeout vs deadline explainer from retry_streaming
1 parent 35cc00a commit 89abfa4

File tree

1 file changed

+0
-69
lines changed

1 file changed

+0
-69
lines changed

google/api_core/retry/retry_streaming.py

Lines changed: 0 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -147,75 +147,6 @@ class StreamingRetry(_BaseRetry):
147147
Although the default behavior is to retry transient API errors, a
148148
different predicate can be provided to retry other exceptions.
149149
150-
There are two important concepts that retry/polling behavior may operate on,
151-
Deadline and Timeout, which need to be properly defined for the correct
152-
usage of this class and the rest of the library.
153-
154-
Deadline: a fixed point in time by which a certain operation must
155-
terminate. For example, if a certain operation has a deadline
156-
"2022-10-18T23:30:52.123Z" it must terminate (successfully or with an
157-
error) by that time, regardless of when it was started or whether it
158-
was started at all.
159-
160-
Timeout: the maximum duration of time after which a certain operation
161-
must terminate (successfully or with an error). The countdown begins right
162-
after an operation was started. For example, if an operation was started at
163-
09:24:00 with timeout of 75 seconds, it must terminate no later than
164-
09:25:15.
165-
166-
Unfortunately, in the past this class (and the api-core library as a whole) has not
167-
been properly distinguishing the concepts of "timeout" and "deadline", and the
168-
``deadline`` parameter has meant ``timeout``. That is why
169-
``deadline`` has been deprecated and ``timeout`` should be used instead. If the
170-
``deadline`` parameter is set, it will override the ``timeout`` parameter.
171-
In other words, ``retry.deadline`` should be treated as just a deprecated alias for
172-
``retry.timeout``.
173-
174-
Said another way, it is safe to assume that this class and the rest of this
175-
library operate in terms of timeouts (not deadlines) unless explicitly
176-
noted the usage of deadline semantics.
177-
178-
It is also important to
179-
understand the three most common applications of the Timeout concept in the
180-
context of this library.
181-
182-
Usually the generic Timeout term may stand for one of the following actual
183-
timeouts: RPC Timeout, Retry Timeout, or Polling Timeout.
184-
185-
RPC Timeout: a value supplied by the client to the server so
186-
that the server side knows the maximum amount of time it is expected to
187-
spend handling that specific RPC. For example, in the case of gRPC transport,
188-
RPC Timeout is represented by setting "grpc-timeout" header in the HTTP2
189-
request. The `timeout` property of this class normally never represents the
190-
RPC Timeout as it is handled separately by the ``google.api_core.timeout``
191-
module of this library.
192-
193-
Retry Timeout: this is the most common meaning of the ``timeout`` property
194-
of this class, and defines how long a certain RPC may be retried in case
195-
the server returns an error.
196-
197-
Polling Timeout: defines how long the
198-
client side is allowed to call the polling RPC repeatedly to check a status of a
199-
long-running operation. Each polling RPC is
200-
expected to succeed (its errors are supposed to be handled by the retry
201-
logic). The decision as to whether a new polling attempt needs to be made is based
202-
not on the RPC status code but on the status of the returned
203-
status of an operation. In other words: we will poll a long-running operation until
204-
the operation is done or the polling timeout expires. Each poll will inform us of
205-
the status of the operation. The poll consists of an RPC to the server that may
206-
itself be retried as per the poll-specific retry settings in case of errors. The
207-
operation-level retry settings do NOT apply to polling-RPC retries.
208-
209-
With the actual timeout types being defined above, the client libraries
210-
often refer to just Timeout without clarifying which type specifically
211-
that is. In that case the actual timeout type (sometimes also referred to as
212-
Logical Timeout) can be determined from the context. If it is a unary rpc
213-
call (i.e. a regular one) Timeout usually stands for the RPC Timeout (if
214-
provided directly as a standalone value) or Retry Timeout (if provided as
215-
``retry.timeout`` property of the unary RPC's retry config). For
216-
``Operation`` or ``PollingFuture`` in general Timeout stands for
217-
Polling Timeout.
218-
219150
Important Note: when a stream encounters a retryable error, it will
220151
silently construct a fresh iterator instance in the background
221152
and continue yielding (likely duplicate) values as if no error occurred.

0 commit comments

Comments
 (0)