test_class.declarator: DEFAULT_SOURCE = "jaeger"
test_class.modifier: private final static
test_class.original_string: private final static String DEFAULT_SOURCE = "jaeger";
test_class.type: String
test_class.var_name: DEFAULT_SOURCE
test_class.declarator: mockTraceHandler =
        MockReportableEntityHandlerFactory.getMockTraceHandler()
test_class.modifier: private
test_class.original_string: private ReportableEntityHandler<Span, String> mockTraceHandler =
        MockReportableEntityHandlerFactory.getMockTraceHandler();
test_class.type: ReportableEntityHandler<Span, String>
test_class.var_name: mockTraceHandler
test_class.declarator: mockTraceLogsHandler =
        MockReportableEntityHandlerFactory.getMockTraceSpanLogsHandler()
test_class.modifier: private
test_class.original_string: private ReportableEntityHandler<SpanLogs, String> mockTraceLogsHandler =
        MockReportableEntityHandlerFactory.getMockTraceSpanLogsHandler();
test_class.type: ReportableEntityHandler<SpanLogs, String>
test_class.var_name: mockTraceLogsHandler
test_class.declarator: mockWavefrontSender = EasyMock.createMock(WavefrontSender.class)
test_class.modifier: private
test_class.original_string: private WavefrontSender mockWavefrontSender = EasyMock.createMock(WavefrontSender.class);
test_class.type: WavefrontSender
test_class.var_name: mockWavefrontSender
test_class.declarator: startTime = System.currentTimeMillis()
test_class.modifier: private
test_class.original_string: private long startTime = System.currentTimeMillis();
test_class.type: long
test_class.var_name: startTime
test_class.declarator: PREPROCESSED_APPLICATION_TAG_VALUE = "preprocessedApplication"
test_class.modifier: private final
test_class.original_string: private final String PREPROCESSED_APPLICATION_TAG_VALUE = "preprocessedApplication";
test_class.type: String
test_class.var_name: PREPROCESSED_APPLICATION_TAG_VALUE
test_class.declarator: PREPROCESSED_SERVICE_TAG_VALUE = "preprocessedService"
test_class.modifier: private final
test_class.original_string: private final String PREPROCESSED_SERVICE_TAG_VALUE = "preprocessedService";
test_class.type: String
test_class.var_name: PREPROCESSED_SERVICE_TAG_VALUE
test_class.declarator: PREPROCESSED_CLUSTER_TAG_VALUE = "preprocessedCluster"
test_class.modifier: private final
test_class.original_string: private final String PREPROCESSED_CLUSTER_TAG_VALUE = "preprocessedCluster";
test_class.type: String
test_class.var_name: PREPROCESSED_CLUSTER_TAG_VALUE
test_class.declarator: PREPROCESSED_SHARD_TAG_VALUE = "preprocessedShard"
test_class.modifier: private final
test_class.original_string: private final String PREPROCESSED_SHARD_TAG_VALUE = "preprocessedShard";
test_class.type: String
test_class.var_name: PREPROCESSED_SHARD_TAG_VALUE
test_class.declarator: PREPROCESSED_SOURCE_VALUE = "preprocessedSource"
test_class.modifier: private final
test_class.original_string: private final String PREPROCESSED_SOURCE_VALUE = "preprocessedSource";
test_class.type: String
test_class.var_name: PREPROCESSED_SOURCE_VALUE
test_class.file: proxy/src/test/java/com/wavefront/agent/listeners/tracing/JaegerGrpcCollectorHandlerTest.java
test_class.identifier: JaegerGrpcCollectorHandlerTest
test_case.body: @Test
    public void testApplicationTagPriority() throws Exception {
      reset(mockTraceHandler, mockTraceLogsHandler);
  
      // Span to verify span level tags precedence
      mockTraceHandler.report(Span.newBuilder().setCustomer("dummy").setStartMillis(startTime)
          .setDuration(1000)
          .setName("HTTP GET")
          .setSource(DEFAULT_SOURCE)
          .setSpanId("00000000-0000-0000-0000-00000012d687")
          .setTraceId("00000000-4996-02d2-0000-011f71fb04cb")
          // Note: Order of annotations list matters for this unit test.
          .setAnnotations(ImmutableList.of(
              new Annotation("ip", "10.0.0.1"),
              new Annotation("service", "frontend"),
              new Annotation("component", "db"),
              new Annotation("application", "SpanLevelAppTag"),
              new Annotation("cluster", "none"),
              new Annotation("shard", "none")))
          .build());
      expectLastCall();
  
      // Span to verify process level tags precedence
      mockTraceHandler.report(Span.newBuilder().setCustomer("dummy").setStartMillis(startTime)
          .setDuration(2000)
          .setName("HTTP GET /")
          .setSource(DEFAULT_SOURCE)
          .setSpanId("00000000-0000-0000-0000-00000023cace")
          .setTraceId("00000000-4996-02d2-0000-011f71fb04cb")
          // Note: Order of annotations list matters for this unit test.
          .setAnnotations(ImmutableList.of(
              new Annotation("ip", "10.0.0.1"),
              new Annotation("service", "frontend"),
              new Annotation("component", "db"),
              new Annotation("application", "ProcessLevelAppTag"),
              new Annotation("cluster", "none"),
              new Annotation("shard", "none"),
              new Annotation("parent", "00000000-0000-0000-0000-00000012d687")))
          .build());
      expectLastCall();
  
      // Span to verify Proxy level tags precedence
      mockTraceHandler.report(Span.newBuilder().setCustomer("dummy").setStartMillis(startTime)
          .setDuration(3000)
          .setName("HTTP GET /")
          .setSource(DEFAULT_SOURCE)
          .setSpanId("00000000-0000-0000-9a12-b85901d53397")
          .setTraceId("00000000-0000-0000-fea4-87ee36e58cab")
          // Note: Order of annotations list matters for this unit test.
          .setAnnotations(ImmutableList.of(
              new Annotation("ip", "10.0.0.1"),
              new Annotation("service", "frontend"),
              new Annotation("application", "ProxyLevelAppTag"),
              new Annotation("cluster", "none"),
              new Annotation("shard", "none"),
              new Annotation("parent", "00000000-0000-0000-fea4-87ee36e58cab")))
          .build());
      expectLastCall();
      replay(mockTraceHandler, mockTraceLogsHandler);
  
      // Verify span level "application" tags precedence
      JaegerGrpcCollectorHandler handler = new JaegerGrpcCollectorHandler("9876", mockTraceHandler,
          mockTraceLogsHandler, null, () -> false, () -> false, null, new SpanSampler(new RateSampler(1.0D),
          false), "ProxyLevelAppTag", null);
  
      Model.KeyValue ipTag = Model.KeyValue.newBuilder().
          setKey("ip").
          setVStr("10.0.0.1").
          setVType(Model.ValueType.STRING).
          build();
  
      Model.KeyValue componentTag = Model.KeyValue.newBuilder().
          setKey("component").
          setVStr("db").
          setVType(Model.ValueType.STRING).
          build();
  
      Model.KeyValue spanLevelAppTag = Model.KeyValue.newBuilder().
          setKey("application").
          setVStr("SpanLevelAppTag").
          setVType(Model.ValueType.STRING).
          build();
  
      Model.KeyValue processLevelAppTag = Model.KeyValue.newBuilder().
          setKey("application").
          setVStr("ProcessLevelAppTag").
          setVType(Model.ValueType.STRING).
          build();
  
      ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES * 2);
      buffer.putLong(1234567890L);
      buffer.putLong(1234567890123L);
      ByteString traceId = ByteString.copyFrom(buffer.array());
  
      buffer = ByteBuffer.allocate(Long.BYTES * 2);
      buffer.putLong(0L);
      buffer.putLong(-97803834702328661L);
      ByteString trace2Id = ByteString.copyFrom(buffer.array());
  
      buffer = ByteBuffer.allocate(Long.BYTES);
      buffer.putLong(1234567L);
      ByteString span1Id = ByteString.copyFrom(buffer.array());
  
      buffer = ByteBuffer.allocate(Long.BYTES);
      buffer.putLong(2345678L);
      ByteString span2Id = ByteString.copyFrom(buffer.array());
  
      buffer = ByteBuffer.allocate(Long.BYTES);
      buffer.putLong(-7344605349865507945L);
      ByteString span3Id = ByteString.copyFrom(buffer.array());
  
      buffer = ByteBuffer.allocate(Long.BYTES);
      buffer.putLong(-97803834702328661L);
      ByteString span3ParentId = ByteString.copyFrom(buffer.array());
  
      // Span1 to verify span level tags precedence
      Model.Span span1 = Model.Span.newBuilder().
          setTraceId(traceId).
          setSpanId(span1Id).
          setDuration(Duration.newBuilder().setSeconds(1L).build()).
          setOperationName("HTTP GET").
          setStartTime(fromMillis(startTime)).
          addTags(componentTag).
          addTags(spanLevelAppTag).
          setFlags(1).
          build();
  
      Model.Span span2 = Model.Span.newBuilder().
          setTraceId(traceId).
          setSpanId(span2Id).
          setDuration(Duration.newBuilder().setSeconds(2L).build()).
          setOperationName("HTTP GET /").
          setStartTime(fromMillis(startTime)).
          addTags(componentTag).
          setFlags(1).
          addReferences(Model.SpanRef.newBuilder().setRefType(Model.SpanRefType.CHILD_OF).setSpanId(span1Id).setTraceId(traceId).build()).
          build();
  
      // check negative span IDs too
      Model.Span span3 = Model.Span.newBuilder().
          setTraceId(trace2Id).
          setSpanId(span3Id).
          setDuration(Duration.newBuilder().setSeconds(3L).build()).
          setOperationName("HTTP GET /").
          setStartTime(fromMillis(startTime)).
          setFlags(1).
          addReferences(Model.SpanRef.newBuilder().setRefType(Model.SpanRefType.CHILD_OF).setSpanId(span3ParentId).setTraceId(traceId).build()).
          build();
  
      StreamObserver<Collector.PostSpansResponse> streamObserver = new StreamObserver<Collector.PostSpansResponse>() {
        @Override
        public void onNext(Collector.PostSpansResponse postSpansResponse) {
        }
  
        @Override
        public void onError(Throwable throwable) {
        }
  
        @Override
        public void onCompleted() {
        }
      };
  
      Model.Batch testBatch = Model.Batch.newBuilder().
          setProcess(Model.Process.newBuilder().setServiceName("frontend").addTags(ipTag).addTags(processLevelAppTag).build()).
          addAllSpans(ImmutableList.of(span1, span2)).
          build();
  
      Collector.PostSpansRequest batches =
          Collector.PostSpansRequest.newBuilder().setBatch(testBatch).build();
  
      handler.postSpans(batches, streamObserver);
  
      Model.Batch testBatchForProxyLevel = Model.Batch.newBuilder().
          setProcess(Model.Process.newBuilder().setServiceName("frontend").addTags(ipTag).build()).
          addAllSpans(ImmutableList.of(span3)).
          build();
  
      Collector.PostSpansRequest batchesForProxyLevel =
          Collector.PostSpansRequest.newBuilder().setBatch(testBatchForProxyLevel).build();
  
      handler.postSpans(batchesForProxyLevel, streamObserver);
  
      verify(mockTraceHandler, mockTraceLogsHandler);
    }
