This is an automated email from the ASF dual-hosted git repository.
maciej pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iggy.git
The following commit(s) were added to refs/heads/master by this push:
new e5cf2d2f4 feat(connectors): add connector version to stats endpoint
(#2660)
e5cf2d2f4 is described below
commit e5cf2d2f44681015adae30074a7e2d62a1b3bcde
Author: Maciej Modzelewski <[email protected]>
AuthorDate: Tue Feb 3 07:56:00 2026 +0100
feat(connectors): add connector version to stats endpoint (#2660)
- Expose per-connector version info for monitoring and debugging
- Add version() FFI export to SDK connector macros
- Include both string version and numeric semver in stats response
---
Cargo.lock | 20 ++++-----
Cargo.toml | 2 +-
DEPENDENCIES.md | 20 ++++-----
core/connectors/README.md | 2 +-
core/connectors/runtime/Cargo.toml | 2 +-
core/connectors/runtime/README.md | 51 ++++++++++++++++++++++
core/connectors/runtime/src/context.rs | 2 +
core/connectors/runtime/src/main.rs | 4 ++
core/connectors/runtime/src/manager/sink.rs | 1 +
core/connectors/runtime/src/manager/source.rs | 1 +
core/connectors/runtime/src/sink.rs | 13 ++++++
core/connectors/runtime/src/source.rs | 13 ++++++
core/connectors/runtime/src/stats.rs | 14 ++++++
core/connectors/sdk/Cargo.toml | 2 +-
core/connectors/sdk/README.md | 4 +-
core/connectors/sdk/src/sink.rs | 7 +++
core/connectors/sdk/src/source.rs | 7 +++
.../connectors/sinks/elasticsearch_sink/Cargo.toml | 2 +-
core/connectors/sinks/iceberg_sink/Cargo.toml | 2 +-
core/connectors/sinks/postgres_sink/Cargo.toml | 2 +-
core/connectors/sinks/quickwit_sink/Cargo.toml | 2 +-
core/connectors/sinks/stdout_sink/Cargo.toml | 2 +-
.../sources/elasticsearch_source/Cargo.toml | 2 +-
core/connectors/sources/postgres_source/Cargo.toml | 2 +-
core/connectors/sources/random_source/Cargo.toml | 2 +-
25 files changed, 148 insertions(+), 33 deletions(-)
diff --git a/Cargo.lock b/Cargo.lock
index f2806dd02..1cbecf2ab 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -4540,7 +4540,7 @@ dependencies = [
[[package]]
name = "iggy-connectors"
-version = "0.2.2-edge.1"
+version = "0.2.3-edge.1"
dependencies = [
"async-trait",
"axum",
@@ -4686,7 +4686,7 @@ dependencies = [
[[package]]
name = "iggy_connector_elasticsearch_sink"
-version = "0.2.1-edge.1"
+version = "0.2.2-edge.1"
dependencies = [
"async-trait",
"base64 0.22.1",
@@ -4704,7 +4704,7 @@ dependencies = [
[[package]]
name = "iggy_connector_elasticsearch_source"
-version = "0.2.1-edge.1"
+version = "0.2.2-edge.1"
dependencies = [
"async-trait",
"chrono",
@@ -4722,7 +4722,7 @@ dependencies = [
[[package]]
name = "iggy_connector_iceberg_sink"
-version = "0.2.1-edge.1"
+version = "0.2.2-edge.1"
dependencies = [
"arrow-json",
"async-trait",
@@ -4741,7 +4741,7 @@ dependencies = [
[[package]]
name = "iggy_connector_postgres_sink"
-version = "0.2.1-edge.1"
+version = "0.2.2-edge.1"
dependencies = [
"async-trait",
"chrono",
@@ -4760,7 +4760,7 @@ dependencies = [
[[package]]
name = "iggy_connector_postgres_source"
-version = "0.2.1-edge.1"
+version = "0.2.2-edge.1"
dependencies = [
"async-trait",
"base64 0.22.1",
@@ -4781,7 +4781,7 @@ dependencies = [
[[package]]
name = "iggy_connector_quickwit_sink"
-version = "0.2.1-edge.1"
+version = "0.2.2-edge.1"
dependencies = [
"async-trait",
"dashmap",
@@ -4796,7 +4796,7 @@ dependencies = [
[[package]]
name = "iggy_connector_random_source"
-version = "0.2.1-edge.1"
+version = "0.2.2-edge.1"
dependencies = [
"async-trait",
"dashmap",
@@ -4813,7 +4813,7 @@ dependencies = [
[[package]]
name = "iggy_connector_sdk"
-version = "0.1.2-edge.1"
+version = "0.1.3-edge.1"
dependencies = [
"async-trait",
"base64 0.22.1",
@@ -4841,7 +4841,7 @@ dependencies = [
[[package]]
name = "iggy_connector_stdout_sink"
-version = "0.2.1-edge.1"
+version = "0.2.2-edge.1"
dependencies = [
"async-trait",
"dashmap",
diff --git a/Cargo.toml b/Cargo.toml
index 0be7d8a9c..f61c76455 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -163,7 +163,7 @@ iceberg-catalog-rest = "0.8.0"
iggy = { path = "core/sdk", version = "0.8.2-edge.2" }
iggy_binary_protocol = { path = "core/binary_protocol", version =
"0.8.2-edge.2" }
iggy_common = { path = "core/common", version = "0.8.2-edge.2" }
-iggy_connector_sdk = { path = "core/connectors/sdk", version = "0.1.2-edge.1" }
+iggy_connector_sdk = { path = "core/connectors/sdk", version = "0.1.3-edge.1" }
integration = { path = "core/integration" }
journal = { path = "core/journal" }
js-sys = "0.3"
diff --git a/DEPENDENCIES.md b/DEPENDENCIES.md
index 924cbd10d..8da864a75 100644
--- a/DEPENDENCIES.md
+++ b/DEPENDENCIES.md
@@ -389,19 +389,19 @@ iggy: 0.8.2-edge.2, "Apache-2.0",
iggy-bench: 0.3.2-edge.1, "Apache-2.0",
iggy-bench-dashboard-server: 0.5.1-edge.1, "Apache-2.0",
iggy-cli: 0.10.2-edge.1, "Apache-2.0",
-iggy-connectors: 0.2.2-edge.1, "Apache-2.0",
+iggy-connectors: 0.2.3-edge.1, "Apache-2.0",
iggy-mcp: 0.2.2-edge.1, "Apache-2.0",
iggy_binary_protocol: 0.8.2-edge.2, "Apache-2.0",
iggy_common: 0.8.2-edge.2, "Apache-2.0",
-iggy_connector_elasticsearch_sink: 0.2.1-edge.1, "Apache-2.0",
-iggy_connector_elasticsearch_source: 0.2.1-edge.1, "Apache-2.0",
-iggy_connector_iceberg_sink: 0.2.1-edge.1, "Apache-2.0",
-iggy_connector_postgres_sink: 0.2.1-edge.1, "Apache-2.0",
-iggy_connector_postgres_source: 0.2.1-edge.1, "Apache-2.0",
-iggy_connector_quickwit_sink: 0.2.1-edge.1, "Apache-2.0",
-iggy_connector_random_source: 0.2.1-edge.1, "Apache-2.0",
-iggy_connector_sdk: 0.1.2-edge.1, "Apache-2.0",
-iggy_connector_stdout_sink: 0.2.1-edge.1, "Apache-2.0",
+iggy_connector_elasticsearch_sink: 0.2.2-edge.1, "Apache-2.0",
+iggy_connector_elasticsearch_source: 0.2.2-edge.1, "Apache-2.0",
+iggy_connector_iceberg_sink: 0.2.2-edge.1, "Apache-2.0",
+iggy_connector_postgres_sink: 0.2.2-edge.1, "Apache-2.0",
+iggy_connector_postgres_source: 0.2.2-edge.1, "Apache-2.0",
+iggy_connector_quickwit_sink: 0.2.2-edge.1, "Apache-2.0",
+iggy_connector_random_source: 0.2.2-edge.1, "Apache-2.0",
+iggy_connector_sdk: 0.1.3-edge.1, "Apache-2.0",
+iggy_connector_stdout_sink: 0.2.2-edge.1, "Apache-2.0",
iggy_examples: 0.0.6, "Apache-2.0",
ignore: 0.4.25, "MIT OR Unlicense",
impl-more: 0.1.9, "Apache-2.0 OR MIT",
diff --git a/core/connectors/README.md b/core/connectors/README.md
index 32ddc08a1..12211dbac 100644
--- a/core/connectors/README.md
+++ b/core/connectors/README.md
@@ -49,7 +49,7 @@ Sinks are responsible for consuming the messages from the
configured stream(s) a
Please refer to the **[Sink
documentation](https://github.com/apache/iggy/tree/master/core/connectors/sinks)**
for the details about the configuration and the sample implementation.
-When implementing `Sink`, make sure to use the `sink_connector!` macro to
expose the FFI interface and allow the connector runtime to register the sink
with the runtime.
+When implementing `Sink`, make sure to use the `sink_connector!` macro to
expose the FFI interface and allow the connector runtime to register the sink
with the runtime. The macro also exports the connector's version (from
`Cargo.toml`) which is reported in the runtime's `/stats` endpoint.
Each sink should have its own, custom configuration, which is passed along
with the unique plugin ID via expected `new()` method.
## Source
diff --git a/core/connectors/runtime/Cargo.toml
b/core/connectors/runtime/Cargo.toml
index 270471abe..41e7a3808 100644
--- a/core/connectors/runtime/Cargo.toml
+++ b/core/connectors/runtime/Cargo.toml
@@ -17,7 +17,7 @@
[package]
name = "iggy-connectors"
-version = "0.2.2-edge.1"
+version = "0.2.3-edge.1"
description = "Connectors runtime for Iggy message streaming platform"
edition = "2024"
license = "Apache-2.0"
diff --git a/core/connectors/runtime/README.md
b/core/connectors/runtime/README.md
index 6433fb822..10458adc6 100644
--- a/core/connectors/runtime/README.md
+++ b/core/connectors/runtime/README.md
@@ -205,3 +205,54 @@ The runtime exposes Prometheus-compatible metrics via the
`/metrics` endpoint wh
- `iggy_connector_messages_consumed_total`: Messages consumed from Iggy (sink)
- `iggy_connector_messages_processed_total`: Messages processed and sent to
sink plugin
- `iggy_connector_errors_total`: Errors encountered
+
+## Stats
+
+The `/stats` endpoint provides runtime and per-connector statistics in JSON
format. This includes system resource usage, connector counts, and detailed
per-connector metrics with version information.
+
+### Example Response
+
+```json
+{
+ "connectors_runtime_version": "0.2.3-edge.1",
+ "connectors_runtime_version_semver": 203,
+ "process_id": 12345,
+ "cpu_usage": 2.5,
+ "total_cpu_usage": 15.3,
+ "memory_usage": 52428800,
+ "total_memory": 17179869184,
+ "available_memory": 8589934592,
+ "run_time": 3600000000,
+ "start_time": 1706889600000000,
+ "sources_total": 1,
+ "sources_running": 1,
+ "sinks_total": 1,
+ "sinks_running": 1,
+ "connectors": [
+ {
+ "key": "random-source",
+ "name": "Random Source",
+ "connector_type": "source",
+ "version": "0.2.2-edge.1",
+ "version_semver": 202,
+ "status": "running",
+ "enabled": true,
+ "messages_produced": 1000,
+ "messages_sent": 1000,
+ "errors": 0
+ },
+ {
+ "key": "stdout-sink",
+ "name": "Stdout Sink",
+ "connector_type": "sink",
+ "version": "0.2.2-edge.1",
+ "version_semver": 202,
+ "status": "running",
+ "enabled": true,
+ "messages_consumed": 1000,
+ "messages_processed": 1000,
+ "errors": 0
+ }
+ ]
+}
+```
diff --git a/core/connectors/runtime/src/context.rs
b/core/connectors/runtime/src/context.rs
index 20d9906ca..831c76c7a 100644
--- a/core/connectors/runtime/src/context.rs
+++ b/core/connectors/runtime/src/context.rs
@@ -93,6 +93,7 @@ fn map_sinks(
key: sink_plugin.key.to_owned(),
name: sink_plugin.name.to_owned(),
path: sink_plugin.path.to_owned(),
+ version: sink_plugin.version.to_owned(),
enabled: sink_config.enabled,
status,
last_error: sink_plugin
@@ -134,6 +135,7 @@ fn map_sources(
key: source_plugin.key.to_owned(),
name: source_plugin.name.to_owned(),
path: source_plugin.path.to_owned(),
+ version: source_plugin.version.to_owned(),
enabled: source_config.enabled,
status,
last_error: source_plugin
diff --git a/core/connectors/runtime/src/main.rs
b/core/connectors/runtime/src/main.rs
index b71bd5eef..f9b187c83 100644
--- a/core/connectors/runtime/src/main.rs
+++ b/core/connectors/runtime/src/main.rs
@@ -81,6 +81,7 @@ struct SourceApi {
) -> i32,
handle: extern "C" fn(id: u32, callback: SendCallback) -> i32,
close: extern "C" fn(id: u32) -> i32,
+ version: extern "C" fn() -> *const std::ffi::c_char,
}
#[derive(WrapperApi)]
@@ -102,6 +103,7 @@ struct SinkApi {
messages_len: usize,
) -> i32,
close: extern "C" fn(id: u32) -> i32,
+ version: extern "C" fn() -> *const std::ffi::c_char,
}
fn print_ascii_art(text: &str) {
@@ -280,6 +282,7 @@ struct SinkConnectorPlugin {
key: String,
name: String,
path: String,
+ version: String,
config_format: Option<ConfigFormat>,
consumers: Vec<SinkConnectorConsumer>,
error: Option<String>,
@@ -313,6 +316,7 @@ struct SourceConnectorPlugin {
key: String,
name: String,
path: String,
+ version: String,
config_format: Option<ConfigFormat>,
transforms: Vec<Arc<dyn Transform>>,
producer: Option<SourceConnectorProducer>,
diff --git a/core/connectors/runtime/src/manager/sink.rs
b/core/connectors/runtime/src/manager/sink.rs
index 495693716..50d98a29a 100644
--- a/core/connectors/runtime/src/manager/sink.rs
+++ b/core/connectors/runtime/src/manager/sink.rs
@@ -104,6 +104,7 @@ pub struct SinkInfo {
pub key: String,
pub name: String,
pub path: String,
+ pub version: String,
pub enabled: bool,
pub status: ConnectorStatus,
pub last_error: Option<ConnectorError>,
diff --git a/core/connectors/runtime/src/manager/source.rs
b/core/connectors/runtime/src/manager/source.rs
index 051668640..a63c6d1df 100644
--- a/core/connectors/runtime/src/manager/source.rs
+++ b/core/connectors/runtime/src/manager/source.rs
@@ -104,6 +104,7 @@ pub struct SourceInfo {
pub key: String,
pub name: String,
pub path: String,
+ pub version: String,
pub enabled: bool,
pub status: ConnectorStatus,
pub last_error: Option<ConnectorError>,
diff --git a/core/connectors/runtime/src/sink.rs
b/core/connectors/runtime/src/sink.rs
index 0987eb7e5..ccd8b9d98 100644
--- a/core/connectors/runtime/src/sink.rs
+++ b/core/connectors/runtime/src/sink.rs
@@ -65,6 +65,7 @@ pub async fn init(
let init_error: Option<String>;
if let Some(container) = sink_connectors.get_mut(&path) {
info!("Sink container for plugin: {path} is already loaded.",);
+ let version = get_plugin_version(&container.container);
init_error = init_sink(
&container.container,
&config.plugin_config.unwrap_or_default(),
@@ -77,6 +78,7 @@ pub async fn init(
key: key.to_owned(),
name: name.to_owned(),
path: path.to_owned(),
+ version,
config_format: config.plugin_config_format,
consumers: vec![],
error: init_error.clone(),
@@ -86,6 +88,7 @@ pub async fn init(
let container: Container<SinkApi> =
unsafe { Container::load(&path).expect("Failed to load sink
container") };
info!("Sink container for plugin: {path} loaded successfully.",);
+ let version = get_plugin_version(&container);
init_error = init_sink(
&container,
&config.plugin_config.unwrap_or_default(),
@@ -102,6 +105,7 @@ pub async fn init(
key: key.to_owned(),
name: name.to_owned(),
path: path.to_owned(),
+ version,
config_format: config.plugin_config_format,
consumers: vec![],
error: init_error.clone(),
@@ -331,6 +335,15 @@ async fn consume_messages(
Ok(())
}
+fn get_plugin_version(container: &Container<SinkApi>) -> String {
+ unsafe {
+ let version_ptr = (container.version)();
+ std::ffi::CStr::from_ptr(version_ptr)
+ .to_string_lossy()
+ .into_owned()
+ }
+}
+
fn init_sink(
container: &Container<SinkApi>,
plugin_config: &serde_json::Value,
diff --git a/core/connectors/runtime/src/source.rs
b/core/connectors/runtime/src/source.rs
index c4f155b5a..727544f16 100644
--- a/core/connectors/runtime/src/source.rs
+++ b/core/connectors/runtime/src/source.rs
@@ -75,6 +75,7 @@ pub async fn init(
let init_error: Option<String>;
if let Some(container) = source_connectors.get_mut(&path) {
info!("Source container for plugin: {path} is already loaded.",);
+ let version = get_plugin_version(&container.container);
init_error = init_source(
&container.container,
&config.plugin_config.unwrap_or_default(),
@@ -88,6 +89,7 @@ pub async fn init(
key: key.to_owned(),
name: name.to_owned(),
path: path.to_owned(),
+ version,
config_format: config.plugin_config_format,
producer: None,
transforms: vec![],
@@ -99,6 +101,7 @@ pub async fn init(
let container: Container<SourceApi> =
unsafe { Container::load(&path).expect("Failed to load source
container") };
info!("Source container for plugin: {path} loaded successfully.",);
+ let version = get_plugin_version(&container);
init_error = init_source(
&container,
&config.plugin_config.unwrap_or_default(),
@@ -116,6 +119,7 @@ pub async fn init(
key: key.to_owned(),
name: name.to_owned(),
path: path.to_owned(),
+ version,
config_format: config.plugin_config_format,
producer: None,
transforms: vec![],
@@ -187,6 +191,15 @@ pub async fn init(
Ok(source_connectors)
}
+fn get_plugin_version(container: &Container<SourceApi>) -> String {
+ unsafe {
+ let version_ptr = (container.version)();
+ std::ffi::CStr::from_ptr(version_ptr)
+ .to_string_lossy()
+ .into_owned()
+ }
+}
+
fn init_source(
container: &Container<SourceApi>,
plugin_config: &serde_json::Value,
diff --git a/core/connectors/runtime/src/stats.rs
b/core/connectors/runtime/src/stats.rs
index 7a3e7717b..3cf0664e1 100644
--- a/core/connectors/runtime/src/stats.rs
+++ b/core/connectors/runtime/src/stats.rs
@@ -22,6 +22,7 @@ use crate::manager::status::ConnectorStatus;
use crate::metrics::ConnectorType;
use iggy_common::{IggyTimestamp, SemanticVersion};
use serde::Serialize;
+use std::str::FromStr;
use std::sync::Arc;
use sysinfo::System;
@@ -52,6 +53,9 @@ pub struct ConnectorStats {
pub key: String,
pub name: String,
pub connector_type: String,
+ pub version: String,
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub version_semver: Option<u32>,
pub status: ConnectorStatus,
pub enabled: bool,
#[serde(skip_serializing_if = "Option::is_none")]
@@ -95,10 +99,15 @@ pub async fn get_runtime_stats(context:
&Arc<RuntimeContext>) -> ConnectorRuntim
let mut connectors = Vec::with_capacity(sources.len() + sinks.len());
for source in &sources {
+ let version_semver = SemanticVersion::from_str(&source.version)
+ .ok()
+ .and_then(|v| v.get_numeric_version().ok());
connectors.push(ConnectorStats {
key: source.key.clone(),
name: source.name.clone(),
connector_type: "source".to_owned(),
+ version: source.version.clone(),
+ version_semver,
status: source.status,
enabled: source.enabled,
messages_produced:
Some(context.metrics.get_messages_produced(&source.key)),
@@ -111,10 +120,15 @@ pub async fn get_runtime_stats(context:
&Arc<RuntimeContext>) -> ConnectorRuntim
});
}
for sink in &sinks {
+ let version_semver = SemanticVersion::from_str(&sink.version)
+ .ok()
+ .and_then(|v| v.get_numeric_version().ok());
connectors.push(ConnectorStats {
key: sink.key.clone(),
name: sink.name.clone(),
connector_type: "sink".to_owned(),
+ version: sink.version.clone(),
+ version_semver,
status: sink.status,
enabled: sink.enabled,
messages_produced: None,
diff --git a/core/connectors/sdk/Cargo.toml b/core/connectors/sdk/Cargo.toml
index 4d03859c4..b42909386 100644
--- a/core/connectors/sdk/Cargo.toml
+++ b/core/connectors/sdk/Cargo.toml
@@ -17,7 +17,7 @@
[package]
name = "iggy_connector_sdk"
-version = "0.1.2-edge.1"
+version = "0.1.3-edge.1"
description = "Iggy is the persistent message streaming platform written in
Rust, supporting QUIC, TCP and HTTP transport protocols, capable of processing
millions of messages per second."
edition = "2024"
license = "Apache-2.0"
diff --git a/core/connectors/sdk/README.md b/core/connectors/sdk/README.md
index 1da28597c..0ddb84f66 100644
--- a/core/connectors/sdk/README.md
+++ b/core/connectors/sdk/README.md
@@ -1,6 +1,8 @@
# Apache Iggy Connectors - SDK
-SDK provides the commonly used structs and traits such as `Sink` and `Source`,
along with the `sink_connector` and `source_connector` macros to be used when
developing connectors.
+SDK provides the commonly used structs and traits such as `Sink` and `Source`,
along with the `sink_connector!` and `source_connector!` macros to be used when
developing connectors.
+
+The macros automatically export the connector's version (from
`CARGO_PKG_VERSION`) via FFI, allowing the runtime to report per-connector
version information in the `/stats` endpoint.
Moreover, it contains both, the `decoders` and `encoders` modules,
implementing either `StreamDecoder` or `StreamEncoder` traits, which are used
when consuming or producing data from/to Iggy streams.
diff --git a/core/connectors/sdk/src/sink.rs b/core/connectors/sdk/src/sink.rs
index 457618e75..4176e5c65 100644
--- a/core/connectors/sdk/src/sink.rs
+++ b/core/connectors/sdk/src/sink.rs
@@ -277,5 +277,12 @@ macro_rules! sink_connector {
};
instance.1.close()
}
+
+ #[cfg(not(test))]
+ #[unsafe(no_mangle)]
+ extern "C" fn version() -> *const std::ffi::c_char {
+ static VERSION: &str = concat!(env!("CARGO_PKG_VERSION"), "\0");
+ VERSION.as_ptr() as *const std::ffi::c_char
+ }
};
}
diff --git a/core/connectors/sdk/src/source.rs
b/core/connectors/sdk/src/source.rs
index 16b45aee7..3531c4277 100644
--- a/core/connectors/sdk/src/source.rs
+++ b/core/connectors/sdk/src/source.rs
@@ -263,5 +263,12 @@ macro_rules! source_connector {
};
instance.1.close()
}
+
+ #[cfg(not(test))]
+ #[unsafe(no_mangle)]
+ extern "C" fn version() -> *const std::ffi::c_char {
+ static VERSION: &str = concat!(env!("CARGO_PKG_VERSION"), "\0");
+ VERSION.as_ptr() as *const std::ffi::c_char
+ }
};
}
diff --git a/core/connectors/sinks/elasticsearch_sink/Cargo.toml
b/core/connectors/sinks/elasticsearch_sink/Cargo.toml
index 7ede4457a..6201be03d 100644
--- a/core/connectors/sinks/elasticsearch_sink/Cargo.toml
+++ b/core/connectors/sinks/elasticsearch_sink/Cargo.toml
@@ -17,7 +17,7 @@
[package]
name = "iggy_connector_elasticsearch_sink"
-version = "0.2.1-edge.1"
+version = "0.2.2-edge.1"
description = "Iggy Elasticsearch sink connector"
edition = "2024"
license = "Apache-2.0"
diff --git a/core/connectors/sinks/iceberg_sink/Cargo.toml
b/core/connectors/sinks/iceberg_sink/Cargo.toml
index 4b63979de..d175ac70d 100644
--- a/core/connectors/sinks/iceberg_sink/Cargo.toml
+++ b/core/connectors/sinks/iceberg_sink/Cargo.toml
@@ -17,7 +17,7 @@
[package]
name = "iggy_connector_iceberg_sink"
-version = "0.2.1-edge.1"
+version = "0.2.2-edge.1"
edition = "2024"
license = "Apache-2.0"
keywords = ["iggy", "messaging", "streaming"]
diff --git a/core/connectors/sinks/postgres_sink/Cargo.toml
b/core/connectors/sinks/postgres_sink/Cargo.toml
index bfc5ead2c..a24a68cf3 100644
--- a/core/connectors/sinks/postgres_sink/Cargo.toml
+++ b/core/connectors/sinks/postgres_sink/Cargo.toml
@@ -17,7 +17,7 @@
[package]
name = "iggy_connector_postgres_sink"
-version = "0.2.1-edge.1"
+version = "0.2.2-edge.1"
description = "Iggy PostgreSQL sink connector for storing stream messages into
PostgreSQL database"
edition = "2024"
license = "Apache-2.0"
diff --git a/core/connectors/sinks/quickwit_sink/Cargo.toml
b/core/connectors/sinks/quickwit_sink/Cargo.toml
index 51fa78f10..360d9f919 100644
--- a/core/connectors/sinks/quickwit_sink/Cargo.toml
+++ b/core/connectors/sinks/quickwit_sink/Cargo.toml
@@ -17,7 +17,7 @@
[package]
name = "iggy_connector_quickwit_sink"
-version = "0.2.1-edge.1"
+version = "0.2.2-edge.1"
description = "Iggy is the persistent message streaming platform written in
Rust, supporting QUIC, TCP and HTTP transport protocols, capable of processing
millions of messages per second."
edition = "2024"
license = "Apache-2.0"
diff --git a/core/connectors/sinks/stdout_sink/Cargo.toml
b/core/connectors/sinks/stdout_sink/Cargo.toml
index bdceb6297..56a36028b 100644
--- a/core/connectors/sinks/stdout_sink/Cargo.toml
+++ b/core/connectors/sinks/stdout_sink/Cargo.toml
@@ -17,7 +17,7 @@
[package]
name = "iggy_connector_stdout_sink"
-version = "0.2.1-edge.1"
+version = "0.2.2-edge.1"
description = "Iggy is the persistent message streaming platform written in
Rust, supporting QUIC, TCP and HTTP transport protocols, capable of processing
millions of messages per second."
edition = "2024"
license = "Apache-2.0"
diff --git a/core/connectors/sources/elasticsearch_source/Cargo.toml
b/core/connectors/sources/elasticsearch_source/Cargo.toml
index 206a9ee67..6b19b6bc4 100644
--- a/core/connectors/sources/elasticsearch_source/Cargo.toml
+++ b/core/connectors/sources/elasticsearch_source/Cargo.toml
@@ -17,7 +17,7 @@
[package]
name = "iggy_connector_elasticsearch_source"
-version = "0.2.1-edge.1"
+version = "0.2.2-edge.1"
description = "Iggy Elasticsearch source connector"
edition = "2024"
license = "Apache-2.0"
diff --git a/core/connectors/sources/postgres_source/Cargo.toml
b/core/connectors/sources/postgres_source/Cargo.toml
index 4c5ed6bcc..0ce9b4968 100644
--- a/core/connectors/sources/postgres_source/Cargo.toml
+++ b/core/connectors/sources/postgres_source/Cargo.toml
@@ -17,7 +17,7 @@
[package]
name = "iggy_connector_postgres_source"
-version = "0.2.1-edge.1"
+version = "0.2.2-edge.1"
description = "Iggy PostgreSQL source connector supporting CDC and table
polling for message streaming platform"
edition = "2024"
license = "Apache-2.0"
diff --git a/core/connectors/sources/random_source/Cargo.toml
b/core/connectors/sources/random_source/Cargo.toml
index 11b4d4a6e..092c31cbb 100644
--- a/core/connectors/sources/random_source/Cargo.toml
+++ b/core/connectors/sources/random_source/Cargo.toml
@@ -17,7 +17,7 @@
[package]
name = "iggy_connector_random_source"
-version = "0.2.1-edge.1"
+version = "0.2.2-edge.1"
description = "Iggy is the persistent message streaming platform written in
Rust, supporting QUIC, TCP and HTTP transport protocols, capable of processing
millions of messages per second."
edition = "2024"
license = "Apache-2.0"