diff --git a/astra/src/main/java/com/slack/astra/server/Astra.java b/astra/src/main/java/com/slack/astra/server/Astra.java index 90e6f011d1..c6c47c3f87 100644 --- a/astra/src/main/java/com/slack/astra/server/Astra.java +++ b/astra/src/main/java/com/slack/astra/server/Astra.java @@ -223,7 +223,10 @@ private static Set getServices( .withRequestTimeout(requestTimeout) .withTracing(astraConfig.getTracingConfig()) .withAnnotatedService(new ElasticsearchApiService(astraDistributedQueryService)) - .withAnnotatedService(new ZipkinService(astraDistributedQueryService)) + .withAnnotatedService( + new ZipkinService( + astraDistributedQueryService, + astraConfig.getQueryConfig().getZipkinDefaultMaxSpans())) .withGrpcService(astraDistributedQueryService) .build(); services.add(armeriaService); diff --git a/astra/src/main/java/com/slack/astra/zipkinApi/ZipkinService.java b/astra/src/main/java/com/slack/astra/zipkinApi/ZipkinService.java index 05158e2d6f..0256dad8f9 100644 --- a/astra/src/main/java/com/slack/astra/zipkinApi/ZipkinService.java +++ b/astra/src/main/java/com/slack/astra/zipkinApi/ZipkinService.java @@ -148,7 +148,7 @@ protected static long convertToMicroSeconds(Instant instant) { private static final Logger LOG = LoggerFactory.getLogger(ZipkinService.class); private static long LOOKBACK_MINS = 60 * 24 * 7; - private static final int MAX_SPANS = 20_000; + private final int defaultMaxSpans; private final AstraQueryServiceBase searcher; @@ -160,8 +160,9 @@ protected static long convertToMicroSeconds(Instant instant) { .serializationInclusion(JsonInclude.Include.NON_EMPTY) .build(); - public ZipkinService(AstraQueryServiceBase searcher) { + public ZipkinService(AstraQueryServiceBase searcher, int defaultMaxSpans) { this.searcher = searcher; + this.defaultMaxSpans = defaultMaxSpans; } @Get @@ -216,7 +217,7 @@ public HttpResponse getTraceByTraceId( long endTime = endTimeEpochMs.orElseGet( () -> Instant.now().plus(LOOKBACK_MINS, ChronoUnit.MINUTES).toEpochMilli()); - int howMany = maxSpans.orElse(MAX_SPANS); + int howMany = maxSpans.orElse(this.defaultMaxSpans); brave.Span span = Tracing.currentTracer().currentSpan(); span.tag("startTimeEpochMs", String.valueOf(startTime)); diff --git a/astra/src/main/proto/astra_configs.proto b/astra/src/main/proto/astra_configs.proto index d00b42a1be..605122f971 100644 --- a/astra/src/main/proto/astra_configs.proto +++ b/astra/src/main/proto/astra_configs.proto @@ -85,6 +85,7 @@ message QueryServiceConfig { ServerConfig server_config = 1; int32 default_query_timeout_ms = 2; string managerConnectString = 3; + int32 zipkin_default_max_spans = 4; } enum KafkaOffsetLocation { diff --git a/astra/src/test/java/com/slack/astra/zipkinApi/ZipkinServiceTest.java b/astra/src/test/java/com/slack/astra/zipkinApi/ZipkinServiceTest.java index 9154d28a7f..ee2240ae03 100644 --- a/astra/src/test/java/com/slack/astra/zipkinApi/ZipkinServiceTest.java +++ b/astra/src/test/java/com/slack/astra/zipkinApi/ZipkinServiceTest.java @@ -34,7 +34,7 @@ public class ZipkinServiceTest { @BeforeEach public void setup() throws IOException { MockitoAnnotations.openMocks(this); - zipkinService = spy(new ZipkinService(searcher)); + zipkinService = spy(new ZipkinService(searcher, 20000)); // Build mockSearchResult ObjectMapper objectMapper = new ObjectMapper(); JsonNode jsonNode = diff --git a/config/config.yaml b/config/config.yaml index f2c9fb3a0a..310bd85065 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -50,6 +50,7 @@ queryConfig: serverAddress: ${ASTRA_QUERY_SERVER_ADDRESS:-localhost} requestTimeoutMs: ${ASTRA_QUERY_REQUEST_TIMEOUT_MS:-5000} defaultQueryTimeoutMs: ${ASTRA_QUERY_DEFAULT_QUERY_TIMEOUT_MS:-3000} + zipkinDefaultMaxSpans: ${ASTRA_QUERY_ZIPKIN_DEFAULT_MAX_SPANS:-20000} managerConnectString: ${ASTRA_MANAGER_CONNECTION_STRING:-localhost:8083} metadataStoreConfig: