Skip to content
Merged
Show file tree
Hide file tree
Changes from 12 commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
338b5a6
feat(server,sdk): allow arbitrary (non-string) header key kind
spetz Jan 29, 2026
62e5771
Add remaining SDKs support
spetz Jan 29, 2026
fd7f4f5
fix(java): spotless formatting
spetz Jan 29, 2026
a0d5122
Fix C# serialization
spetz Jan 29, 2026
b6d5904
Refactor user headers to be idimomatic
spetz Jan 29, 2026
67c2d6a
Fix C# tests, apply spotless to Java examples
spetz Jan 29, 2026
4406b70
Merge branch 'master' into non_string_header_key
spetz Jan 29, 2026
623666e
Fix user headers json
spetz Jan 29, 2026
29a9201
Fix java user headers serializer
spetz Jan 29, 2026
16a55d9
Fix optional user_headers in Message JSON deserialization
spetz Jan 29, 2026
fe92af9
Always include user_headers in JSON response (empty array when none)
spetz Jan 29, 2026
4113d36
Fix tests
spetz Jan 29, 2026
bc5e224
Fix Java test
spetz Jan 30, 2026
b1cc06d
Improve user headers mapping safety
spetz Jan 30, 2026
df3348f
merge
spetz Jan 30, 2026
7e10a96
Add boundary checks for node, java, cli, make key/value private
spetz Jan 30, 2026
cd1b82f
Merge branch 'master' into non_string_header_key
spetz Jan 30, 2026
c1731c7
Merge branch 'master' into non_string_header_key
spetz Jan 30, 2026
8206944
Improve Node and Go header validation
spetz Jan 30, 2026
032ba35
Merge branch 'master' into non_string_header_key
spetz Jan 30, 2026
3ee6cdf
Fix c# unused components
spetz Jan 30, 2026
0b1207e
Merge branch 'master' into non_string_header_key
spetz Jan 30, 2026
73780de
Merge branch 'master' into non_string_header_key
mmodzelewski Jan 30, 2026
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
36 changes: 18 additions & 18 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -140,10 +140,10 @@ humantime = "2.3.0"
hwlocality = "1.0.0-alpha.11"
iceberg = "0.8.0"
iceberg-catalog-rest = "0.8.0"
iggy = { path = "core/sdk", version = "0.8.1-edge.6" }
iggy_binary_protocol = { path = "core/binary_protocol", version = "0.8.1-edge.3" }
iggy_common = { path = "core/common", version = "0.8.1-edge.2" }
iggy_connector_sdk = { path = "core/connectors/sdk", version = "0.1.1-edge.3" }
iggy = { path = "core/sdk", version = "0.8.2-edge.1" }
iggy_binary_protocol = { path = "core/binary_protocol", version = "0.8.2-edge.1" }
iggy_common = { path = "core/common", version = "0.8.2-edge.1" }
iggy_connector_sdk = { path = "core/connectors/sdk", version = "0.1.2-edge.1" }
integration = { path = "core/integration" }
keyring = { version = "3.6.3", features = ["sync-secret-service", "vendored"] }
lazy_static = "1.5.0"
Expand Down
36 changes: 18 additions & 18 deletions DEPENDENCIES.md
Original file line number Diff line number Diff line change
Expand Up @@ -385,24 +385,24 @@ icu_provider: 2.1.1, "Unicode-3.0",
ident_case: 1.0.1, "Apache-2.0 OR MIT",
idna: 1.1.0, "Apache-2.0 OR MIT",
idna_adapter: 1.2.1, "Apache-2.0 OR MIT",
iggy: 0.8.1-edge.7, "Apache-2.0",
iggy-bench: 0.3.1-edge.2, "Apache-2.0",
iggy: 0.8.2-edge.1, "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.1-edge.1, "Apache-2.0",
iggy-connectors: 0.2.1-edge.6, "Apache-2.0",
iggy-mcp: 0.2.1-edge.5, "Apache-2.0",
iggy_binary_protocol: 0.8.1-edge.3, "Apache-2.0",
iggy_common: 0.8.1-edge.2, "Apache-2.0",
iggy_connector_elasticsearch_sink: 0.2.0-edge.1, "Apache-2.0",
iggy_connector_elasticsearch_source: 0.2.0-edge.1, "Apache-2.0",
iggy_connector_iceberg_sink: 0.2.0-edge.1, "Apache-2.0",
iggy_connector_postgres_sink: 0.2.0-edge.1, "Apache-2.0",
iggy_connector_postgres_source: 0.2.0-edge.1, "Apache-2.0",
iggy_connector_quickwit_sink: 0.2.0-edge.1, "Apache-2.0",
iggy_connector_random_source: 0.2.0-edge.1, "Apache-2.0",
iggy_connector_sdk: 0.1.1-edge.3, "Apache-2.0",
iggy_connector_stdout_sink: 0.2.0-edge.1, "Apache-2.0",
iggy_examples: 0.0.5, "Apache-2.0",
iggy-cli: 0.10.2-edge.1, "Apache-2.0",
iggy-connectors: 0.2.2-edge.1, "Apache-2.0",
iggy-mcp: 0.2.2-edge.1, "Apache-2.0",
iggy_binary_protocol: 0.8.2-edge.1, "Apache-2.0",
iggy_common: 0.8.2-edge.1, "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_examples: 0.0.6, "Apache-2.0",
ignore: 0.4.25, "MIT OR Unlicense",
impl-more: 0.1.9, "Apache-2.0 OR MIT",
implicit-clone: 0.6.0, "Apache-2.0 OR MIT",
Expand Down Expand Up @@ -718,7 +718,7 @@ serde_with_macros: 3.16.1, "Apache-2.0 OR MIT",
serde_yaml_ng: 0.10.0, "MIT",
serial_test: 3.3.1, "MIT",
serial_test_derive: 3.3.1, "MIT",
server: 0.6.1-edge.6, "Apache-2.0",
server: 0.6.2-edge.1, "Apache-2.0",
sha1: 0.10.6, "Apache-2.0 OR MIT",
sha2: 0.10.9, "Apache-2.0 OR MIT",
sha3: 0.10.8, "Apache-2.0 OR MIT",
Expand Down
2 changes: 1 addition & 1 deletion core/ai/mcp/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

