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