This is an automated email from the ASF dual-hosted git repository. numinnex pushed a commit to branch rfc_tiered_storage_w in repository https://gitbox.apache.org/repos/asf/iggy.git
commit a07a0dbe6aa489cf894020b4f7e776339904db7e Merge: 2aac350c1 7a08127a8 Author: Grzegorz Koszyk <[email protected]> AuthorDate: Mon Oct 12 19:11:23 2026 +0200 Merge branch 'master' into rfc_tiered_storage_w .claude/skills/connector-sdk/SKILL.md | 2 +- .config/nextest.toml | 9 + .../actions/python-maturin/pre-merge/action.yml | 2 +- .github/workflows/_build_python_wheels.yml | 90 +- .github/workflows/_test_examples.yml | 2 +- .github/workflows/coverage-baseline.yml | 2 +- CONTRIBUTING.md | 13 + Cargo.lock | 145 + Cargo.toml | 13 + bdd/go/tests/tcp_test/consumers_steps.go | 17 +- bdd/go/tests/tcp_test/messages_feature_send.go | 4 +- bdd/python/.python-version | 2 +- bdd/python/pylock.toml | 111 +- bdd/python/pyproject.toml | 2 +- bdd/python/uv.lock | 51 +- core/bench/src/actors/consumer/client/low_level.rs | 5 +- core/binary_protocol/Cargo.toml | 1 + core/binary_protocol/src/codes.rs | 2 + core/binary_protocol/src/consensus/header.rs | 107 +- core/binary_protocol/src/consensus/operation.rs | 32 +- core/binary_protocol/src/consensus/request.rs | 4 +- core/binary_protocol/src/dispatch.rs | 8 +- core/binary_protocol/src/lib.rs | 1 + core/binary_protocol/src/primitives/mod.rs | 1 + .../src/primitives/partition_history.rs | 123 + .../src/requests/consumer_offsets/mod.rs | 19 + .../src/requests/messages/get_send_context.rs | 90 + core/binary_protocol/src/requests/messages/mod.rs | 2 + .../partitions/install_consumer_group_owner.rs | 138 + .../binary_protocol/src/requests/partitions/mod.rs | 6 + .../partitions/retire_consumer_group_owners.rs | 151 + .../partitions/transition_partition_history.rs | 107 + .../src/requests/system/finalize_session.rs | 96 + core/binary_protocol/src/requests/system/mod.rs | 2 + .../src/responses/messages/poll_messages.rs | 36 +- .../src/responses/messages/poll_routing.rs | 14 +- .../src/responses/topics/get_topic.rs | 18 +- core/cli/src/args/user.rs | 20 +- core/cli/src/credentials.rs | 42 +- core/cli/src/error.rs | 6 - core/cli/src/main.rs | 27 +- core/common/Cargo.toml | 2 +- core/common/src/consumer_group_client_state.rs | 267 +- core/common/src/error/iggy_error.rs | 16 + .../http/consumer_offsets/store_consumer_offset.rs | 4 +- core/common/src/http/messages/send_messages.rs | 95 +- .../src/traits/binary_impls/consumer_offsets.rs | 30 +- core/common/src/traits/binary_impls/messages.rs | 135 +- core/common/src/traits/binary_impls/mod.rs | 1 + core/common/src/traits/binary_impls/partitions.rs | 2 + core/common/src/traits/binary_impls/streams.rs | 1 + core/common/src/traits/binary_impls/topics.rs | 6 +- core/common/src/traits/binary_transport.rs | 361 +- core/common/src/traits/client.rs | 9 +- core/common/src/traits/consumer_offset_client.rs | 23 +- core/common/src/traits/message_client.rs | 11 + core/common/src/traits/partition_client.rs | 7 + core/common/src/types/args/mod.rs | 60 +- .../src/types/consumer/consumer_offset_info.rs | 12 + core/common/src/types/message/polled_messages.rs | 45 +- core/common/src/types/message/polling_strategy.rs | 21 +- core/common/src/types/options/mod.rs | 129 +- .../partition_resize_policy.rs} | 37 +- core/common/src/types/partition/mod.rs | 6 + core/common/src/wire_conversions.rs | 1 + core/configs/src/common/validators.rs | 42 +- core/configs/src/configs_impl/file_provider.rs | 12 + core/configs/src/server_config/cluster.rs | 3 +- core/configs/src/server_config/server.rs | 2 +- .../example_config/connectors/bigquery_sink.toml | 63 + core/connectors/runtime/src/source.rs | 4 +- core/connectors/sdk/README.md | 2 + core/connectors/sdk/src/convert.rs | 287 +- core/connectors/sdk/src/decoders/avro.rs | 35 +- core/connectors/sdk/src/decoders/flatbuffer.rs | 35 +- core/connectors/sdk/src/decoders/proto.rs | 64 +- core/connectors/sdk/src/encoders/avro.rs | 54 +- core/connectors/sdk/src/encoders/flatbuffer.rs | 48 +- core/connectors/sdk/src/encoders/proto.rs | 91 +- core/connectors/sdk/src/retry.rs | 195 +- core/connectors/sdk/src/transforms/avro_convert.rs | 36 +- .../connectors/sdk/src/transforms/proto_convert.rs | 31 +- .../connectors/sdk/tests/flatbuffer_integration.rs | 16 + core/connectors/sinks/README.md | 1 + .../sinks/bigquery_sink}/Cargo.toml | 55 +- core/connectors/sinks/bigquery_sink/README.md | 263 ++ core/connectors/sinks/bigquery_sink/config.toml | 63 + core/connectors/sinks/bigquery_sink/src/client.rs | 445 ++ core/connectors/sinks/bigquery_sink/src/encode.rs | 2129 +++++++++ core/connectors/sinks/bigquery_sink/src/error.rs | 210 + core/connectors/sinks/bigquery_sink/src/lib.rs | 534 +++ core/connectors/sinks/bigquery_sink/src/schema.rs | 866 ++++ core/connectors/sinks/bigquery_sink/src/sink.rs | 407 ++ .../sinks/bigquery_sink/tests/bigquery_sink.rs | 566 +++ .../sinks/bigquery_sink/tests/common/mod.rs | 393 ++ core/connectors/sinks/influxdb_sink/README.md | 5 +- core/connectors/sinks/quickwit_sink/README.md | 4 +- core/connectors/sources/influxdb_source/README.md | 4 +- core/consensus/src/impls.rs | 71 +- core/consensus/src/lib.rs | 5 - core/consensus/src/observability.rs | 4 + core/integration/src/harness/config/server.rs | 10 + core/integration/src/harness/context.rs | 16 +- core/integration/src/harness/disk.rs | 177 +- core/integration/src/harness/handle/server.rs | 223 +- core/integration/src/harness/helpers.rs | 59 +- core/integration/src/harness/mod.rs | 1 + core/integration/tests/cli/common/mod.rs | 41 + core/integration/tests/cli/general/mod.rs | 1 + .../tests/cli/general/test_unknown_transport.rs | 65 + .../test_pat_create_command.rs | 17 +- .../test_pat_delete_command.rs | 15 +- core/integration/tests/cli/system/mod.rs | 2 + .../tests/cli/system/test_cli_session_scenario.rs | 42 +- .../tests/cli/system/test_me_command.rs | 36 +- .../tests/cli/system/test_session_status_cmd.rs | 65 + .../cli/user/test_user_permissions_command.rs | 59 +- core/integration/tests/cluster/chaos_monkey.rs | 2614 +++++++++++ .../tests/cluster/chaos_monkey/report.rs | 151 + .../tests/cluster/client_table_adversarial.rs | 13 +- .../tests/cluster/client_table_restart.rs | 40 +- .../tests/cluster/consumer_offset_quota.rs | 11 +- .../tests/cluster/fast_primary_rejoin.rs | 2 + core/integration/tests/cluster/mod.rs | 1 + core/integration/tests/cluster/partition_dedup.rs | 209 +- .../tests/cluster/partition_primary_routing.rs | 93 +- .../tests/connectors/fixtures/influxdb/sink_v3.rs | 11 +- .../tests/data_integrity/storage_compat.rs | 26 +- .../verify_consumer_group_partition_assignment.rs | 172 +- core/integration/tests/mod.rs | 27 +- core/integration/tests/sdk/client_lifecycle.rs | 28 +- .../tests/sdk/consumer_group_membership.rs | 145 +- core/integration/tests/sdk/consumer_offset.rs | 2 - core/integration/tests/sdk/mod.rs | 1 + core/integration/tests/sdk/options.rs | 103 + core/integration/tests/sdk/stream_builder.rs | 70 + core/integration/tests/server/cg.rs | 12 +- .../tests/server/consumer_offset_quota_vsr.rs | 1 + core/integration/tests/server/http_rbac.rs | 1 + core/integration/tests/server/http_vsr.rs | 4 + core/integration/tests/server/raw_tcp.rs | 18 + .../server/scenarios/authentication_scenario.rs | 14 +- .../scenarios/invalid_consumer_offset_scenario.rs | 15 +- .../server/scenarios/log_rotation_scenario.rs | 5 + core/integration/tests/server/scenarios/mod.rs | 11 + .../tests/server/scenarios/permissions_scenario.rs | 5 + .../stale_client_consumer_group_scenario.rs | 34 +- .../tests/server/scenarios/system_scenario.rs | 10 +- core/metadata/src/impls/metadata.rs | 405 +- core/metadata/src/impls/recovery.rs | 104 +- core/metadata/src/stm/authz.rs | 17 +- core/metadata/src/stm/consumer_group.rs | 1313 ++++-- core/metadata/src/stm/lifecycle.rs | 1671 +++++++ core/metadata/src/stm/mod.rs | 40 +- core/metadata/src/stm/result.rs | 34 +- core/metadata/src/stm/snapshot.rs | 50 +- core/metadata/src/stm/stream.rs | 560 ++- core/metadata/src/stm/user.rs | 4 +- core/partitions/src/iggy_partition.rs | 4549 ++++++++++++++++++-- core/partitions/src/iggy_partitions.rs | 17 +- core/partitions/src/journal.rs | 199 +- core/partitions/src/lib.rs | 5 + core/partitions/src/poll_plan.rs | 10 + core/partitions/src/state_transfer.rs | 454 +- core/partitions/src/types.rs | 8 +- core/partitions/tests/consumer_offset_history.rs | 478 ++ core/sdk/src/client_wrappers/binary_client.rs | 27 +- .../binary_consumer_offset_client.rs | 38 +- core/sdk/src/clients/binary_consumer_offset.rs | 16 +- .../src/clients/binary_personal_access_tokens.rs | 4 +- core/sdk/src/clients/binary_users.rs | 4 +- core/sdk/src/clients/client.rs | 96 +- core/sdk/src/clients/consumer.rs | 972 ++++- core/sdk/src/clients/producer.rs | 121 +- core/sdk/src/consumer_ext/consumer_message_ext.rs | 7 +- core/sdk/src/http/consumer_offsets.rs | 41 +- core/sdk/src/http/http_client.rs | 350 +- core/sdk/src/http/messages.rs | 458 +- core/sdk/src/http/mod.rs | 2 + core/sdk/src/http/partitions.rs | 2 + core/sdk/src/http/scripted_server.rs | 232 + core/sdk/src/http/streams.rs | 1 + core/sdk/src/http/topics.rs | 45 +- core/sdk/src/poll_routing.rs | 411 +- core/sdk/src/prelude.rs | 32 +- core/sdk/src/quic/quic_client.rs | 359 +- .../src/stream_builder/build/build_stream_topic.rs | 42 +- .../stream_builder/config/config_iggy_consumer.rs | 58 +- .../stream_builder/config/config_iggy_producer.rs | 57 +- .../stream_builder/config/config_iggy_stream.rs | 32 +- core/sdk/src/tcp/tcp_client.rs | 562 ++- core/sdk/src/vsr.rs | 190 +- core/sdk/src/websocket/websocket_client.rs | 310 +- core/server/README.md | 10 +- core/server/config.toml | 9 +- core/server/src/boot/mod.rs | 33 +- core/server/src/boot/recovery.rs | 8 +- core/server/src/consumer_group.rs | 760 +--- core/server/src/consumer_group/liveness.rs | 39 +- core/server/src/dispatch/authz.rs | 7 +- core/server/src/dispatch/failure.rs | 5 +- core/server/src/dispatch/mod.rs | 175 +- core/server/src/dispatch/partition.rs | 310 +- core/server/src/dispatch/reads.rs | 97 +- core/server/src/dispatch/submit.rs | 24 +- core/server/src/http/handlers.rs | 113 +- core/server/src/http/submit.rs | 60 +- core/server/src/http/wire.rs | 8 + core/server/src/lib.rs | 3 + core/server/src/partition_helpers.rs | 5 +- core/server/src/partition_reconciler.rs | 1152 ++++- core/server/src/reply_frame.rs | 82 +- core/server/src/responses.rs | 32 +- core/server/src/server_error.rs | 2 +- core/server/src/sysinfo_printer.rs | 12 +- core/server/src/sysinfo_probe.rs | 25 +- core/server_common/src/consensus_message.rs | 11 +- core/shard/src/lib.rs | 196 +- core/shard/src/partition_io.rs | 191 +- core/shard/src/poll.rs | 101 +- core/shard/src/poll/completion.rs | 6 +- core/shard/src/poll/completion_tests.rs | 623 ++- core/shard/src/poll/test_support.rs | 98 +- core/shard/src/poll/timeout_tests.rs | 49 +- core/shard/src/router.rs | 17 +- core/simulator/src/client.rs | 33 +- core/simulator/src/lib.rs | 492 ++- core/simulator/src/replica.rs | 33 +- core/simulator/src/storage/bookmark_recovery.rs | 63 +- core/simulator/src/workload/mod.rs | 69 +- .../src/workload/ops/create_consumer_group.rs | 14 +- .../src/workload/ops/create_partitions.rs | 1 + .../src/workload/ops/delete_partitions.rs | 1 + core/simulator/src/workload/ops/update_topic.rs | 2 +- core/simulator/src/workload/oracle.rs | 38 +- .../apache/iggy/examples/ConsumerOffsetTest.java | 11 +- examples/python/.python-version | 2 +- examples/python/README.md | 2 +- examples/python/message-headers/common.py | 4 +- examples/python/pylock.toml | 66 +- examples/python/pyproject.toml | 2 +- examples/python/uv.lock | 2 +- examples/rust/src/shared/system.rs | 10 +- .../rust/src/stream-builder/stream-basic/main.rs | 3 +- .../stream-builder/stream-consumer-config/main.rs | 6 +- .../stream-builder/stream-producer-config/main.rs | 6 +- foreign/cpp/include/iggy.hpp | 115 +- foreign/cpp/src/client.cpp | 12 + foreign/cpp/src/client.rs | 180 +- foreign/cpp/src/lib.rs | 53 + foreign/cpp/src/type_conversion.rs | 81 +- foreign/cpp/src/type_conversions.cpp | 14 +- foreign/cpp/tests/e2e/consumer_group.cpp | 12 + foreign/cpp/tests/e2e/message.cpp | 2 + foreign/cpp/tests/e2e/test_helpers.hpp | 41 + foreign/cpp/tests/unit/unit_tests.cpp | 9 + .../ConsumerGroupTests.cs | 6 +- .../Helpers/ConsumerGroupAssignment.cs | 74 + .../Iggy_SDK.Tests.Integration/OffsetTests.cs | 9 + .../Iggy_SDK.Tests.Integration/OptionsTests.cs | 1 + .../Vsr/VsrConsumerGroupTests.cs | 27 +- .../Iggy_SDK/Consumers/IggyConsumer.Rented.cs | 23 +- foreign/csharp/Iggy_SDK/Consumers/IggyConsumer.cs | 125 +- .../csharp/Iggy_SDK/Consumers/IggyConsumerOfT.cs | 3 +- .../csharp/Iggy_SDK/Consumers/ReceivedMessage.cs | 14 + .../Iggy_SDK/Consumers/ReceivedRentedMessage.cs | 10 + .../Iggy_SDK/Contracts/Auth/GlobalPermissions.cs | 7 +- .../Iggy_SDK/Contracts/Http/MessageSendRequest.cs | 1 + .../Iggy_SDK/Contracts/Http/StoreOffsetRequest.cs | 1 + .../MessageSendRequest.cs => PartitionContext.cs} | 20 +- .../csharp/Iggy_SDK/Contracts/PartitionResponse.cs | 3 + .../csharp/Iggy_SDK/Contracts/PolledMessages.cs | 3 + .../Iggy_SDK/Contracts/PolledMessagesRental.cs | 3 + .../csharp/Iggy_SDK/Contracts/StreamPermissions.cs | 7 +- .../csharp/Iggy_SDK/Contracts/TopicPermissions.cs | 7 +- .../csharp/Iggy_SDK/IggyClient/IIggyConsumer.cs | 65 + .../Iggy_SDK/IggyClient/IIggyConsumerGroup.cs | 1 + foreign/csharp/Iggy_SDK/IggyClient/IIggyOffset.cs | 28 + .../Implementations/HttpMessageStream.cs | 139 +- .../TcpMessageStream.PollRouting.cs | 237 +- .../Implementations/TcpMessageStream.Vsr.cs | 37 +- .../IggyClient/Implementations/TcpMessageStream.cs | 164 +- .../Iggy_SDK/JsonConverters/MessagesConverter.cs | 5 + foreign/csharp/Iggy_SDK/Kinds/PollingStrategy.cs | 20 + foreign/csharp/Iggy_SDK/Mappers/BinaryMapper.cs | 35 +- foreign/csharp/Iggy_SDK/Utils/CommandCodes.cs | 1 + .../Iggy_SDK/Vsr/ConsumerGroupClientState.cs | 67 +- foreign/csharp/Iggy_SDK/Vsr/VsrConnection.cs | 7 +- foreign/csharp/Iggy_SDK/Vsr/VsrError.cs | 3 + foreign/csharp/Iggy_SDK/Vsr/VsrHeader.cs | 15 +- foreign/csharp/Iggy_SDK/Vsr/VsrOperation.cs | 15 +- .../ClientTests/HttpConsumerOffsetTests.cs} | 27 +- .../ClientTests/HttpPartitionContextTests.cs | 261 ++ .../ClientTests/HttpTopicOptionsTests.cs | 2 +- .../ConsumerSessionGenerationTests.cs | 2 +- .../NoAssignedPartitionBackoffTests.cs | 6 +- .../ConsumerTests/OffsetContinuationTests.cs | 380 ++ .../ConsumerTests/PartitionIncarnationTests.cs | 217 + .../ConsumerTests/RentedConsumerTests.cs | 4 +- .../ConsumerTests/RentedTypedConsumerTests.cs | 3 + .../MessageBatchGoldenVectorTests.cs | 11 +- .../Iggy_SDK_Tests/MapperTests/BinaryMapper.cs | 45 +- .../csharp/Iggy_SDK_Tests/Utils/BinaryFactory.cs | 17 + .../VsrTests/ConsumerGroupClientStateTests.cs | 4 +- .../VsrTests/EndpointFailoverTests.cs | 13 +- .../Iggy_SDK_Tests/VsrTests/GroupPollingTests.cs | 73 +- foreign/csharp/Iggy_SDK_Tests/VsrTests/MockNode.cs | 79 + .../VsrTests/PartitionContextTests.cs | 558 +++ .../Iggy_SDK_Tests/VsrTests/PrimaryPollingTests.cs | 220 +- .../Iggy_SDK_Tests/VsrTests/VsrHeaderTests.cs | 14 + .../VsrTests/VsrProtocolDriftTests.cs | 4 + foreign/go/README.md | 8 +- .../binary_response_deserializer.go | 31 +- .../binary_response_deserializer_test.go | 1 + .../vsr_response_deserializer_test.go | 5 +- foreign/go/client/tcp/cluster.go | 10 + foreign/go/client/tcp/tcp_core.go | 96 +- foreign/go/client/tcp/tcp_core_review_test.go | 28 +- foreign/go/client/tcp/tcp_core_test.go | 189 +- foreign/go/client/tcp/tcp_group_polling.go | 9 +- foreign/go/client/tcp/tcp_group_polling_test.go | 52 +- foreign/go/client/tcp/tcp_messaging.go | 160 +- foreign/go/client/tcp/tcp_offset_management.go | 60 +- foreign/go/client/tcp/tcp_partition_management.go | 8 +- foreign/go/client/tcp/tcp_poll_routing.go | 97 +- foreign/go/client/tcp/tcp_poll_routing_test.go | 345 +- foreign/go/client/tcp/tcp_testing_test.go | 24 + foreign/go/client/tcp/tcp_topic_cache.go | 66 +- foreign/go/client/tcp/tcp_topic_cache_test.go | 68 +- foreign/go/contracts/client.go | 43 +- foreign/go/contracts/message_polling.go | 11 + foreign/go/contracts/messages.go | 1 + foreign/go/contracts/offset.go | 8 + foreign/go/contracts/partitions.go | 31 +- foreign/go/errors/errors.yaml | 16 + foreign/go/errors/errors_gen.go | 66 + foreign/go/errors/errors_test.go | 6 + foreign/go/internal/command/code.go | 1 + foreign/go/internal/vsr/header.go | 13 +- foreign/go/internal/vsr/operation.go | 18 +- foreign/go/internal/vsr/protocol_parity_test.go | 8 + foreign/go/tests/e2e_helpers_test.go | 33 + foreign/go/tests/e2e_test.go | 18 +- .../iggy/client/async/ConsumerOffsetsClient.java | 35 + .../apache/iggy/client/async/MessagesClient.java | 14 + .../iggy/client/async/tcp/AsyncIggyTcpClient.java | 41 +- .../iggy/client/async/tcp/AsyncTcpConnection.java | 344 +- .../client/async/tcp/ConsumerOffsetsTcpClient.java | 108 +- .../iggy/client/async/tcp/MessagesTcpClient.java | 88 +- .../iggy/client/async/tcp/PartitionContexts.java | 191 + .../iggy/client/async/tcp/PartitionsTcpClient.java | 12 + .../apache/iggy/client/async/tcp/PollRouter.java | 102 +- .../client/async/tcp/RawPartitionRequests.java | 170 + .../iggy/client/async/tcp/StreamsTcpClient.java | 15 +- .../iggy/client/async/tcp/TopicsTcpClient.java | 17 +- .../client/async/tcp/vsr/ConsensusSession.java | 49 +- .../iggy/client/async/tcp/vsr/VsrHeaders.java | 9 +- .../iggy/client/async/tcp/vsr/VsrOperation.java | 8 + .../client/async/tcp/vsr/VsrRequestEncoder.java | 12 + .../client/blocking/ConsumerOffsetsClient.java | 30 + .../iggy/client/blocking/IggyBaseClient.java | 3 +- .../iggy/client/blocking/MessagesClient.java | 17 + .../blocking/http/ConsumerOffsetsHttpClient.java | 30 +- .../iggy/client/blocking/http/IggyHttpClient.java | 9 +- .../client/blocking/http/InternalHttpClient.java | 69 +- .../client/blocking/http/MessagesHttpClient.java | 83 +- .../client/blocking/http/PartitionsHttpClient.java | 6 +- .../iggy/client/blocking/http/SendContexts.java | 86 + .../client/blocking/http/StreamsHttpClient.java | 5 +- .../client/blocking/http/TopicsHttpClient.java | 5 +- .../blocking/tcp/ConsumerOffsetsTcpClient.java | 12 + .../org/apache/iggy/exception/IggyErrorCode.java | 5 + .../org/apache/iggy/message/PolledMessages.java | 5 +- .../org/apache/iggy/message/PollingStrategy.java | 30 +- .../java/org/apache/iggy/partition/Partition.java | 3 +- .../{Partition.java => PartitionContext.java} | 13 +- .../org/apache/iggy/serde/BytesDeserializer.java | 21 +- .../org/apache/iggy/serde/BytesSerializer.java | 11 +- .../java/org/apache/iggy/serde/CommandCode.java | 7 +- .../AsyncIggyTcpClientPartitionContextTest.java | 844 ++++ .../tcp/AsyncIggyTcpClientRawRequestTest.java | 362 ++ .../AsyncIggyTcpClientSendContextCacheTest.java | 251 ++ .../AsyncIggyTcpClientTransientFailoverTest.java | 160 +- .../tcp/AsyncTcpConnectionLifecycleBusyTest.java | 429 ++ .../iggy/client/async/tcp/PollRouterTest.java | 266 ++ .../async/tcp/vsr/VsrRequestEncoderTest.java | 27 +- .../http/MessagesHttpClientSendContextTest.java | 433 ++ .../client/blocking/http/ObjectMapperTest.java | 30 + .../client/blocking/tcp/BytesSerializerTest.java | 26 + .../blocking/tcp/ConsumerGroupsTcpClientTest.java | 30 +- .../apache/iggy/exception/IggyErrorCodeTest.java | 4 + .../apache/iggy/message/PollingStrategyTest.java | 36 + .../apache/iggy/serde/BytesDeserializerTest.java | 1 + .../iggy/serde/MessagesBatchWireFormatTest.java | 8 +- .../org/apache/iggy/topic/TopicDetailsTest.java | 4 +- foreign/node/README.md | 22 +- foreign/node/src/client/client.socket.test.ts | 638 ++- foreign/node/src/client/client.socket.ts | 364 +- foreign/node/src/client/client.type.ts | 11 +- foreign/node/src/index.ts | 1 + foreign/node/src/wire/command.code.ts | 1 + foreign/node/src/wire/command.utils.ts | 7 +- foreign/node/src/wire/error.code.test.ts | 15 +- foreign/node/src/wire/error.code.ts | 5 + foreign/node/src/wire/error.utils.ts | 9 +- foreign/node/src/wire/identifier.utils.ts | 4 + .../node/src/wire/message/message-batch.test.ts | 16 +- .../src/wire/message/poll-messages.command.test.ts | 73 +- .../node/src/wire/message/poll-messages.command.ts | 30 +- foreign/node/src/wire/message/poll.utils.ts | 8 +- .../src/wire/message/send-messages.command.test.ts | 100 +- .../node/src/wire/message/send-messages.command.ts | 84 +- .../node/src/wire/offset/delete-offset.command.ts | 15 +- .../src/wire/offset/offset-write.command.test.ts | 47 + .../node/src/wire/offset/store-offset.command.ts | 14 +- foreign/node/src/wire/topic/topic.utils.ts | 6 +- foreign/node/src/wire/vsr/header.test.ts | 6 +- foreign/node/src/wire/vsr/header.ts | 38 +- foreign/node/src/wire/vsr/index.ts | 5 +- foreign/node/src/wire/vsr/operation.test.ts | 4 +- foreign/node/src/wire/vsr/operation.ts | 11 +- foreign/php/README.md | 23 +- foreign/php/iggy-php.stubs.php | 151 +- foreign/php/src/client.rs | 9 + foreign/php/src/consumer.rs | 56 +- foreign/php/src/lib.rs | 4 +- foreign/php/src/message_iterator.rs | 5 +- foreign/php/src/receive_message.rs | 200 +- foreign/php/tests/IggySdkTest.php | 96 + foreign/python/.python-version | 2 +- foreign/python/Dockerfile.test | 2 +- foreign/python/README.md | 2 +- foreign/python/apache_iggy.pyi | 190 +- foreign/python/pylock.toml | 136 +- foreign/python/pyproject.toml | 3 +- foreign/python/src/bin/stub_gen.rs | 3 +- foreign/python/src/client.rs | 85 +- foreign/python/src/consumer.rs | 81 +- foreign/python/src/lib.rs | 4 +- foreign/python/src/receive_message.rs | 189 +- foreign/python/src/topic.rs | 8 + foreign/python/tests/test_connectivity.py | 13 +- foreign/python/tests/test_consumer_group.py | 21 +- foreign/python/tests/test_message_operations.py | 56 + foreign/python/tests/test_segment.py | 325 ++ foreign/python/tests/utils.py | 55 + foreign/python/uv.lock | 73 +- .../swift/Sources/Iggy/Errors/IggyErrorCode.swift | 8 + .../swift/Sources/Iggy/Models/IggyMessage.swift | 4 +- foreign/swift/Sources/Iggy/Models/Resources.swift | 34 +- .../swift/Sources/Iggy/Models/TopicOptions.swift | 4 +- foreign/swift/Tests/IggyTests/ErrorCodeTests.swift | 1 + foreign/swift/Tests/IggyTests/Fixtures/golden.json | 11 +- .../swift/Tests/IggyTests/ModelVectorTests.swift | 14 + foreign/swift/Tools/golden-vectors/src/main.rs | 16 + gateways/kafka/README.md | 48 +- gateways/kafka/docs/BRIDGE_MAPPING.md | 21 + gateways/kafka/docs/CONFIGS.md | 109 + gateways/kafka/docs/CONSUMER_GROUPS.md | 45 +- gateways/kafka/docs/MANUAL_TESTING.md | 21 +- gateways/kafka/docs/SCOPE.md | 60 +- gateways/kafka/docs/TEST_SUITE.md | 2 +- gateways/kafka/docs/kafka_api_keys_reference.md | 15 +- gateways/kafka/scripts/ci-wire-fixtures.sh | 2 +- gateways/kafka/src/bridge/error.rs | 24 +- gateways/kafka/src/bridge/iggy_bridge/fetch.rs | 1 + gateways/kafka/src/bridge/iggy_bridge/mod.rs | 12 +- gateways/kafka/src/bridge/iggy_bridge/topics.rs | 191 +- gateways/kafka/src/bridge/mod.rs | 11 +- gateways/kafka/src/group/mod.rs | 85 +- gateways/kafka/src/group/state.rs | 853 +++- gateways/kafka/src/protocol/api.rs | 52 +- gateways/kafka/src/protocol/bounds_guard.rs | 339 +- gateways/kafka/src/protocol/dedup.rs | 73 + .../kafka/src/protocol/handlers/alter_configs.rs | 389 ++ .../kafka/src/protocol/handlers/create_topics.rs | 187 +- .../kafka/src/protocol/handlers/delete_topics.rs | 404 ++ .../src/protocol/handlers/describe_configs.rs | 480 +++ .../kafka/src/protocol/handlers/describe_groups.rs | 165 + gateways/kafka/src/protocol/handlers/fetch.rs | 14 +- .../kafka/src/protocol/handlers/list_groups.rs | 246 ++ gateways/kafka/src/protocol/handlers/metadata.rs | 16 +- gateways/kafka/src/protocol/handlers/mod.rs | 57 +- .../kafka/src/protocol/handlers/topic_config.rs | 514 +++ gateways/kafka/src/protocol/mod.rs | 2 + gateways/kafka/src/protocol/wire_len.rs | 83 + gateways/kafka/src/server.rs | 3 + gateways/kafka/tests/api_handler_tests.rs | 58 +- gateways/kafka/tests/common/scope.rs | 5 + gateways/kafka/tests/common/wire.rs | 142 +- gateways/kafka/tests/configs_handler_tests.rs | 212 + gateways/kafka/tests/configs_java_client_tests.rs | 310 ++ gateways/kafka/tests/configs_real_bridge_tests.rs | 642 +++ gateways/kafka/tests/consumer_group_tests.rs | 675 ++- .../kafka/tests/delete_topics_real_bridge_tests.rs | 336 ++ gateways/kafka/tests/fetch_real_bridge_tests.rs | 18 +- gateways/kafka/tests/golden_wire_fixtures_tests.rs | 22 +- gateways/kafka/tests/java/ConfigsProbe.java | 129 + gateways/kafka/tests/kafka_client_e2e_tests.rs | 71 + gateways/kafka/tests/sasl_tests.rs | 6 +- gateways/kafka/tests/server_e2e_tests.rs | 4 +- gateways/kafka/tests/version_firewall_tests.rs | 103 +- gateways/kafka/tools/kafka-tool/README.md | 4 +- gateways/kafka/tools/kafka-tool/src/main.rs | 10 + gateways/kafka/tools/kafka-tool/src/response.rs | 38 +- scripts/ci/sync-python-interpreter-version.sh | 47 +- scripts/ci/wheel-interpreters.sh | 60 + web/README.md | 2 +- web/eslint.config.js | 4 +- web/package-lock.json | 1036 +---- web/package.json | 23 +- web/src/ambient.d.ts | 2 +- web/src/{hooks.client.ts => env.ts} | 7 +- web/src/hooks.client.ts | 2 +- web/src/lib/api/ApiSchema.ts | 4 +- web/src/lib/api/clientApi.ts | 18 +- web/src/lib/api/fetchApi.ts | 8 +- web/src/lib/api/fetchRouteApi.ts | 6 +- web/src/lib/api/handleFetchErrors.ts | 18 +- web/src/lib/auth/authStore.svelte.ts | 8 +- web/src/lib/components/Breadcrumbs.svelte | 12 +- web/src/lib/components/Button.svelte | 2 +- web/src/lib/components/Combobox.svelte | 2 +- .../components/DeleteButtonWithConfirmation.svelte | 2 +- .../components/DropdownMenu/DropdownMenu.svelte | 2 +- web/src/lib/components/DurationInput.svelte | 2 +- web/src/lib/components/Header.svelte | 6 +- .../lib/components/Layouts/SettingsLayout.svelte | 12 +- web/src/lib/components/LoadingIndicator.svelte | 4 +- web/src/lib/components/Logo/Logo.svelte | 10 +- .../MessageDecoder/MessageDecoder.svelte | 2 +- .../decoders/BuiltInDecoders/jsonDecoder.ts | 2 +- web/src/lib/components/ModalConfirmation.svelte | 2 +- .../components/Modals/AddPartitionsModal.svelte | 6 +- .../lib/components/Modals/AddStreamModal.svelte | 4 +- web/src/lib/components/Modals/AddTopicModal.svelte | 8 +- web/src/lib/components/Modals/AddUserModal.svelte | 6 +- web/src/lib/components/Modals/AppModals.svelte | 4 +- .../components/Modals/DeletePartitionsModal.svelte | 8 +- .../lib/components/Modals/DeleteUserModal.svelte | 2 +- web/src/lib/components/Modals/EditUserModal.svelte | 2 +- .../Modals/EditUserPermissionsModal.svelte | 2 +- .../lib/components/Modals/InspectMessage.svelte | 8 +- web/src/lib/components/Modals/ModalBase.svelte | 2 +- .../components/Modals/StreamSettingsModal.svelte | 14 +- .../components/Modals/TopicSettingsModal.svelte | 12 +- web/src/lib/components/Navbar.svelte | 23 +- web/src/lib/components/Paginator.svelte | 4 +- web/src/lib/components/PasswordInput.svelte | 2 +- web/src/lib/components/PeriodicInvalidator.svelte | 6 +- web/src/lib/components/PermissionsManager.svelte | 12 +- .../RouteComponents/Settings/UsersTab.svelte | 16 +- .../Settings/UsersTabActions.svelte | 4 +- web/src/lib/components/SlimSortableList.svelte | 2 +- web/src/lib/components/SortableList.svelte | 9 +- web/src/lib/components/StopPropagation.svelte | 2 +- web/src/lib/components/ThemeController.svelte | 4 +- web/src/lib/domain/Message.ts | 2 +- web/src/lib/domain/Partition.ts | 2 +- web/src/lib/domain/Stats.ts | 2 +- web/src/lib/domain/Topic.ts | 6 +- web/src/lib/domain/User.ts | 2 +- web/src/lib/hooks/useGoPrev.ts | 10 +- web/src/lib/types/appRoutes.ts | 4 +- web/{vite.config.ts => src/params.test.mjs} | 31 +- web/src/{params/i32.ts => params.ts} | 8 +- web/src/routes/+layout.svelte | 4 +- web/src/routes/+layout.ts | 27 +- web/src/routes/auth/+layout.svelte | 2 +- web/src/routes/auth/logout/+page.svelte | 6 +- web/src/routes/auth/sign-in/+page.svelte | 22 +- web/src/routes/auth/sign-in/+page.ts | 8 +- web/src/routes/dashboard/+layout.svelte | 8 +- web/src/routes/dashboard/+layout.ts | 12 +- web/src/routes/dashboard/overview/+page.ts | 4 +- .../routes/dashboard/settings/server/+page.svelte | 8 +- web/src/routes/dashboard/settings/server/+page.ts | 4 +- .../dashboard/settings/terminal/+page.svelte | 2 +- .../routes/dashboard/settings/users/+page.svelte | 18 +- web/src/routes/dashboard/settings/users/+page.ts | 8 +- .../routes/dashboard/settings/webUI/+page.svelte | 10 +- web/src/routes/dashboard/streams/+layout.svelte | 17 +- web/src/routes/dashboard/streams/+layout.ts | 4 +- .../dashboard/streams/[streamId=i32]/+page.svelte | 14 +- .../dashboard/streams/[streamId=i32]/+page.ts | 4 +- .../streams/[streamId=i32]/topics/+page.svelte | 4 +- .../topics/[topicId=i32]/+page.svelte | 18 +- .../[streamId=i32]/topics/[topicId=i32]/+page.ts | 4 +- .../partitions/[partitionId=i32]/+page.svelte | 4 +- .../[partitionId=i32]/messages/+page.svelte | 25 +- .../partitions/[partitionId=i32]/messages/+page.ts | 6 +- web/svelte.config.js | 46 - web/tsconfig.json | 15 +- web/vite.config.ts | 31 +- 594 files changed, 49360 insertions(+), 7021 deletions(-)