[package]
name = "iggy-mcp"
version = "0.2.1-edge.5"
version = "0.2.2-edge.1"
description = "MCP Server for Iggy message streaming platform"
edition = "2024"
license = "Apache-2.0"
Expand Down
2 changes: 1 addition & 1 deletion core/bench/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

[package]
name = "iggy-bench"
version = "0.3.1-edge.2"
version = "0.3.2-edge.1"
edition = "2024"
license = "Apache-2.0"
repository = "https://github.com/apache/iggy"
Expand Down
2 changes: 1 addition & 1 deletion core/binary_protocol/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

[package]
name = "iggy_binary_protocol"
version = "0.8.1-edge.3"
version = "0.8.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"
Expand Down
4 changes: 2 additions & 2 deletions core/binary_protocol/src/cli/binary_message/poll_messages.rs
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ impl PollMessagesCmd {
let message_headers = header_key_set
.iter()
.map(|(key, kind)| {
Cell::new(format!("Header: {}\n{}", key.as_str(), kind))
Cell::new(format!("Header: {}\n{}", key.to_string_value(), kind))
.set_alignment(CellAlignment::Center)
})
.collect::<Vec<_>>();
Expand Down Expand Up @@ -147,7 +147,7 @@ impl PollMessagesCmd {
.map(|h| {
h.get(key)
.filter(|v| v.kind == *kind)
.map(|v| v.value_only_to_string())
.map(|v| v.to_string_value())
.unwrap_or_default()
})
.unwrap_or_default()
Expand Down
2 changes: 1 addition & 1 deletion core/cli/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

[package]
name = "iggy-cli"
version = "0.10.1-edge.1"
version = "0.10.2-edge.1"
edition = "2024"
authors = ["bartosz.ciesla@gmail.com"]
repository = "https://github.com/apache/iggy"
Expand Down
61 changes: 60 additions & 1 deletion core/cli/src/args/message.rs
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,66 @@ fn parse_key_val(s: &str) -> Result<(HeaderKey, HeaderValue), IggyError> {
}

let key = HeaderKey::from_str(parts[0])?;
let value = HeaderValue::from_kind_str_and_value_str(parts[1], parts[2])?;
let kind = HeaderKind::from_str(parts[1])?;
let value_str = parts[2];

let value = match kind {
HeaderKind::Raw => HeaderValue::try_from(value_str.as_bytes())?,
HeaderKind::String => HeaderValue::try_from(value_str)?,
HeaderKind::Bool => value_str
.parse::<bool>()
.map_err(|_| IggyError::InvalidBooleanValue)?
.into(),
HeaderKind::Int8 => value_str
.parse::<i8>()
.map_err(|_| IggyError::InvalidNumberValue)?
.into(),
HeaderKind::Int16 => value_str
.parse::<i16>()
.map_err(|_| IggyError::InvalidNumberValue)?
.into(),
HeaderKind::Int32 => value_str
.parse::<i32>()
.map_err(|_| IggyError::InvalidNumberValue)?
.into(),
HeaderKind::Int64 => value_str
.parse::<i64>()
.map_err(|_| IggyError::InvalidNumberValue)?
.into(),
HeaderKind::Int128 => value_str
.parse::<i128>()
.map_err(|_| IggyError::InvalidNumberValue)?
.into(),
HeaderKind::Uint8 => value_str
.parse::<u8>()
.map_err(|_| IggyError::InvalidNumberValue)?
.into(),
HeaderKind::Uint16 => value_str
.parse::<u16>()
.map_err(|_| IggyError::InvalidNumberValue)?
.into(),
HeaderKind::Uint32 => value_str
.parse::<u32>()
.map_err(|_| IggyError::InvalidNumberValue)?
.into(),
HeaderKind::Uint64 => value_str
.parse::<u64>()
.map_err(|_| IggyError::InvalidNumberValue)?
.into(),
HeaderKind::Uint128 => value_str
.parse::<u128>()
.map_err(|_| IggyError::InvalidNumberValue)?
.into(),
HeaderKind::Float32 => value_str
.parse::<f32>()
.map_err(|_| IggyError::InvalidNumberValue)?
.into(),
HeaderKind::Float64 => value_str
.parse::<f64>()
.map_err(|_| IggyError::InvalidNumberValue)?
.into(),
};

Ok((key, value))
}

Expand Down
2 changes: 1 addition & 1 deletion core/common/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
# under the License.
[package]
name = "iggy_common"
version = "0.8.1-edge.2"
version = "0.8.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"
Expand Down
Loading
Loading