Class OpencensusTracer
- java.lang.Object
-
- com.google.api.gax.tracing.BaseApiTracer
-
- com.google.api.gax.tracing.OpencensusTracer
-
- All Implemented Interfaces:
ApiTracer
@BetaApi("Surface for tracing is not yet stable") public class OpencensusTracer extends BaseApiTracer
Implementation ofApiTracer
that uses OpenCensus.This implementation wraps an OpenCensus
Span
for every tracer and annotates thatSpan
with various events throughout the lifecycle of the logical operation.Each span will be named
ClientName.MethodName
and will have the following attributes:attempt count
- The Number of attempts sent before the logical operation completed
status
- The status code of the last attempt
total response count
- The number of messages received across all of the attempts. This will only be set for server streaming and bidi RPCs.
total request count
- The number of messages sent across all of the attempts. This will only be set for client streaming and bidi RPCs.
batch count
- For batch requests, the number of elements in the request.
batch size
- For batch requests, the byte size of the request.
The spans will contain the following annotations:
Attempt cancelled
with the following attributes:attempt
- Zero based sequential attempt number
attempt request count
- The number of requests sent in this attempt. This will only be set for client streaming and bidi RPCs.
attempt response count
- The number of responses received in this attempt. This will only be set for server streaming and bidi RPCs.
connection
- The UUID of the connection which the attempt was sent.
Attempt failed, scheduling next attempt
with the following attributes:attempt
- Zero based sequential attempt number
status
- The status code of the failed attempt
delay
- The number of milliseconds to wait before trying again
attempt request count
- The number of requests sent in this attempt. This will only be set for client streaming and bidi RPCs.
attempt response count
- The number of responses received in this attempt. This will only be set for server streaming and bidi RPCs.
connection
- The UUID of the connection which the attempt was sent.
Attempts exhausted
with the following attributes:attempt
- Zero based sequential attempt number
status
- The status code of the failed attempt
attempt request count
- The number of requests sent in this attempt. This will only be set for client streaming and bidi RPCs.
attempt response count
- The number of responses received in this attempt. This will only be set for server streaming and bidi RPCs.
connection
- The UUID of the connection which the attempt was sent.
Attempt failed, error not retryable
with the following attributes:attempt
- Zero based sequential attempt number
status
- The status code of the failed attempt
attempt request count
- The number of requests sent in this attempt. This will only be set for client streaming and bidi RPCs.
attempt response count
- The number of responses received in this attempt. This will only be set for server streaming and bidi RPCs.
connection
- The UUID of the connection which the attempt was sent.
Attempt succeeded
with the following attributes:attempt
- Zero based sequential attempt number
attempt request count
- The number of requests sent in this attempt. This will only be set for client streaming and bidi RPCs.
attempt response count
- The number of responses received in this attempt. This will only be set for server streaming and bidi RPCs.
connection
- The UUID of the connection which the attempt was sent.
Long running operations, which are composed of an initial RPC to start the operation and a number of polling RPCs will be represented as a tree of spans. The top level span will be named after the initial RPC name suffixed with "Operation" and will have the following annotations:
Operation started
Operation failed to start
with the following attributes:status
- The status code of why the operation failed to start
Polling was cancelled
with the following attributes:attempt
- Zero based sequential poll number.
attempt request count
Scheduling next poll
with the following attributes:attempt
- Zero based sequential poll number
status
- OK if the poll succeeded, but the operation is still running.
delay
- The number of milliseconds to wait before polling again
Polling attempts exhausted
with the following attributes:attempt
- Zero based sequential poll number
status
- OK if the poll succeeded, but the operation is still running.
Polling failed
with the following attributes:attempt
- Zero based sequential poll number
status
- OK if the poll succeeded, but the operation is still running.
Polling completed
with the following attributes:attempt
- Zero based sequential poll number
The toplevel long running operation span will also contain child spans to describe the retry attempts for the initial RPC and each poll as described in the general span section above.
This class is thread compatible. It expects callers to follow grpc's threading model: there is only one thread that invokes the operation* and attempt* methods. Please see
ApiStreamObserver
for more information.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface com.google.api.gax.tracing.ApiTracer
ApiTracer.Scope
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
attemptCancelled()
Add an annotation that the attempt was cancelled by the user.void
attemptFailed(Throwable error, org.threeten.bp.Duration delay)
Adds an annotation that the attempt failed, but another attempt will be made after the delay.void
attemptFailedRetriesExhausted(Throwable error)
Adds an annotation that the attempt failed and that no further attempts will be made because retry limits have been reached.void
attemptPermanentFailure(Throwable error)
Adds an annotation that the attempt failed and that no further attempts will be made because the last error was not retryable.void
attemptStarted(int attemptNumber)
Adds an annotation that an attempt is about to start.void
attemptStarted(Object request, int attemptNumber)
Adds an annotation that an attempt is about to start with additional information from the request.void
attemptSucceeded()
Adds an annotation that the attempt succeeded.void
batchRequestSent(long elementCount, long requestSize)
Adds an annotation that a batch of writes has been flushed.void
connectionSelected(String id)
Annotates the operation with selected connection id from theChannelPool
.ApiTracer.Scope
inScope()
Asks the underlying implementation to install itself as a thread local.void
lroStartFailed(Throwable error)
Signals that the initial RPC for the long running operation failed.void
lroStartSucceeded()
Signals that the initial RPC successfully started the long running operation.void
operationCancelled()
Signals that the operation was cancelled by the user.void
operationFailed(Throwable error)
Signals that the overall operation has failed and no further attempts will be made.void
operationSucceeded()
Signals that the overall operation has finished successfully.void
requestSent()
Adds an annotation that a streaming request has been sent.void
responseReceived()
Adds an annotation that a streaming response has been received.-
Methods inherited from class com.google.api.gax.tracing.BaseApiTracer
getInstance
-
-
-
-
Method Detail
-
inScope
public ApiTracer.Scope inScope()
Asks the underlying implementation to install itself as a thread local. This allows for interop between clients using gax and external resources to share the same implementation of the tracing. For example OpenCensus will install a thread local that can read by the GRPC.- Specified by:
inScope
in interfaceApiTracer
- Overrides:
inScope
in classBaseApiTracer
-
operationSucceeded
public void operationSucceeded()
Signals that the overall operation has finished successfully. The tracer is now considered closed and should no longer be used.- Specified by:
operationSucceeded
in interfaceApiTracer
- Overrides:
operationSucceeded
in classBaseApiTracer
-
operationCancelled
public void operationCancelled()
Signals that the operation was cancelled by the user. The tracer is now considered closed and should no longer be used.- Specified by:
operationCancelled
in interfaceApiTracer
- Overrides:
operationCancelled
in classBaseApiTracer
-
operationFailed
public void operationFailed(Throwable error)
Signals that the overall operation has failed and no further attempts will be made. The tracer is now considered closed and should no longer be used.- Specified by:
operationFailed
in interfaceApiTracer
- Overrides:
operationFailed
in classBaseApiTracer
- Parameters:
error
- the final error that caused the operation to fail.
-
lroStartFailed
public void lroStartFailed(Throwable error)
Signals that the initial RPC for the long running operation failed.- Specified by:
lroStartFailed
in interfaceApiTracer
- Overrides:
lroStartFailed
in classBaseApiTracer
- Parameters:
error
- the error that caused the long running operation fail.
-
lroStartSucceeded
public void lroStartSucceeded()
Signals that the initial RPC successfully started the long running operation. The long running operation will now be polled for completion.- Specified by:
lroStartSucceeded
in interfaceApiTracer
- Overrides:
lroStartSucceeded
in classBaseApiTracer
-
connectionSelected
public void connectionSelected(String id)
Annotates the operation with selected connection id from theChannelPool
.- Specified by:
connectionSelected
in interfaceApiTracer
- Overrides:
connectionSelected
in classBaseApiTracer
- Parameters:
id
- the local connection identifier of the selected connection.
-
attemptStarted
public void attemptStarted(int attemptNumber)
Adds an annotation that an attempt is about to start. In general this should occur at the very start of the operation. The attemptNumber is zero based. So the initial attempt will be 0.- Specified by:
attemptStarted
in interfaceApiTracer
- Overrides:
attemptStarted
in classBaseApiTracer
- Parameters:
attemptNumber
- the zero based sequential attempt number.
-
attemptStarted
public void attemptStarted(Object request, int attemptNumber)
Adds an annotation that an attempt is about to start with additional information from the request. In general this should occur at the very start of the operation. The attemptNumber is zero based. So the initial attempt will be 0.- Specified by:
attemptStarted
in interfaceApiTracer
- Overrides:
attemptStarted
in classBaseApiTracer
- Parameters:
request
- request of this attempt.attemptNumber
- the zero based sequential attempt number.
-
attemptSucceeded
public void attemptSucceeded()
Adds an annotation that the attempt succeeded.- Specified by:
attemptSucceeded
in interfaceApiTracer
- Overrides:
attemptSucceeded
in classBaseApiTracer
-
attemptCancelled
public void attemptCancelled()
Add an annotation that the attempt was cancelled by the user.- Specified by:
attemptCancelled
in interfaceApiTracer
- Overrides:
attemptCancelled
in classBaseApiTracer
-
attemptFailed
public void attemptFailed(Throwable error, org.threeten.bp.Duration delay)
Adds an annotation that the attempt failed, but another attempt will be made after the delay.- Specified by:
attemptFailed
in interfaceApiTracer
- Overrides:
attemptFailed
in classBaseApiTracer
- Parameters:
error
- the transient error that caused the attempt to fail.delay
- the amount of time to wait before the next attempt will start.
-
attemptFailedRetriesExhausted
public void attemptFailedRetriesExhausted(Throwable error)
Adds an annotation that the attempt failed and that no further attempts will be made because retry limits have been reached.- Specified by:
attemptFailedRetriesExhausted
in interfaceApiTracer
- Overrides:
attemptFailedRetriesExhausted
in classBaseApiTracer
- Parameters:
error
- the last error received before retries were exhausted.
-
attemptPermanentFailure
public void attemptPermanentFailure(Throwable error)
Adds an annotation that the attempt failed and that no further attempts will be made because the last error was not retryable.- Specified by:
attemptPermanentFailure
in interfaceApiTracer
- Overrides:
attemptPermanentFailure
in classBaseApiTracer
- Parameters:
error
- the error that caused the final attempt to fail.
-
responseReceived
public void responseReceived()
Adds an annotation that a streaming response has been received.- Specified by:
responseReceived
in interfaceApiTracer
- Overrides:
responseReceived
in classBaseApiTracer
-
requestSent
public void requestSent()
Adds an annotation that a streaming request has been sent.- Specified by:
requestSent
in interfaceApiTracer
- Overrides:
requestSent
in classBaseApiTracer
-
batchRequestSent
public void batchRequestSent(long elementCount, long requestSize)
Adds an annotation that a batch of writes has been flushed.- Specified by:
batchRequestSent
in interfaceApiTracer
- Overrides:
batchRequestSent
in classBaseApiTracer
- Parameters:
elementCount
- the number of elements in the batch.requestSize
- the size of the batch in bytes.
-
-