Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.datastax.oss.driver.api.core.metrics.DefaultSessionMetric;
import jakarta.annotation.Nullable;
import ru.tinkoff.kora.config.common.annotation.ConfigValueExtractor;
import ru.tinkoff.kora.database.common.telemetry.DatabaseTelemetryConfig;
import ru.tinkoff.kora.telemetry.common.TelemetryConfig;

import java.time.Duration;
Expand Down Expand Up @@ -33,7 +34,7 @@ public interface CassandraConfig {
@Nullable
CassandraCredentials auth();

TelemetryConfig telemetry();
DatabaseTelemetryConfig telemetry();

@ConfigValueExtractor
interface CassandraCredentials {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,8 @@ public CassandraDatabase(CassandraConfig config, @Nullable CassandraConfigurer c
Objects.requireNonNullElse(config.basic().sessionName(), "cassandra"),
"cassandra",
"cassandra",
Optional.ofNullable(config.auth()).map(CassandraConfig.CassandraCredentials::login).orElse("anonymous")
Optional.ofNullable(config.auth()).map(CassandraConfig.CassandraCredentials::login).orElse("anonymous"),
config.basic().contactPoints().stream().findFirst().orElse(null)
), DataBaseTelemetryFactory.EMPTY);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
package ru.tinkoff.kora.database.cassandra;

import org.assertj.core.api.Assertions;
import org.jetbrains.annotations.Nullable;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import ru.tinkoff.kora.database.common.QueryContext;
import ru.tinkoff.kora.database.common.telemetry.$DatabaseTelemetryConfig_ConfigValueExtractor;
import ru.tinkoff.kora.database.common.telemetry.$DatabaseTracingConfig_ConfigValueExtractor;
import ru.tinkoff.kora.database.common.telemetry.DatabaseTracingConfig;
import ru.tinkoff.kora.database.common.telemetry.DefaultDataBaseTelemetryFactory;
import ru.tinkoff.kora.telemetry.common.$TelemetryConfig_ConfigValueExtractor;
import ru.tinkoff.kora.telemetry.common.$TelemetryConfig_LogConfig_ConfigValueExtractor;
Expand Down Expand Up @@ -56,9 +60,9 @@ private static CassandraDatabase createCassandraDatabase(CassandraParams params)
params.username(),
params.password()
),
new $TelemetryConfig_ConfigValueExtractor.TelemetryConfig_Impl(
new $DatabaseTelemetryConfig_ConfigValueExtractor.DatabaseTelemetryConfig_Impl(
new $DatabaseTracingConfig_ConfigValueExtractor.DatabaseTracingConfig_Impl(false, false),
new $TelemetryConfig_LogConfig_ConfigValueExtractor.LogConfig_Impl(true),
new $TelemetryConfig_TracingConfig_ConfigValueExtractor.TracingConfig_Impl(true),
new $TelemetryConfig_MetricsConfig_ConfigValueExtractor.MetricsConfig_Impl(null, null)
)
);
Expand Down
2 changes: 2 additions & 0 deletions database/database-common/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ plugins {
}