test_case.class_method_signature: JaegerGrpcCollectorHandlerTest.testApplicationTagPriority()
test_case.full_signature: @Test public void testApplicationTagPriority()
test_case.identifier: testApplicationTagPriority
test_case.invocations: reset report build setAnnotations setTraceId setSpanId setSource setName setDuration setStartMillis setCustomer newBuilder of expectLastCall report build setAnnotations setTraceId setSpanId setSource setName setDuration setStartMillis setCustomer newBuilder of expectLastCall report build setAnnotations setTraceId setSpanId setSource setName setDuration setStartMillis setCustomer newBuilder of expectLastCall replay build setVType setVStr setKey newBuilder build setVType setVStr setKey newBuilder build setVType setVStr setKey newBuilder build setVType setVStr setKey newBuilder allocate putLong putLong copyFrom array allocate putLong putLong copyFrom array allocate putLong copyFrom array allocate putLong copyFrom array allocate putLong copyFrom array allocate putLong copyFrom array build setFlags addTags addTags setStartTime setOperationName setDuration setSpanId setTraceId newBuilder build setSeconds newBuilder fromMillis build addReferences setFlags addTags setStartTime setOperationName setDuration setSpanId setTraceId newBuilder build setSeconds newBuilder fromMillis build setTraceId setSpanId setRefType newBuilder build addReferences setFlags setStartTime setOperationName setDuration setSpanId setTraceId newBuilder build setSeconds newBuilder fromMillis build setTraceId setSpanId setRefType newBuilder build addAllSpans setProcess newBuilder build addTags addTags setServiceName newBuilder of build setBatch newBuilder postSpans build addAllSpans setProcess newBuilder build addTags setServiceName newBuilder of build setBatch newBuilder postSpans verify
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testApplicationTagPriority()
focal_class.declarator: logger =
        Logger.getLogger(JaegerTChannelCollectorHandler.class.getCanonicalName())
