From 35288df8c9567a23e961643b359969ea113eb33d Mon Sep 17 00:00:00 2001 From: Jaromir Hamala Date: Thu, 23 May 2024 15:13:35 +0200 Subject: [PATCH] feat: log connector version and git revision fixes #10 --- connector/pom.xml | 24 +++++++++++ .../io/questdb/kafka/QuestDBSinkTask.java | 1 + .../java/io/questdb/kafka/VersionUtil.java | 40 ++++++++++++++++--- .../io/questdb/kafka/VersionUtilTest.java | 26 ++++++++++++ 4 files changed, 86 insertions(+), 5 deletions(-) create mode 100644 connector/src/test/java/io/questdb/kafka/VersionUtilTest.java diff --git a/connector/pom.xml b/connector/pom.xml index 67da952..657751e 100644 --- a/connector/pom.xml +++ b/connector/pom.xml @@ -116,6 +116,30 @@ + + pl.project13.maven + git-commit-id-plugin + 4.9.10 + + + get-the-git-infos + + revision + + + + + ${project.basedir}/.git + git + true + ${project.build.outputDirectory}/questdb_connector_version.properties + + false + false + -dirty + + + io.confluent 0.12.0 diff --git a/connector/src/main/java/io/questdb/kafka/QuestDBSinkTask.java b/connector/src/main/java/io/questdb/kafka/QuestDBSinkTask.java index 8695c4f..d8c51ae 100644 --- a/connector/src/main/java/io/questdb/kafka/QuestDBSinkTask.java +++ b/connector/src/main/java/io/questdb/kafka/QuestDBSinkTask.java @@ -51,6 +51,7 @@ public String version() { @Override public void start(Map map) { + log.info("Starting QuestDB sink task [version={}, commit={}]", VersionUtil.getVersion(), VersionUtil.getGitHash()); this.config = new QuestDBSinkConnectorConfig(map); String timestampStringFields = config.getTimestampStringFields(); if (timestampStringFields != null) { diff --git a/connector/src/main/java/io/questdb/kafka/VersionUtil.java b/connector/src/main/java/io/questdb/kafka/VersionUtil.java index 56ed5f3..2f5ea30 100644 --- a/connector/src/main/java/io/questdb/kafka/VersionUtil.java +++ b/connector/src/main/java/io/questdb/kafka/VersionUtil.java @@ -1,11 +1,41 @@ package io.questdb.kafka; +import java.io.IOException; +import java.io.InputStream; +import java.util.Properties; + final class VersionUtil { - static String getVersion() { - try { - return VersionUtil.class.getPackage().getImplementationVersion(); - } catch (Exception ex) { - return "0.0.0.0"; + private static final String VERSION; + private static final String GIT_HASH; + private static final String UNKNOWN = "unknown"; + private static final String PROPERTIES_FILE = "questdb_connector_version.properties"; // keep in sync with pom.xml + + static { + Properties properties = new Properties(); + String version; + String gitHash; + try (InputStream is = VersionUtil.class.getClassLoader().getResourceAsStream(PROPERTIES_FILE)){ + if (is == null) { + version = UNKNOWN; + gitHash = UNKNOWN; + } else { + properties.load(is); + version = String.valueOf(properties.getOrDefault("git.build.version", UNKNOWN)); + gitHash = String.valueOf(properties.getOrDefault("git.commit.id.abbrev", UNKNOWN)); + } + } catch (IOException e) { + version = UNKNOWN; + gitHash = UNKNOWN; } + VERSION = version; + GIT_HASH = gitHash; + } + + static String getVersion() { + return VERSION; + } + + static String getGitHash() { + return GIT_HASH; } } diff --git a/connector/src/test/java/io/questdb/kafka/VersionUtilTest.java b/connector/src/test/java/io/questdb/kafka/VersionUtilTest.java new file mode 100644 index 0000000..4bbde8e --- /dev/null +++ b/connector/src/test/java/io/questdb/kafka/VersionUtilTest.java @@ -0,0 +1,26 @@ +package io.questdb.kafka; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class VersionUtilTest { + // if these tests are failing then build the project with maven + // maven build generates the questdb_connector_version.properties file + + @Test + public void testGetVersion() { + String version = VersionUtil.getVersion(); + assertNotNull(version); + assertNotEquals("unknown", version); + assertFalse(version.isEmpty()); + } + + @Test + public void testGetGitHash() { + String gitHash = VersionUtil.getGitHash(); + assertNotNull(gitHash); + assertNotEquals("unknown", gitHash); + assertFalse(gitHash.isEmpty()); + } +} \ No newline at end of file