dependencies {
annotationProcessor project(":config:config-annotation-processor")

compileOnly libs.jetbrains.annotations

api project(":common")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import ru.tinkoff.kora.telemetry.common.TelemetryConfig;

public interface DataBaseTelemetryFactory {

DataBaseTelemetry.DataBaseTelemetryContext EMPTY_CTX = exception -> {};
DataBaseTelemetry EMPTY = new DataBaseTelemetry() {
@Nullable
Expand All @@ -20,5 +21,12 @@ public DataBaseTelemetryContext createContext(Context context, QueryContext quer
}
};

DataBaseTelemetry get(TelemetryConfig config, String name, String driverType, String dbType, String username);
@Deprecated
default DataBaseTelemetry get(TelemetryConfig config, String name, String driverType, String dbType, String username) {
return EMPTY;
}

default DataBaseTelemetry get(TelemetryConfig config, String name, String driverType, String dbType, String username, @Nullable String connectionString) {
return get(config, name, driverType, dbType, username);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package ru.tinkoff.kora.database.common.telemetry;

import ru.tinkoff.kora.config.common.annotation.ConfigValueExtractor;
import ru.tinkoff.kora.telemetry.common.TelemetryConfig;

@ConfigValueExtractor
public interface DatabaseTelemetryConfig extends TelemetryConfig {

@Override
DatabaseTracingConfig tracing();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package ru.tinkoff.kora.database.common.telemetry;

import ru.tinkoff.kora.config.common.annotation.ConfigValueExtractor;
import ru.tinkoff.kora.telemetry.common.TelemetryConfig;

@ConfigValueExtractor
public interface DatabaseTracingConfig extends TelemetryConfig.TracingConfig {

default boolean traceConnectionURI() {
return false;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,17 +11,24 @@ public class DefaultDataBaseTelemetryFactory implements DataBaseTelemetryFactory
@Nullable
private final DataBaseTracerFactory tracingFactory;

public DefaultDataBaseTelemetryFactory(@Nullable DataBaseLoggerFactory loggerFactory, @Nullable DataBaseMetricWriterFactory metricWriterFactory, @Nullable DataBaseTracerFactory tracingFactory) {
public DefaultDataBaseTelemetryFactory(@Nullable DataBaseLoggerFactory loggerFactory,
@Nullable DataBaseMetricWriterFactory metricWriterFactory,
@Nullable DataBaseTracerFactory tracingFactory) {
this.loggerFactory = loggerFactory;
this.metricWriterFactory = metricWriterFactory;
this.tracingFactory = tracingFactory;
}

@Override
public DataBaseTelemetry get(TelemetryConfig config, String name, String driverType, String dbType, String username) {
return this.get(config, name, driverType, dbType, username, null);
}

@Override
public DataBaseTelemetry get(TelemetryConfig config, String name, String driverType, String dbType, String username, @Nullable String connectionString) {
var logger = this.loggerFactory == null ? null : this.loggerFactory.get(config.logging(), name);
var metricWriter = this.metricWriterFactory == null ? null : this.metricWriterFactory.get(config.metrics(), name);
var tracingFactory = this.tracingFactory == null ? null : this.tracingFactory.get(config.tracing(), dbType, null, username);
var tracingFactory = this.tracingFactory == null ? null : this.tracingFactory.get(config.tracing(), dbType, connectionString, username);
if (logger == null && metricWriter == null && tracingFactory == null) {
return EMPTY;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import ru.tinkoff.kora.database.common.telemetry.$DatabaseTelemetryConfig_ConfigValueExtractor;
import ru.tinkoff.kora.database.common.telemetry.$DatabaseTracingConfig_ConfigValueExtractor;
import ru.tinkoff.kora.database.common.telemetry.DefaultDataBaseTelemetryFactory;
import ru.tinkoff.kora.database.jdbc.$JdbcDatabaseConfig_ConfigValueExtractor;
import ru.tinkoff.kora.database.jdbc.JdbcDatabase;
Expand Down Expand Up @@ -39,9 +41,9 @@ public void testFlywayInterceptor(PostgresParams params) throws SQLException {
Duration.ofMillis(1000L),
false,
new Properties(),
new $TelemetryConfig_ConfigValueExtractor.TelemetryConfig_Impl(
new $DatabaseTelemetryConfig_ConfigValueExtractor.DatabaseTelemetryConfig_Impl(
new $DatabaseTracingConfig_ConfigValueExtractor.DatabaseTracingConfig_Impl(false, false),
new $TelemetryConfig_LogConfig_ConfigValueExtractor.LogConfig_Impl(true),
new $TelemetryConfig_TracingConfig_ConfigValueExtractor.TracingConfig_Impl(true),
new $TelemetryConfig_MetricsConfig_ConfigValueExtractor.MetricsConfig_Impl(null, null)
)
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,8 @@ private static DataBaseTelemetry getTelemetry(JdbcDatabaseConfig config, DataBas
config.poolName(),
"jdbc",
jdbcDatabase,
config.username()
config.username(),
jdbcUrl
);
return Objects.requireNonNullElse(telemetry, DataBaseTelemetryFactory.EMPTY);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.zaxxer.hikari.HikariConfig;
import jakarta.annotation.Nullable;
import ru.tinkoff.kora.config.common.annotation.ConfigValueExtractor;
import ru.tinkoff.kora.database.common.telemetry.DatabaseTelemetryConfig;
import ru.tinkoff.kora.telemetry.common.TelemetryConfig;

import java.time.Duration;
Expand Down Expand Up @@ -67,7 +68,7 @@ default Properties dsProperties() {
return new Properties();
}

TelemetryConfig telemetry();
DatabaseTelemetryConfig telemetry();

static HikariConfig toHikariConfig(JdbcDatabaseConfig config) {
var hikariConfig = new HikariConfig();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,16 @@
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.slf4j.LoggerFactory;
import ru.tinkoff.kora.database.common.telemetry.$DatabaseTelemetryConfig_ConfigValueExtractor;
import ru.tinkoff.kora.database.common.telemetry.$DatabaseTelemetryConfig_ConfigValueExtractor.DatabaseTelemetryConfig_Impl;
import ru.tinkoff.kora.database.common.telemetry.$DatabaseTracingConfig_ConfigValueExtractor;
import ru.tinkoff.kora.database.common.telemetry.$DatabaseTracingConfig_ConfigValueExtractor.DatabaseTracingConfig_Impl;
import ru.tinkoff.kora.database.common.telemetry.DefaultDataBaseTelemetryFactory;
import ru.tinkoff.kora.telemetry.common.$TelemetryConfig_ConfigValueExtractor;
import ru.tinkoff.kora.telemetry.common.$TelemetryConfig_LogConfig_ConfigValueExtractor;
import ru.tinkoff.kora.telemetry.common.$TelemetryConfig_LogConfig_ConfigValueExtractor.LogConfig_Impl;
import ru.tinkoff.kora.telemetry.common.$TelemetryConfig_MetricsConfig_ConfigValueExtractor;
import ru.tinkoff.kora.telemetry.common.$TelemetryConfig_MetricsConfig_ConfigValueExtractor.MetricsConfig_Impl;
import ru.tinkoff.kora.telemetry.common.$TelemetryConfig_TracingConfig_ConfigValueExtractor;
import ru.tinkoff.kora.test.postgres.PostgresParams;
import ru.tinkoff.kora.test.postgres.PostgresTestContainer;
Expand Down Expand Up @@ -50,10 +56,10 @@ private static void withDb(PostgresParams params, Consumer<JdbcDatabase> consume
Duration.ofMillis(1000L),
false,
new Properties(),
new $TelemetryConfig_ConfigValueExtractor.TelemetryConfig_Impl(
new $TelemetryConfig_LogConfig_ConfigValueExtractor.LogConfig_Impl(true),
new $TelemetryConfig_TracingConfig_ConfigValueExtractor.TracingConfig_Impl(true),
new $TelemetryConfig_MetricsConfig_ConfigValueExtractor.MetricsConfig_Impl(null, null)
new DatabaseTelemetryConfig_Impl(
new DatabaseTracingConfig_Impl(true, false),
new LogConfig_Impl(true),
new MetricsConfig_Impl(null, null)
)
);
var db = new JdbcDatabase(config, new DefaultDataBaseTelemetryFactory(null, null, null));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.ExtendWith
import org.slf4j.LoggerFactory
import ru.tinkoff.kora.common.Context
import ru.tinkoff.kora.database.common.telemetry.`$DatabaseTelemetryConfig_ConfigValueExtractor`
import ru.tinkoff.kora.database.common.telemetry.`$DatabaseTelemetryConfig_ConfigValueExtractor`.DatabaseTelemetryConfig_Impl
import ru.tinkoff.kora.database.common.telemetry.`$DatabaseTracingConfig_ConfigValueExtractor`
import ru.tinkoff.kora.database.common.telemetry.`$DatabaseTracingConfig_ConfigValueExtractor`.DatabaseTracingConfig_Impl
import ru.tinkoff.kora.database.common.telemetry.DefaultDataBaseTelemetryFactory
import ru.tinkoff.kora.database.jdbc.`$JdbcDatabaseConfig_ConfigValueExtractor`.*
import ru.tinkoff.kora.database.jdbc.JdbcHelper.SqlRunnable
Expand Down Expand Up @@ -161,9 +165,9 @@ internal class SuspendJdbcDatabaseTest {
Duration.ofMillis(1000L),
false,
Properties(),
TelemetryConfig_Impl(
DatabaseTelemetryConfig_Impl(
DatabaseTracingConfig_Impl(true, false),
LogConfig_Impl(true),
TracingConfig_Impl(true),
MetricsConfig_Impl(null, null)
)
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import ru.tinkoff.kora.database.common.telemetry.$DatabaseTelemetryConfig_ConfigValueExtractor;
import ru.tinkoff.kora.database.common.telemetry.$DatabaseTracingConfig_ConfigValueExtractor;
import ru.tinkoff.kora.database.common.telemetry.DefaultDataBaseTelemetryFactory;
import ru.tinkoff.kora.database.jdbc.$JdbcDatabaseConfig_ConfigValueExtractor;
import ru.tinkoff.kora.database.jdbc.JdbcDatabase;
Expand Down Expand Up @@ -39,9 +41,9 @@ public void testLiquibaseInterceptor(PostgresParams params) throws SQLException
Duration.ofMillis(1000L),
false,
new Properties(),
new $TelemetryConfig_ConfigValueExtractor.TelemetryConfig_Impl(
new $DatabaseTelemetryConfig_ConfigValueExtractor.DatabaseTelemetryConfig_Impl(
new $DatabaseTracingConfig_ConfigValueExtractor.DatabaseTracingConfig_Impl(false, false),
new $TelemetryConfig_LogConfig_ConfigValueExtractor.LogConfig_Impl(true),
new $TelemetryConfig_TracingConfig_ConfigValueExtractor.TracingConfig_Impl(true),
new $TelemetryConfig_MetricsConfig_ConfigValueExtractor.MetricsConfig_Impl(null, null)
)
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,8 @@ public R2dbcDatabase(R2dbcDatabaseConfig config, List<Function<ConnectionFactory
config.poolName(),
"r2dbc",
config.r2dbcUrl().substring(6, config.r2dbcUrl().indexOf(":", 6)),
config.username()
config.username(),
config.r2dbcUrl()
), DataBaseTelemetryFactory.EMPTY);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import io.r2dbc.pool.ConnectionPoolConfiguration;
import jakarta.annotation.Nullable;
import ru.tinkoff.kora.config.common.annotation.ConfigValueExtractor;
import ru.tinkoff.kora.database.common.telemetry.DatabaseTelemetryConfig;
import ru.tinkoff.kora.telemetry.common.TelemetryConfig;

import java.time.Duration;
Expand Down Expand Up @@ -64,5 +65,5 @@ default Map<String, String> options() {
return Map.of();
}

TelemetryConfig telemetry();
DatabaseTelemetryConfig telemetry();
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,16 @@
import org.junit.jupiter.api.extension.ExtendWith;
import reactor.test.StepVerifier;
import ru.tinkoff.kora.database.common.QueryContext;
import ru.tinkoff.kora.database.common.telemetry.$DatabaseTelemetryConfig_ConfigValueExtractor;
import ru.tinkoff.kora.database.common.telemetry.$DatabaseTelemetryConfig_ConfigValueExtractor.DatabaseTelemetryConfig_Impl;
import ru.tinkoff.kora.database.common.telemetry.$DatabaseTracingConfig_ConfigValueExtractor;
import ru.tinkoff.kora.database.common.telemetry.$DatabaseTracingConfig_ConfigValueExtractor.DatabaseTracingConfig_Impl;
import ru.tinkoff.kora.database.common.telemetry.DefaultDataBaseTelemetryFactory;
import ru.tinkoff.kora.telemetry.common.$TelemetryConfig_ConfigValueExtractor;
import ru.tinkoff.kora.telemetry.common.$TelemetryConfig_LogConfig_ConfigValueExtractor;
import ru.tinkoff.kora.telemetry.common.$TelemetryConfig_LogConfig_ConfigValueExtractor.LogConfig_Impl;
import ru.tinkoff.kora.telemetry.common.$TelemetryConfig_MetricsConfig_ConfigValueExtractor;
import ru.tinkoff.kora.telemetry.common.$TelemetryConfig_MetricsConfig_ConfigValueExtractor.MetricsConfig_Impl;
import ru.tinkoff.kora.telemetry.common.$TelemetryConfig_TracingConfig_ConfigValueExtractor;
import ru.tinkoff.kora.test.postgres.PostgresParams;
import ru.tinkoff.kora.test.postgres.PostgresTestContainer;
Expand Down Expand Up @@ -41,10 +47,10 @@ private static void withDb(PostgresParams params, Consumer<R2dbcDatabase> consum
0,
false,
Collections.emptyMap(),
new $TelemetryConfig_ConfigValueExtractor.TelemetryConfig_Impl(
new $TelemetryConfig_LogConfig_ConfigValueExtractor.LogConfig_Impl(true),
new $TelemetryConfig_TracingConfig_ConfigValueExtractor.TracingConfig_Impl(true),
new $TelemetryConfig_MetricsConfig_ConfigValueExtractor.MetricsConfig_Impl(null, null)
new DatabaseTelemetryConfig_Impl(
new DatabaseTracingConfig_Impl(true, false),
new LogConfig_Impl(true),
new MetricsConfig_Impl(null, null)
)
);
var db = new R2dbcDatabase(config, List.of(), new DefaultDataBaseTelemetryFactory(null, null, null));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.ExtendWith
import org.junit.jupiter.api.fail
import ru.tinkoff.kora.common.Context
import ru.tinkoff.kora.database.common.telemetry.`$DatabaseTelemetryConfig_ConfigValueExtractor`
import ru.tinkoff.kora.database.common.telemetry.`$DatabaseTelemetryConfig_ConfigValueExtractor`.DatabaseTelemetryConfig_Impl
import ru.tinkoff.kora.database.common.telemetry.`$DatabaseTracingConfig_ConfigValueExtractor`.DatabaseTracingConfig_Impl
import ru.tinkoff.kora.database.common.telemetry.DefaultDataBaseTelemetryFactory
import ru.tinkoff.kora.database.r2dbc.`$R2dbcDatabaseConfig_ConfigValueExtractor`.R2dbcDatabaseConfig_Impl
import ru.tinkoff.kora.telemetry.common.`$TelemetryConfig_ConfigValueExtractor`.TelemetryConfig_Impl
Expand Down Expand Up @@ -109,9 +112,9 @@ class R2dbcDatabaseExtensionTest {
0,
false,
mapOf<String, String>(),
TelemetryConfig_Impl(
DatabaseTelemetryConfig_Impl(
DatabaseTracingConfig_Impl(true, false),
LogConfig_Impl(true),
TracingConfig_Impl(true),
MetricsConfig_Impl(null, null)
)
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,17 @@ import org.mockito.ArgumentMatchers
import org.mockito.Mockito
import org.mockito.kotlin.verify
import ru.tinkoff.kora.common.Tag
import ru.tinkoff.kora.database.common.telemetry.`$DatabaseTelemetryConfig_ConfigValueExtractor`.DatabaseTelemetryConfig_Impl
import ru.tinkoff.kora.database.common.telemetry.`$DatabaseTracingConfig_ConfigValueExtractor`
import ru.tinkoff.kora.database.common.telemetry.`$DatabaseTracingConfig_ConfigValueExtractor`.DatabaseTracingConfig_Impl
import ru.tinkoff.kora.database.jdbc.`$JdbcDatabaseConfig_ConfigValueExtractor`.JdbcDatabaseConfig_Impl
import ru.tinkoff.kora.database.jdbc.mapper.parameter.JdbcParameterColumnMapper
import ru.tinkoff.kora.database.symbol.processor.entity.TestEntity
import ru.tinkoff.kora.telemetry.common.`$TelemetryConfig_ConfigValueExtractor`
import ru.tinkoff.kora.telemetry.common.`$TelemetryConfig_LogConfig_ConfigValueExtractor`
import ru.tinkoff.kora.telemetry.common.`$TelemetryConfig_LogConfig_ConfigValueExtractor`.LogConfig_Impl
import ru.tinkoff.kora.telemetry.common.`$TelemetryConfig_MetricsConfig_ConfigValueExtractor`
import ru.tinkoff.kora.telemetry.common.`$TelemetryConfig_MetricsConfig_ConfigValueExtractor`.MetricsConfig_Impl
import ru.tinkoff.kora.telemetry.common.`$TelemetryConfig_TracingConfig_ConfigValueExtractor`
import java.time.Duration
import java.util.*
Expand Down Expand Up @@ -54,10 +59,10 @@ class JdbcParametersTest : AbstractJdbcRepositoryTest() {
Duration.ofMillis(1000L),
false,
Properties(),
`$TelemetryConfig_ConfigValueExtractor`.TelemetryConfig_Impl(
`$TelemetryConfig_LogConfig_ConfigValueExtractor`.LogConfig_Impl(true),
`$TelemetryConfig_TracingConfig_ConfigValueExtractor`.TracingConfig_Impl(true),
`$TelemetryConfig_MetricsConfig_ConfigValueExtractor`.MetricsConfig_Impl(null, null)
DatabaseTelemetryConfig_Impl(
DatabaseTracingConfig_Impl(true, false),
LogConfig_Impl(true),
MetricsConfig_Impl(null, null)
)
)
val repository = compileForArgs(
Expand Down
Loading