focal_class.modifier: protected static final
focal_class.original_string: protected static final Logger logger =
        Logger.getLogger(JaegerTChannelCollectorHandler.class.getCanonicalName());
focal_class.type: Logger
focal_class.var_name: logger
focal_class.declarator: JAEGER_COMPONENT = "jaeger"
focal_class.modifier: private final static
focal_class.original_string: private final static String JAEGER_COMPONENT = "jaeger";
focal_class.type: String
focal_class.var_name: JAEGER_COMPONENT
focal_class.declarator: DEFAULT_SOURCE = "jaeger"
focal_class.modifier: private final static
focal_class.original_string: private final static String DEFAULT_SOURCE = "jaeger";
focal_class.type: String
focal_class.var_name: DEFAULT_SOURCE
focal_class.declarator: spanHandler
focal_class.modifier: private final
focal_class.original_string: private final ReportableEntityHandler<Span, String> spanHandler;
focal_class.type: ReportableEntityHandler<Span, String>
focal_class.var_name: spanHandler
focal_class.declarator: spanLogsHandler
focal_class.modifier: private final
focal_class.original_string: private final ReportableEntityHandler<SpanLogs, String> spanLogsHandler;
focal_class.type: ReportableEntityHandler<SpanLogs, String>
focal_class.var_name: spanLogsHandler
focal_class.declarator: wfSender
focal_class.modifier: @Nullable
    private final
