Skip to content

Commit 63e64f5

Browse files
dsblankclaude
andcommitted
[issue-5397] [BE] address review: use Dropwizard Duration for healthCheckTimeout
- Change healthCheckTimeout field type from int to Dropwizard Duration in DatabaseAnalyticsFactory, allowing flexible config values (e.g. 1s, 500ms) - Rename @nAmed binding to snake_case "health_check_timeout" - Update config.yml and config-test.yml to use Duration string format - Env var renamed from ANALYTICS_DB_HEALTH_CHECK_TIMEOUT_SECONDS to ANALYTICS_DB_HEALTH_CHECK_TIMEOUT Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 1d6c12b commit 63e64f5

5 files changed

Lines changed: 16 additions & 15 deletions

File tree

apps/opik-backend/config.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,9 +86,9 @@ databaseAnalytics:
8686
# - custom_http_params=max_query_size=100000000
8787
# Description: query parameters that will be added to the connection string
8888
queryParameters: ${ANALYTICS_DB_QUERY_PARAMETERS:-health_check_interval=2000&compress=1&auto_discovery=true&failover=3&custom_http_params=max_query_size=100000000,async_insert_busy_timeout_max_ms=250,async_insert_busy_timeout_min_ms=100,async_insert=1,wait_for_async_insert=1,async_insert_use_adaptive_busy_timeout=1,async_insert_deduplicate=1,use_skip_indexes_if_final=1}
89-
# Default: 1
90-
# Description: Timeout in seconds for the ClickHouse health check query
91-
healthCheckTimeoutSeconds: ${ANALYTICS_DB_HEALTH_CHECK_TIMEOUT_SECONDS:-1}
89+
# Default: 1s
90+
# Description: Timeout for the ClickHouse health check query (e.g. 1s, 500ms, 2 minutes)
91+
healthCheckTimeout: ${ANALYTICS_DB_HEALTH_CHECK_TIMEOUT:-1s}
9292

9393
# https://www.dropwizard.io/en/stable/manual/configuration.html#health
9494
health:

apps/opik-backend/src/main/java/com/comet/opik/infrastructure/DatabaseAnalyticsFactory.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.comet.opik.infrastructure;
22

3+
import io.dropwizard.util.Duration;
34
import io.r2dbc.spi.ConnectionFactories;
45
import io.r2dbc.spi.ConnectionFactory;
56
import jakarta.validation.constraints.NotBlank;
@@ -20,7 +21,7 @@ public class DatabaseAnalyticsFactory {
2021
private @NotNull String password;
2122
private @NotBlank String databaseName;
2223
private String queryParameters;
23-
private int healthCheckTimeoutSeconds = 1;
24+
private Duration healthCheckTimeout = Duration.seconds(1);
2425

2526
public ConnectionFactory build() {
2627
var options = queryParameters == null ? "" : "?%s".formatted(queryParameters);

apps/opik-backend/src/main/java/com/comet/opik/infrastructure/db/ClickHouseHealthyCheck.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,24 @@
11
package com.comet.opik.infrastructure.db;
22

3+
import io.dropwizard.util.Duration;
34
import jakarta.inject.Inject;
45
import jakarta.inject.Named;
56
import jakarta.inject.Singleton;
67
import lombok.NonNull;
78
import reactor.core.publisher.Mono;
89
import ru.vyarus.dropwizard.guice.module.installer.feature.health.NamedHealthCheck;
910

10-
import java.time.Duration;
11-
1211
@Singleton
1312
public class ClickHouseHealthyCheck extends NamedHealthCheck {
1413

1514
private final TransactionTemplateAsync template;
16-
private final Duration healthCheckTimeout;
15+
private final java.time.Duration healthCheckTimeout;
1716

1817
@Inject
1918
public ClickHouseHealthyCheck(@NonNull TransactionTemplateAsync template,
20-
@Named("ClickHouse Health Check Timeout Seconds") int healthCheckTimeoutSeconds) {
19+
@Named("health_check_timeout") Duration healthCheckTimeout) {
2120
this.template = template;
22-
this.healthCheckTimeout = Duration.ofSeconds(healthCheckTimeoutSeconds);
21+
this.healthCheckTimeout = java.time.Duration.ofMillis(healthCheckTimeout.toMilliseconds());
2322
}
2423

2524
@Override

apps/opik-backend/src/main/java/com/comet/opik/infrastructure/db/DatabaseAnalyticsModule.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.comet.opik.infrastructure.OpikConfiguration;
66
import com.comet.opik.infrastructure.log.UserFacingLoggingFactory;
77
import com.google.inject.Provides;
8+
import io.dropwizard.util.Duration;
89
import io.opentelemetry.api.GlobalOpenTelemetry;
910
import io.opentelemetry.instrumentation.r2dbc.v1_0.R2dbcTelemetry;
1011
import io.r2dbc.spi.ConnectionFactory;
@@ -46,9 +47,9 @@ public String getDatabaseName() {
4647

4748
@Provides
4849
@Singleton
49-
@Named("ClickHouse Health Check Timeout Seconds")
50-
public int getHealthCheckTimeoutSeconds() {
51-
return databaseAnalyticsFactory.getHealthCheckTimeoutSeconds();
50+
@Named("health_check_timeout")
51+
public Duration getHealthCheckTimeout() {
52+
return databaseAnalyticsFactory.getHealthCheckTimeout();
5253
}
5354

5455
@Provides

apps/opik-backend/src/test/resources/config-test.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,9 @@ databaseAnalytics:
7070
# - custom_http_params=max_query_size=100000000
7171
# Description: query parameters that will be added to the connection string
7272
queryParameters: health_check_interval=2000&compress=1&auto_discovery=true&failover=3&custom_http_params=max_query_size=100000000,async_insert_busy_timeout_max_ms=60,async_insert_busy_timeout_min_ms=50,async_insert=1,wait_for_async_insert=1,async_insert_use_adaptive_busy_timeout=1,async_insert_deduplicate=1,use_skip_indexes_if_final=1
73-
# Default: 1
74-
# Description: Timeout in seconds for the ClickHouse health check query
75-
healthCheckTimeoutSeconds: 1
73+
# Default: 1s
74+
# Description: Timeout for the ClickHouse health check query (e.g. 1s, 500ms, 2 minutes)
75+
healthCheckTimeout: 1s
7676

7777
# https://www.dropwizard.io/en/stable/manual/configuration.html#health
7878
health:

0 commit comments

Comments
 (0)