This is an automated email from the ASF dual-hosted git repository. numinnex pushed a commit to branch retry_primary_write_on_to in repository https://gitbox.apache.org/repos/asf/iggy.git
commit bdae18d15a22fb4b49928e3a5336dc69c60d2fc0 Merge: 147c36796 c5152a500 Author: Grzegorz Koszyk <[email protected]> AuthorDate: Wed Oct 14 15:45:53 2026 +0200 Merge branch 'master' into retry_primary_write_on_to .claude/skills/connector-sdk/SKILL.md | 4 +- .../actions/python-maturin/pre-merge/action.yml | 2 +- .github/workflows/_common.yml | 15 + .github/workflows/_detect.yml | 1 + .github/workflows/post-merge.yml | 1 + .github/workflows/pr-title.yml | 1 + .github/workflows/pr-triage-apply.yml | 278 +- .github/workflows/pre-merge.yml | 1 + .github/workflows/stale-prs.yml | 3 +- AGENTS.md | 6 +- bdd/go/tests/tcp_test/messages_feature_send.go | 4 +- bdd/go/tests/tcp_test/offset_feature_delete.go | 2 +- bdd/rust/tests/steps/leader_redirection.rs | 3 +- .../src/actors/consumer/benchmark_consumer.rs | 146 +- .../bench/src/actors/consumer/client/high_level.rs | 84 +- core/bench/src/actors/consumer/client/interface.rs | 4 + core/bench/src/actors/consumer/client/low_level.rs | 60 + .../src/actors/producer/benchmark_producer.rs | 15 +- .../benchmark_producing_consumer.rs | 38 +- core/bench/src/analytics/report_builder.rs | 13 +- core/bench/src/args/common.rs | 6 +- core/bench/src/utils/rate_limiter.rs | 261 +- core/binary_protocol/src/codes.rs | 6 +- core/binary_protocol/src/consensus/command.rs | 11 +- core/binary_protocol/src/consensus/header.rs | 426 +- core/binary_protocol/src/consensus/mod.rs | 7 +- core/binary_protocol/src/consensus/request.rs | 19 +- core/binary_protocol/src/dispatch.rs | 4 +- core/binary_protocol/src/lib.rs | 20 +- core/binary_protocol/src/primitives/identifier.rs | 3 + .../src/primitives/partition_history.rs | 7 +- ...{get_send_context.rs => get_partition_route.rs} | 22 +- core/binary_protocol/src/requests/messages/mod.rs | 4 +- .../partitions/retire_consumer_group_owners.rs | 8 +- core/binary_protocol/src/responses/messages/mod.rs | 2 + .../src/responses/messages/partition_route.rs | 157 + .../src/responses/messages/poll_routing.rs | 1 + .../src/responses/system/get_cluster_metadata.rs | 45 +- core/cli/src/args/mod.rs | 21 +- .../binary_cluster/get_cluster_metadata.rs | 7 +- core/cli/src/credentials.rs | 13 + core/common/src/error/iggy_error.rs | 81 +- core/common/src/lib.rs | 4 +- core/common/src/traits/binary_impls/messages.rs | 19 +- core/common/src/traits/binary_impls/mod.rs | 58 +- .../traits/binary_impls/personal_access_tokens.rs | 39 +- core/common/src/traits/binary_impls/users.rs | 39 +- core/common/src/traits/binary_transport.rs | 71 +- core/common/src/traits/client.rs | 39 + core/common/src/traits/mod.rs | 2 +- core/common/src/types/cluster/node.rs | 8 +- core/common/src/utils/topic_size.rs | 32 + core/common/src/wire_conversions.rs | 20 + core/configs/src/configs_impl/file_provider.rs | 7 + core/configs/src/server_config/cluster.rs | 11 +- core/configs/src/server_config/server.rs | 1 + core/connectors/sdk/src/convert.rs | 128 +- core/connectors/sdk/src/encoders/avro.rs | 4 +- core/connectors/sdk/src/lib.rs | 2 +- core/connectors/sinks/delta_sink/src/sink.rs | 42 +- core/connectors/sinks/http_sink/src/lib.rs | 58 +- core/connectors/sinks/meilisearch_sink/src/lib.rs | 28 +- core/connectors/sinks/s3_sink/src/formatter.rs | 95 +- core/connectors/sinks/s3_sink/src/sink.rs | 158 +- core/connectors/sinks/surrealdb_sink/src/lib.rs | 15 +- core/consensus/src/client_table.rs | 15 +- core/consensus/src/impls.rs | 232 +- core/consensus/src/lib.rs | 7 + core/consensus/src/plane_helpers.rs | 285 +- core/integration/tests/bench.rs | 190 + core/integration/tests/cli/common/mod.rs | 11 + .../tests/cli/general/test_help_command.rs | 17 +- .../cli/system/test_cluster_metadata_command.rs | 4 +- .../tests/cli/user/test_login_options.rs | 208 +- .../tests/cluster/client_table_adversarial.rs | 1 + .../tests/cluster/client_table_restart.rs | 1 + core/integration/tests/cluster/partition_dedup.rs | 1 + .../tests/cluster/partition_primary_routing.rs | 570 +- .../tests/cluster/partition_state_transfer.rs | 100 +- .../verify_consumer_group_partition_assignment.rs | 89 +- .../tests/sdk/consumer_group_membership.rs | 15 +- core/integration/tests/server/http_client.rs | 17 + .../tests/server/http_read_your_writes.rs | 19 +- core/integration/tests/server/http_vsr.rs | 82 +- core/integration/tests/server/mod.rs | 5 +- .../tests/server/pipelined_frames_vsr.rs | 303 + core/integration/tests/server/raw_tcp.rs | 7 + .../server/scenarios/authentication_scenario.rs | 6 +- core/integration/tests/server/topic_metrics_vsr.rs | 178 +- core/journal/src/lib.rs | 13 +- core/journal/src/prepare_journal.rs | 75 +- core/message_bus/src/config.rs | 21 +- core/message_bus/src/lib.rs | 27 + core/message_bus/src/transports/mod.rs | 8 +- core/message_bus/src/transports/quic.rs | 860 +- core/metadata/src/impls/metadata.rs | 293 +- core/metadata/src/stm/consumer_group.rs | 346 +- core/metadata/src/stm/lifecycle.rs | 389 +- core/metadata/src/stm/mod.rs | 80 +- core/metadata/src/stm/result.rs | 153 +- core/metadata/src/stm/snapshot.rs | 28 +- core/metadata/src/stm/stream.rs | 141 +- core/partitions/Cargo.toml | 2 +- core/partitions/src/consumer_offset_capacity.rs | 14 + core/partitions/src/iggy_index_writer.rs | 13 +- core/partitions/src/iggy_partition.rs | 11751 ++++++++++++------- core/partitions/src/install_backup.rs | 84 +- core/partitions/src/io.rs | 144 +- core/partitions/src/journal.rs | 63 +- core/partitions/src/lib.rs | 11 +- core/partitions/src/log.rs | 7 +- core/partitions/src/messages_writer.rs | 13 +- core/partitions/src/offset_recovery.rs | 62 +- core/partitions/src/offset_storage.rs | 31 + core/partitions/src/partition_storage.rs | 104 +- core/partitions/src/persistence.rs | 67 +- core/partitions/src/segment_recovery.rs | 3 +- core/partitions/src/state_transfer.rs | 187 +- core/partitions/src/types.rs | 10 +- core/sdk/src/client_wrappers/binary_client.rs | 21 + core/sdk/src/clients/client.rs | 110 +- core/sdk/src/clients/consumer.rs | 1 + core/sdk/src/clients/producer.rs | 10 +- core/sdk/src/diagnostic_events.rs | 54 + core/sdk/src/driver.rs | 1325 +++ .../src/{poll_routing.rs => driver/poll_router.rs} | 185 +- core/sdk/src/driver/route_cache.rs | 381 + core/sdk/src/http/http_client.rs | 8 +- core/sdk/src/leader_aware.rs | 611 +- core/sdk/src/lib.rs | 5 +- core/sdk/src/{leader_aware.rs => links/connect.rs} | 524 +- core/sdk/src/links/dial.rs | 324 + core/sdk/src/links/fake_cluster.rs | 442 + core/sdk/src/links/mod.rs | 448 + core/sdk/src/links/mux.rs | 815 ++ core/sdk/src/links/quic.rs | 335 + core/sdk/src/links/replicas.rs | 1571 +++ core/sdk/src/quic/quic_client.rs | 643 +- core/sdk/src/session.rs | 16 +- core/sdk/src/session_owner.rs | 601 + core/sdk/src/session_owner/lanes.rs | 606 + core/sdk/src/tcp/mod.rs | 4 - core/sdk/src/tcp/tcp_client.rs | 1366 ++- core/sdk/src/tcp/tcp_connection_stream.rs | 108 - core/sdk/src/tcp/tcp_connection_stream_kind.rs | 66 - core/sdk/src/tcp/tcp_stream.rs | 27 - core/sdk/src/tcp/tcp_tls_connection_stream.rs | 105 - core/sdk/src/vsr.rs | 396 +- core/sdk/src/websocket/mod.rs | 4 - core/sdk/src/websocket/websocket_client.rs | 764 +- .../src/websocket/websocket_connection_stream.rs | 212 - core/sdk/src/websocket/websocket_stream.rs | 36 - core/sdk/src/websocket/websocket_stream_kind.rs | 58 - .../websocket/websocket_tls_connection_stream.rs | 217 - core/server/README.md | 22 +- core/server/config.toml | 37 +- core/server/src/boot/mod.rs | 61 +- core/server/src/boot/topology.rs | 12 +- core/server/src/cluster_meta.rs | 39 + core/server/src/consumer_group.rs | 9 +- core/server/src/consumer_group/liveness.rs | 10 +- core/server/src/dispatch/authz.rs | 10 +- core/server/src/dispatch/failure.rs | 73 +- core/server/src/dispatch/host.rs | 40 +- core/server/src/dispatch/mod.rs | 1482 ++- core/server/src/dispatch/partition.rs | 866 +- core/server/src/dispatch/reads.rs | 93 +- core/server/src/dispatch/submit.rs | 1386 ++- core/server/src/dispatch/test_support.rs | 91 +- core/server/src/http.rs | 38 +- core/server/src/http/error.rs | 17 +- core/server/src/http/forward.rs | 965 +- core/server/src/http/handlers.rs | 363 +- core/server/src/http/metrics.rs | 210 +- core/server/src/http/reply.rs | 8 + core/server/src/http/state.rs | 7 + core/server/src/http/submit.rs | 98 +- core/server/src/lib.rs | 8 +- core/server/src/namespace.rs | 34 +- core/server/src/partition_helpers.rs | 5 +- core/server/src/partition_reconciler.rs | 702 +- core/server/src/reply_frame.rs | 12 +- core/server/src/rewrite.rs | 42 +- core/server/src/segment_cleaner.rs | 41 +- core/server_common/src/consensus_message.rs | 16 +- core/shard/src/coordinator.rs | 5 + core/shard/src/lib.rs | 1224 +- core/shard/src/partition_io.rs | 2694 ++++- core/shard/src/poll.rs | 87 +- core/shard/src/poll/completion_tests.rs | 229 +- core/simulator/src/bin/workload-fuzz.rs | 64 +- core/simulator/src/client.rs | 27 +- core/simulator/src/deps.rs | 21 +- core/simulator/src/lib.rs | 2468 +++- core/simulator/src/packet.rs | 3 +- core/simulator/src/replica.rs | 6 +- core/simulator/src/storage/tests.rs | 209 +- core/simulator/src/workload/actions.rs | 4 + core/simulator/src/workload/auditor.rs | 18 +- core/simulator/src/workload/invariants.rs | 30 +- core/simulator/src/workload/mod.rs | 2481 +++- .../src/workload/ops/join_fixture_group.rs | 96 + .../src/workload/ops/leave_fixture_group.rs | 84 + core/simulator/src/workload/ops/mod.rs | 12 +- .../src/workload/ops/replace_fixture_topic.rs | 112 + .../src/workload/ops/store_stale_owner_offset.rs | 84 + core/simulator/src/workload/options.rs | 53 +- core/simulator/src/workload/oracle.rs | 384 +- core/simulator/src/workload/shadow.rs | 550 +- core/simulator/src/workload/state_checker.rs | 568 +- docker-compose.cluster.yml | 191 + foreign/cpp/src/lib.rs | 1 + foreign/cpp/src/type_conversion.rs | 1 + foreign/csharp/Directory.Packages.props | 8 +- foreign/csharp/Iggy_SDK/Contracts/ClusterNode.cs | 3 + .../csharp/Iggy_SDK/Contracts/PartitionRoute.cs | 14 +- .../Exceptions/IggyInvalidStatusCodeException.cs | 2 + .../TcpMessageStream.PollRouting.cs | 423 +- .../Implementations/TcpMessageStream.Vsr.cs | 51 +- .../IggyClient/Implementations/TcpMessageStream.cs | 101 +- foreign/csharp/Iggy_SDK/Mappers/BinaryMapper.cs | 21 +- foreign/csharp/Iggy_SDK/Utils/CommandCodes.cs | 2 +- foreign/csharp/Iggy_SDK/Vsr/VsrConnection.cs | 8 +- foreign/csharp/Iggy_SDK/Vsr/VsrError.cs | 1 + foreign/csharp/Iggy_SDK/Vsr/VsrHeader.cs | 4 +- foreign/csharp/Iggy_SDK/Vsr/VsrOperation.cs | 2 +- .../ConsumerTests/OffsetContinuationTests.cs | 9 +- .../Iggy_SDK_Tests/MapperTests/BinaryMapper.cs | 59 +- .../VsrTests/EndpointFailoverTests.cs | 21 +- .../Iggy_SDK_Tests/VsrTests/GroupPollingTests.cs | 1 + foreign/csharp/Iggy_SDK_Tests/VsrTests/MockNode.cs | 41 +- .../VsrTests/PartitionContextTests.cs | 54 +- .../Iggy_SDK_Tests/VsrTests/PrimaryPollingTests.cs | 456 +- foreign/go/README.md | 2 +- foreign/go/client/tcp/cluster.go | 12 + foreign/go/client/tcp/tcp_core.go | 73 +- foreign/go/client/tcp/tcp_core_review_test.go | 2 +- foreign/go/client/tcp/tcp_core_test.go | 35 +- foreign/go/client/tcp/tcp_failover_test.go | 4 +- foreign/go/client/tcp/tcp_messaging.go | 174 +- foreign/go/client/tcp/tcp_offset_management.go | 27 +- foreign/go/client/tcp/tcp_partition_management.go | 3 + foreign/go/client/tcp/tcp_poll_routing.go | 248 +- foreign/go/client/tcp/tcp_poll_routing_test.go | 498 +- foreign/go/client/tcp/tcp_stream_management.go | 1 + foreign/go/client/tcp/tcp_testing_test.go | 19 +- foreign/go/client/tcp/tcp_topic_cache.go | 44 +- foreign/go/client/tcp/tcp_topic_cache_test.go | 71 +- foreign/go/contracts/cluster_metadata_test.go | 56 +- foreign/go/contracts/cluster_node.go | 10 +- foreign/go/contracts/partitions.go | 26 + foreign/go/errors/errors.yaml | 4 + foreign/go/errors/errors_gen.go | 15 + foreign/go/internal/command/code.go | 2 +- foreign/go/internal/vsr/envelope.go | 5 + foreign/go/internal/vsr/envelope_test.go | 4 +- foreign/go/internal/vsr/session.go | 46 +- foreign/go/internal/vsr/session_test.go | 40 +- foreign/go/tests/e2e_test.go | 29 +- .../iggy/client/async/tcp/AsyncIggyTcpClient.java | 69 +- .../iggy/client/async/tcp/AsyncTcpConnection.java | 137 +- .../iggy/client/async/tcp/ClientRoutingState.java | 36 +- .../client/async/tcp/ConsumerOffsetsTcpClient.java | 49 +- .../iggy/client/async/tcp/MessagesTcpClient.java | 146 +- .../iggy/client/async/tcp/PartitionContexts.java | 191 - .../apache/iggy/client/async/tcp/PollRouter.java | 429 +- .../client/async/tcp/RawPartitionRequests.java | 12 +- .../client/async/tcp/vsr/ConsensusSession.java | 21 +- .../iggy/client/async/tcp/vsr/VsrHeaders.java | 2 +- .../client/async/tcp/vsr/VsrRequestEncoder.java | 13 +- .../java/org/apache/iggy/cluster/ClusterNode.java | 14 +- .../org/apache/iggy/exception/IggyErrorCode.java | 1 + .../org/apache/iggy/partition/PartitionRoute.java | 47 + .../org/apache/iggy/serde/BytesDeserializer.java | 5 +- .../java/org/apache/iggy/serde/CommandCode.java | 2 +- .../AsyncIggyTcpClientEndpointFailoverTest.java | 1 + .../AsyncIggyTcpClientPartitionContextTest.java | 141 +- .../tcp/AsyncIggyTcpClientRawRequestTest.java | 192 +- .../AsyncIggyTcpClientSendContextCacheTest.java | 99 +- .../AsyncIggyTcpClientTransientFailoverTest.java | 128 +- .../tcp/AsyncTcpConnectionLifecycleBusyTest.java | 52 +- .../client/async/tcp/ClientRoutingStateTest.java | 40 - .../iggy/client/async/tcp/LeaderAwarenessTest.java | 2 +- .../iggy/client/async/tcp/PollRouterTest.java | 102 +- .../async/tcp/vsr/VsrRequestEncoderTest.java | 35 +- .../client/blocking/http/ObjectMapperTest.java | 19 + .../apache/iggy/partition/PartitionRouteTest.java | 65 + .../apache/iggy/serde/BytesDeserializerTest.java | 3 + foreign/node/src/client/client.socket.test.ts | 521 +- foreign/node/src/client/client.socket.ts | 461 +- foreign/node/src/e2e/tcp.cluster.e2e.ts | 1 + foreign/node/src/wire/cluster/cluster.utils.ts | 6 +- foreign/node/src/wire/command.code.ts | 2 +- foreign/node/src/wire/error.code.ts | 1 + .../src/wire/message/send-messages.command.test.ts | 52 +- .../node/src/wire/message/send-messages.command.ts | 56 +- foreign/node/src/wire/offset/get-offset.command.ts | 2 +- foreign/node/src/wire/offset/offset.utils.ts | 12 +- .../src/wire/partition/partition-route.test.ts | 46 + foreign/node/src/wire/partition/partition-route.ts | 51 + foreign/node/src/wire/vsr/index.ts | 2 +- foreign/node/src/wire/vsr/session.ts | 5 +- foreign/node/src/wire/vsr/vsr.test.ts | 4 +- foreign/swift/README.md | 13 +- .../swift/Sources/Iggy/Errors/IggyErrorCode.swift | 8 + .../Sources/Iggy/Models/ResourceOptions.swift | 12 - foreign/swift/Sources/Iggy/Models/Resources.swift | 4 +- foreign/swift/Sources/Iggy/Protocol/Batch.swift | 264 + .../swift/Sources/Iggy/Protocol/CommandCode.swift | 143 + .../Sources/Iggy/Protocol/ConsensusOperation.swift | 154 + .../Sources/Iggy/Protocol/ConsensusSession.swift | 89 + .../Sources/Iggy/Protocol/ProtocolVersion.swift | 46 + foreign/swift/Sources/Iggy/Protocol/Requests.swift | 348 + .../swift/Sources/Iggy/Protocol/Responses.swift | 460 + foreign/swift/Sources/Iggy/Protocol/VSRFrame.swift | 313 + foreign/swift/Sources/Iggy/Wire/ByteCodec.swift | 63 +- foreign/swift/Tests/IggyTests/Fixtures/golden.json | 9 +- foreign/swift/Tests/IggyTests/ModelTests.swift | 8 +- foreign/swift/Tests/IggyTests/ProtocolTests.swift | 310 + .../Tests/IggyTests/ResponseVectorTests.swift | 324 + .../Tests/IggyTests/Support/GoldenFixture.swift | 4 + .../swift/Tests/IggyTests/WireVectorTests.swift | 290 + foreign/swift/Tools/golden-vectors/src/main.rs | 13 + gateways/kafka/README.md | 65 +- gateways/kafka/docs/CONFIGS.md | 31 +- gateways/kafka/docs/IDEMPOTENCE.md | 37 +- gateways/kafka/docs/MANUAL_TESTING.md | 4 +- gateways/kafka/docs/SCOPE.md | 11 +- gateways/kafka/src/bridge/config.rs | 88 +- gateways/kafka/src/bridge/iggy_bridge/fetch.rs | 34 +- .../kafka/src/bridge/iggy_bridge/group_offsets.rs | 18 +- gateways/kafka/src/bridge/iggy_bridge/mod.rs | 103 +- gateways/kafka/src/bridge/iggy_bridge/produce.rs | 819 +- gateways/kafka/src/bridge/mod.rs | 6 +- gateways/kafka/src/main.rs | 43 +- gateways/kafka/src/protocol/api.rs | 52 +- .../kafka/src/protocol/handlers/create_topics.rs | 125 +- .../src/protocol/handlers/describe_configs.rs | 42 +- .../src/protocol/handlers/init_producer_id.rs | 46 +- gateways/kafka/src/protocol/handlers/mod.rs | 2 +- gateways/kafka/src/protocol/handlers/produce.rs | 482 +- .../kafka/src/protocol/handlers/topic_config.rs | 55 +- gateways/kafka/src/records.rs | 149 +- gateways/kafka/src/server.rs | 33 +- .../kafka/tests/bridge_iggy_integration_tests.rs | 6 +- gateways/kafka/tests/common/iggy_server.rs | 21 +- gateways/kafka/tests/configs_java_client_tests.rs | 5 +- gateways/kafka/tests/configs_real_bridge_tests.rs | 18 +- .../kafka/tests/create_topics_real_bridge_tests.rs | 45 + gateways/kafka/tests/java/ConfigsProbe.java | 17 +- gateways/kafka/tests/kafka_client_e2e_tests.rs | 3 +- gateways/kafka/tests/produce_real_bridge_tests.rs | 190 +- gateways/kafka/tests/response_negative_tests.rs | 11 +- 353 files changed, 48692 insertions(+), 13707 deletions(-) diff --cc core/partitions/src/iggy_partition.rs index 7f5e1ce30,24cb51351..6ad2f26e1 --- a/core/partitions/src/iggy_partition.rs +++ b/core/partitions/src/iggy_partition.rs @@@ -12207,11 -12530,12 +12545,13 @@@ mod tests use consensus::LocalPipeline; use iggy_binary_protocol::batch::BATCH_MESSAGE_HEADER_SIZE; use iggy_binary_protocol::{ - Command, CommitHeader, ReplyHeader, StartViewHeader, WireConsumer, WireEncode, WireName, + Command, CommitHeader, ConsensusHeader, ReplyHeader, StartViewHeader, WireConsumer, + WireEncode, WireName, }; use journal::DurableAppend; - use journal::durable_storage::DiskStorage; + use journal::durable_storage::{ + DiskStorage, DurableStorage, OpenMode, RegularFiles, StorageEntry, + }; use message_bus::{BusMessage, SendError}; use server_common::MESSAGE_ALIGN; use server_common::iobuf::Owned;