focal_class.original_string: @Nullable
    private final WavefrontSender wfSender;
focal_class.type: WavefrontSender
focal_class.var_name: wfSender
focal_class.declarator: wfInternalReporter
focal_class.modifier: @Nullable
    private final
focal_class.original_string: @Nullable
    private final WavefrontInternalReporter wfInternalReporter;
focal_class.type: WavefrontInternalReporter
focal_class.var_name: wfInternalReporter
focal_class.declarator: traceDisabled
focal_class.modifier: private final
focal_class.original_string: private final Supplier<Boolean> traceDisabled;
focal_class.type: Supplier<Boolean>
focal_class.var_name: traceDisabled
focal_class.declarator: spanLogsDisabled
focal_class.modifier: private final
focal_class.original_string: private final Supplier<Boolean> spanLogsDisabled;
focal_class.type: Supplier<Boolean>
focal_class.var_name: spanLogsDisabled
focal_class.declarator: preprocessorSupplier
focal_class.modifier: private final
focal_class.original_string: private final Supplier<ReportableEntityPreprocessor> preprocessorSupplier;
focal_class.type: Supplier<ReportableEntityPreprocessor>
focal_class.var_name: preprocessorSupplier
focal_class.declarator: sampler
focal_class.modifier: private final
focal_class.original_string: private final SpanSampler sampler;
focal_class.type: SpanSampler
focal_class.var_name: sampler
focal_class.declarator: proxyLevelApplicationName
focal_class.modifier: private final
focal_class.original_string: private final String proxyLevelApplicationName;
focal_class.type: String
focal_class.var_name: proxyLevelApplicationName
focal_class.declarator: traceDerivedCustomTagKeys
focal_class.modifier: private final
focal_class.original_string: private final Set<String> traceDerivedCustomTagKeys;
focal_class.type: Set<String>
focal_class.var_name: traceDerivedCustomTagKeys
focal_class.declarator: receivedSpansTotal
focal_class.modifier: private final
focal_class.original_string: private final Counter receivedSpansTotal;
focal_class.type: Counter
focal_class.var_name: receivedSpansTotal
focal_class.declarator: discardedTraces
focal_class.modifier: private final
focal_class.original_string: private final Counter discardedTraces;
focal_class.type: Counter
focal_class.var_name: discardedTraces
focal_class.declarator: discardedBatches
focal_class.modifier: private final
focal_class.original_string: private final Counter discardedBatches;
focal_class.type: Counter
focal_class.var_name: discardedBatches
focal_class.declarator: processedBatches
focal_class.modifier: private final
focal_class.original_string: private final Counter processedBatches;
focal_class.type: Counter
focal_class.var_name: processedBatches
focal_class.declarator: failedBatches
focal_class.modifier: private final
focal_class.original_string: private final Counter failedBatches;
focal_class.type: Counter
focal_class.var_name: failedBatches
focal_class.declarator: discardedSpansBySampler
focal_class.modifier: private final
focal_class.original_string: private final Counter discardedSpansBySampler;
focal_class.type: Counter
focal_class.var_name: discardedSpansBySampler
focal_class.declarator: discoveredHeartbeatMetrics
focal_class.modifier: private final
focal_class.original_string: private final Set<Pair<Map<String, String>, String>> discoveredHeartbeatMetrics;
focal_class.type: Set<Pair<Map<String, String>, String>>
focal_class.var_name: discoveredHeartbeatMetrics
focal_class.declarator: scheduledExecutorService
focal_class.modifier: private final
focal_class.original_string: private final ScheduledExecutorService scheduledExecutorService;
focal_class.type: ScheduledExecutorService
focal_class.var_name: scheduledExecutorService
focal_class.file: proxy/src/main/java/com/wavefront/agent/listeners/tracing/JaegerGrpcCollectorHandler.java
focal_class.identifier: JaegerGrpcCollectorHandler
focal_class.interfaces: implements Runnable, Closeable
focal_class.class_method_signature: JaegerGrpcCollectorHandler.JaegerGrpcCollectorHandler(String handle,
                                      ReportableEntityHandlerFactory handlerFactory,
                                      @Nullable WavefrontSender wfSender,
                                      Supplier<Boolean> traceDisabled,
                                      Supplier<Boolean> spanLogsDisabled,
                                      @Nullable Supplier<ReportableEntityPreprocessor> preprocessor,
                                      SpanSampler sampler,
                                      @Nullable String traceJaegerApplicationName,
                                      Set<String> traceDerivedCustomTagKeys)
