Class TimeLimitedHandler


  • public abstract class TimeLimitedHandler
    extends SpanExporter.Handler
    An abstract class that allows different tracing services to export recorded data for sampled spans in their own format within a given time frame. If export does not complete within the time frame, spans will be dropped and no retries will be performed.

    Only extend this class if the client APIs don't support timeout natively. If there is a timeout option in the client APIs (for example Stackdriver Trace V2 API allows you to set timeout), use that instead.

    To export data this MUST be register to to the ExportComponent using SpanExporter.registerHandler(String, Handler).

    Since:
    0.22
    • Field Detail

      • logger

        private static final java.util.logging.Logger logger
      • tracer

        private static final Tracer tracer
      • lowProbabilitySampler

        private static final Sampler lowProbabilitySampler
      • deadline

        private final Duration deadline
      • exportSpanName

        private final java.lang.String exportSpanName
    • Constructor Detail

      • TimeLimitedHandler

        protected TimeLimitedHandler​(Duration deadline,
                                     java.lang.String exportSpanName)
    • Method Detail

      • timeLimitedExport

        public abstract void timeLimitedExport​(java.util.Collection<SpanData> spanDataList)
                                        throws java.lang.Exception
        Exports a list of sampled (see TraceOptions.isSampled()) Spans using the immutable representation SpanData, within the given deadline of this TimeLimitedHandler.
        Parameters:
        spanDataList - a list of SpanData objects to be exported.
        Throws:
        java.lang.Exception - throws exception when failed to export.
        Since:
        0.22
      • export

        public void export​(java.util.Collection<SpanData> spanDataList)
        Description copied from class: SpanExporter.Handler
        Exports a list of sampled (see TraceOptions.isSampled()) Spans using the immutable representation SpanData.

        This may be called from a different thread than the one that called Span.end().

        Implementation SHOULD not block the calling thread. It should execute the export on a different thread if possible.

        Specified by:
        export in class SpanExporter.Handler
        Parameters:
        spanDataList - a list of SpanData objects to be exported.
      • newExportScope

        @MustBeClosed
        private Scope newExportScope()
      • handleException

        private static void handleException​(java.lang.Exception e,
                                            java.lang.String logMessage)