This is an automated email from the ASF dual-hosted git repository. maciej pushed a commit to branch connectors-versions in repository https://gitbox.apache.org/repos/asf/iggy.git
commit d8ab373c105db9db0fd5b2674bbd683f008efac2 Author: Maciej Modzelewski <[email protected]> AuthorDate: Mon Feb 2 16:19:10 2026 +0100 feat(connectors): add connector version to stats endpoint --- 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"