focal_class.full_signature: public  JaegerGrpcCollectorHandler(String handle,
                                      ReportableEntityHandlerFactory handlerFactory,
                                      @Nullable WavefrontSender wfSender,
                                      Supplier<Boolean> traceDisabled,
                                      Supplier<Boolean> spanLogsDisabled,
                                      @Nullable Supplier<ReportableEntityPreprocessor> preprocessor,
                                      SpanSampler sampler,
                                      @Nullable String traceJaegerApplicationName,
                                      Set<String> traceDerivedCustomTagKeys)
focal_class.identifier: JaegerGrpcCollectorHandler
focal_class.modifiers: public
focal_class.parameters: (String handle,
                                      ReportableEntityHandlerFactory handlerFactory,
                                      @Nullable WavefrontSender wfSender,
                                      Supplier<Boolean> traceDisabled,
                                      Supplier<Boolean> spanLogsDisabled,
                                      @Nullable Supplier<ReportableEntityPreprocessor> preprocessor,
                                      SpanSampler sampler,
                                      @Nullable String traceJaegerApplicationName,
                                      Set<String> traceDerivedCustomTagKeys)
focal_class.signature:  JaegerGrpcCollectorHandler(String handle,
                                      ReportableEntityHandlerFactory handlerFactory,
                                      @Nullable WavefrontSender wfSender,
                                      Supplier<Boolean> traceDisabled,
                                      Supplier<Boolean> spanLogsDisabled,
                                      @Nullable Supplier<ReportableEntityPreprocessor> preprocessor,
                                      SpanSampler sampler,
                                      @Nullable String traceJaegerApplicationName,
                                      Set<String> traceDerivedCustomTagKeys)
focal_class.class_method_signature: JaegerGrpcCollectorHandler.JaegerGrpcCollectorHandler(String handle,
                                      ReportableEntityHandler<Span, String> spanHandler,
                                      ReportableEntityHandler<SpanLogs, String> spanLogsHandler,
                                      @Nullable WavefrontSender wfSender,
                                      Supplier<Boolean> traceDisabled,
                                      Supplier<Boolean> spanLogsDisabled,
                                      @Nullable Supplier<ReportableEntityPreprocessor> preprocessor,
                                      SpanSampler sampler,
                                      @Nullable String traceJaegerApplicationName,
                                      Set<String> traceDerivedCustomTagKeys)
focal_class.full_signature: public  JaegerGrpcCollectorHandler(String handle,
                                      ReportableEntityHandler<Span, String> spanHandler,
                                      ReportableEntityHandler<SpanLogs, String> spanLogsHandler,
                                      @Nullable WavefrontSender wfSender,
                                      Supplier<Boolean> traceDisabled,
                                      Supplier<Boolean> spanLogsDisabled,
                                      @Nullable Supplier<ReportableEntityPreprocessor> preprocessor,
                                      SpanSampler sampler,
                                      @Nullable String traceJaegerApplicationName,
                                      Set<String> traceDerivedCustomTagKeys)
focal_class.identifier: JaegerGrpcCollectorHandler
focal_class.modifiers: public
focal_class.parameters: (String handle,
                                      ReportableEntityHandler<Span, String> spanHandler,
                                      ReportableEntityHandler<SpanLogs, String> spanLogsHandler,
                                      @Nullable WavefrontSender wfSender,
                                      Supplier<Boolean> traceDisabled,
                                      Supplier<Boolean> spanLogsDisabled,
                                      @Nullable Supplier<ReportableEntityPreprocessor> preprocessor,
                                      SpanSampler sampler,
                                      @Nullable String traceJaegerApplicationName,
                                      Set<String> traceDerivedCustomTagKeys)
focal_class.signature:  JaegerGrpcCollectorHandler(String handle,
                                      ReportableEntityHandler<Span, String> spanHandler,
                                      ReportableEntityHandler<SpanLogs, String> spanLogsHandler,
                                      @Nullable WavefrontSender wfSender,
                                      Supplier<Boolean> traceDisabled,
                                      Supplier<Boolean> spanLogsDisabled,
                                      @Nullable Supplier<ReportableEntityPreprocessor> preprocessor,
                                      SpanSampler sampler,
                                      @Nullable String traceJaegerApplicationName,
                                      Set<String> traceDerivedCustomTagKeys)
focal_class.class_method_signature: JaegerGrpcCollectorHandler.postSpans(Collector.PostSpansRequest request,
                          StreamObserver<Collector.PostSpansResponse> responseObserver)
focal_class.full_signature: @Override public void postSpans(Collector.PostSpansRequest request,
                          StreamObserver<Collector.PostSpansResponse> responseObserver)
focal_class.identifier: postSpans
focal_class.modifiers: @Override public
focal_class.parameters: (Collector.PostSpansRequest request,
                          StreamObserver<Collector.PostSpansResponse> responseObserver)
focal_class.return: void
focal_class.signature: void postSpans(Collector.PostSpansRequest request,
                          StreamObserver<Collector.PostSpansResponse> responseObserver)
focal_class.class_method_signature: JaegerGrpcCollectorHandler.run()
focal_class.full_signature: @Override public void run()
focal_class.identifier: run
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void run()
focal_class.class_method_signature: JaegerGrpcCollectorHandler.close()
focal_class.full_signature: @Override public void close()
focal_class.identifier: close
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void close()
focal_class.superclass: extends CollectorServiceGrpc.CollectorServiceImplBase
focal_method.body: @Override
    public void postSpans(Collector.PostSpansRequest request,
                          StreamObserver<Collector.PostSpansResponse> responseObserver) {
      try {
        processBatch(request.getBatch(), null, DEFAULT_SOURCE, proxyLevelApplicationName,
            spanHandler, spanLogsHandler, wfInternalReporter, traceDisabled, spanLogsDisabled,
            preprocessorSupplier, sampler, traceDerivedCustomTagKeys, discardedTraces,
            discardedBatches, discardedSpansBySampler, discoveredHeartbeatMetrics, receivedSpansTotal);
        processedBatches.inc();
      } catch (Exception e) {
        failedBatches.inc();
        logger.log(Level.WARNING, "Jaeger Protobuf batch processing failed",
            Throwables.getRootCause(e));
      }
      responseObserver.onNext(Collector.PostSpansResponse.newBuilder().build());
      responseObserver.onCompleted();
    }
focal_method.class_method_signature: JaegerGrpcCollectorHandler.postSpans(Collector.PostSpansRequest request,
                          StreamObserver<Collector.PostSpansResponse> responseObserver)
focal_method.full_signature: @Override public void postSpans(Collector.PostSpansRequest request,
                          StreamObserver<Collector.PostSpansResponse> responseObserver)
focal_method.identifier: postSpans
focal_method.invocations: processBatch getBatch inc inc log getRootCause onNext build newBuilder onCompleted
focal_method.modifiers: @Override public
focal_method.parameters: (Collector.PostSpansRequest request,
                          StreamObserver<Collector.PostSpansResponse> responseObserver)
focal_method.return: void
focal_method.signature: void postSpans(Collector.PostSpansRequest request,
                          StreamObserver<Collector.PostSpansResponse> responseObserver)