This is an automated email from the ASF dual-hosted git repository.
slbotbm pushed a commit to branch cpp-high-level-client-2
in repository https://gitbox.apache.org/repos/asf/iggy.git
The following commit(s) were added to refs/heads/cpp-high-level-client-2 by
this push:
new 5ef7556af fixes
5ef7556af is described below
commit 5ef7556af12759291ff9412eddeb6dd566a84bd8
Author: Rimuksh Kansal <[email protected]>
AuthorDate: Tue Sep 22 02:31:19 2026 +0900
fixes
---
foreign/cpp/include/iggy.hpp | 6 ++---
foreign/cpp/src/client.cpp | 4 ++--
foreign/cpp/tests/e2e/consumer_group.cpp | 40 ++++++++++++++++----------------
foreign/cpp/tests/unit/unit_tests.cpp | 2 +-
4 files changed, 26 insertions(+), 26 deletions(-)
diff --git a/foreign/cpp/include/iggy.hpp b/foreign/cpp/include/iggy.hpp
index c213638a8..69ad1c4f0 100644
--- a/foreign/cpp/include/iggy.hpp
+++ b/foreign/cpp/include/iggy.hpp
@@ -2548,11 +2548,11 @@ class IggyBlockingClient final {
* @param consumer Consumer identity that owns the offset.
* @param stream Parent stream, addressed by numeric ID or name.
* @param topic Parent topic, addressed by numeric ID or name.
- * @param offset Message offset to store.
* @param partition_id Partition whose offset is stored, or `std::nullopt`
* to omit the partition from the request. The maximum
* `std::uint32_t` value is rejected because it is reserved by the
* FFI representation.
+ * @param offset Message offset to store.
* @throws IggyException if an identifier, partition, or offset is invalid;
* the resource does not exist; the client is unauthenticated; the
* caller lacks permission; or the request fails.
@@ -2560,8 +2560,8 @@ class IggyBlockingClient final {
void StoreConsumerOffset(const Consumer &consumer,
const Identifier &stream,
const Identifier &topic,
- std::uint64_t offset,
- std::optional<std::uint32_t> partition_id =
std::nullopt);
+ std::optional<std::uint32_t> partition_id,
+ std::uint64_t offset);
/**
* @brief Retrieves the stored offset for a consumer or consumer group.
diff --git a/foreign/cpp/src/client.cpp b/foreign/cpp/src/client.cpp
index b61b2fd2b..d5a3ca3f4 100644
--- a/foreign/cpp/src/client.cpp
+++ b/foreign/cpp/src/client.cpp
@@ -306,8 +306,8 @@ void IggyBlockingClient::LeaveConsumerGroup(const
Identifier &stream,
void IggyBlockingClient::StoreConsumerOffset(const Consumer &consumer,
const Identifier &stream,
const Identifier &topic,
- const std::uint64_t offset,
- const
std::optional<std::uint32_t> partition_id) {
+ const
std::optional<std::uint32_t> partition_id,
+ const std::uint64_t offset) {
RethrowAsIggyException([this, &consumer, &stream, &topic, offset,
partition_id] {
constexpr auto unspecified_partition_id =
std::numeric_limits<std::uint32_t>::max();
if (partition_id == unspecified_partition_id) {
diff --git a/foreign/cpp/tests/e2e/consumer_group.cpp
b/foreign/cpp/tests/e2e/consumer_group.cpp
index 87ca3f29a..404932cf5 100644
--- a/foreign/cpp/tests/e2e/consumer_group.cpp
+++ b/foreign/cpp/tests/e2e/consumer_group.cpp
@@ -1205,7 +1205,7 @@ TEST_F(E2E_ConsumerGroup,
StoreConsumerOffsetOnEmptyPartitionThrows) {
for (const std::uint64_t offset : {0u, 1u}) {
SCOPED_TRACE(offset);
ASSERT_THROW(client.StoreConsumerOffset(consumer,
iggy::Identifier::String(stream_name),
-
iggy::Identifier::String(topic_name), offset, 0),
+
iggy::Identifier::String(topic_name), 0, offset),
iggy::IggyException);
}
}
@@ -1232,7 +1232,7 @@ TEST_F(E2E_ConsumerGroup,
StoreConsumerOffsetAcceptsOffsetsAtValidBounds) {
partition_id_bytes(0),
std::move(messages)));
ASSERT_NO_THROW(client.StoreConsumerOffset(consumer,
iggy::Identifier::String(stream_name),
-
iggy::Identifier::String(topic_name), 2, 0));
+
iggy::Identifier::String(topic_name), 0, 2));
EXPECT_EQ(
client
.GetConsumerOffset(consumer,
iggy::Identifier::String(stream_name), iggy::Identifier::String(topic_name), 0)
@@ -1240,7 +1240,7 @@ TEST_F(E2E_ConsumerGroup,
StoreConsumerOffsetAcceptsOffsetsAtValidBounds) {
2u);
ASSERT_NO_THROW(client.StoreConsumerOffset(consumer,
iggy::Identifier::String(stream_name),
-
iggy::Identifier::String(topic_name), 4, 0));
+
iggy::Identifier::String(topic_name), 0, 4));
const auto current = client.GetConsumerOffset(consumer,
iggy::Identifier::String(stream_name),
iggy::Identifier::String(topic_name), 0);
EXPECT_EQ(current.CurrentOffset(), 4u);
@@ -1268,10 +1268,10 @@ TEST_F(E2E_ConsumerGroup,
StoreConsumerOffsetPastCurrentOffsetThrowsWithoutChang
make_string_identifier(topic_name), "partition_id",
partition_id_bytes(0),
std::move(messages)));
ASSERT_NO_THROW(client.StoreConsumerOffset(consumer,
iggy::Identifier::String(stream_name),
-
iggy::Identifier::String(topic_name), 2, 0));
+
iggy::Identifier::String(topic_name), 0, 2));
ASSERT_THROW(client.StoreConsumerOffset(consumer,
iggy::Identifier::String(stream_name),
-
iggy::Identifier::String(topic_name), 5, 0),
+
iggy::Identifier::String(topic_name), 0, 5),
iggy::IggyException);
EXPECT_EQ(
client
@@ -1346,7 +1346,7 @@ TEST_F(E2E_ConsumerGroup,
StoreConsumerOffsetOnNonExistentResourcesThrows) {
iggy::Identifier::String(missing_topic_name), 0, 0),
iggy::IggyException);
ASSERT_THROW(client.StoreConsumerOffset(consumer,
iggy::Identifier::String(stream_name),
-
iggy::Identifier::String(topic_name), 0, 1),
+
iggy::Identifier::String(topic_name), 1, 0),
iggy::IggyException);
}
@@ -1371,9 +1371,9 @@ TEST_F(E2E_ConsumerGroup,
StoreConsumerOffsetUpdatesExistingOffset) {
make_string_identifier(topic_name), "partition_id",
partition_id_bytes(0),
std::move(messages)));
ASSERT_NO_THROW(client.StoreConsumerOffset(consumer,
iggy::Identifier::String(stream_name),
-
iggy::Identifier::String(topic_name), 1, 0));
+
iggy::Identifier::String(topic_name), 0, 1));
ASSERT_NO_THROW(client.StoreConsumerOffset(consumer,
iggy::Identifier::String(stream_name),
-
iggy::Identifier::String(topic_name), 3, 0));
+
iggy::Identifier::String(topic_name), 0, 3));
EXPECT_EQ(
client
@@ -1406,7 +1406,7 @@ TEST_F(E2E_ConsumerGroup,
StoreConsumerOffsetKeepsConsumerOffsetsIndependent) {
ASSERT_NO_THROW(client.StoreConsumerOffset(first_consumer,
iggy::Identifier::String(stream_name),
iggy::Identifier::String(topic_name), 0, 0));
ASSERT_NO_THROW(client.StoreConsumerOffset(second_consumer,
iggy::Identifier::String(stream_name),
-
iggy::Identifier::String(topic_name), 2, 0));
+
iggy::Identifier::String(topic_name), 0, 2));
EXPECT_EQ(client
.GetConsumerOffset(first_consumer,
iggy::Identifier::String(stream_name),
@@ -1544,7 +1544,7 @@ TEST_F(E2E_ConsumerGroup,
StoreConsumerOffsetSupportsNamedAndNumericIdentifiers)
ASSERT_NO_THROW(client.StoreConsumerOffset(named_consumer,
iggy::Identifier::String(stream_name),
iggy::Identifier::String(topic_name), 0, 0));
ASSERT_NO_THROW(client.StoreConsumerOffset(numeric_consumer,
iggy::Identifier::Numeric(stream.Id()),
-
iggy::Identifier::Numeric(topic.Id()), 1, 0));
+
iggy::Identifier::Numeric(topic.Id()), 0, 1));
EXPECT_EQ(client
.GetConsumerOffset(named_consumer,
iggy::Identifier::Numeric(stream.Id()),
@@ -1582,13 +1582,13 @@ TEST_F(E2E_ConsumerGroup,
StoreConsumerOffsetWithoutPermissionThrowsWithoutChang
make_string_identifier(topic_name), "partition_id",
partition_id_bytes(0),
std::move(messages)));
ASSERT_NO_THROW(client.StoreConsumerOffset(consumer,
iggy::Identifier::String(stream_name),
-
iggy::Identifier::String(topic_name), 1, 0));
+
iggy::Identifier::String(topic_name), 0, 1));
ASSERT_NO_THROW(CreateUser(user_admin_client, username, password,
iggy::ffi::UserStatus::Active, true,
iggy::ffi::Permissions{}));
auto restricted_client = GetLoggedInHighLevelClient(username, password);
ASSERT_THROW(restricted_client.StoreConsumerOffset(consumer,
iggy::Identifier::String(stream_name),
-
iggy::Identifier::String(topic_name), 2, 0),
+
iggy::Identifier::String(topic_name), 0, 2),
iggy::IggyException);
EXPECT_EQ(
client
@@ -1618,7 +1618,7 @@ TEST_F(E2E_ConsumerGroup,
GetConsumerOffsetReturnsAllFieldsForNonZeroPartition)
make_string_identifier(topic_name), "partition_id",
partition_id_bytes(1),
std::move(messages)));
ASSERT_NO_THROW(client.StoreConsumerOffset(consumer,
iggy::Identifier::String(stream_name),
-
iggy::Identifier::String(topic_name), 2, 1));
+
iggy::Identifier::String(topic_name), 1, 2));
const auto offset = client.GetConsumerOffset(consumer,
iggy::Identifier::String(stream_name),
iggy::Identifier::String(topic_name), 1);
@@ -1775,7 +1775,7 @@ TEST_F(E2E_ConsumerGroup,
GetConsumerGroupOffsetCanBeReadByNonMember) {
iggy::Identifier::String(group_name)));
const auto named_group =
iggy::Consumer::Group(iggy::Identifier::String(group_name));
ASSERT_NO_THROW(owner_client.StoreConsumerOffset(named_group,
iggy::Identifier::String(stream_name),
-
iggy::Identifier::String(topic_name), 1, 0));
+
iggy::Identifier::String(topic_name), 0, 1));
const auto numeric_group =
iggy::Consumer::Group(iggy::Identifier::Numeric(group.Id()));
const auto offset = reader_client.GetConsumerOffset(numeric_group,
iggy::Identifier::String(stream_name),
@@ -1903,11 +1903,11 @@ TEST_F(E2E_ConsumerGroup,
DeleteConsumerOffsetRemovesOnlyRequestedConsumerAndPar
make_string_identifier(topic_name), "partition_id",
partition_id_bytes(1),
std::move(second_partition_messages)));
ASSERT_NO_THROW(client.StoreConsumerOffset(first_consumer,
iggy::Identifier::String(stream_name),
-
iggy::Identifier::String(topic_name), 1, 0));
+
iggy::Identifier::String(topic_name), 0, 1));
ASSERT_NO_THROW(client.StoreConsumerOffset(first_consumer,
iggy::Identifier::String(stream_name),
-
iggy::Identifier::String(topic_name), 2, 1));
+
iggy::Identifier::String(topic_name), 1, 2));
ASSERT_NO_THROW(client.StoreConsumerOffset(second_consumer,
iggy::Identifier::String(stream_name),
-
iggy::Identifier::String(topic_name), 3, 0));
+
iggy::Identifier::String(topic_name), 0, 3));
ASSERT_NO_THROW(client.DeleteConsumerOffset(first_consumer,
iggy::Identifier::String(stream_name),
iggy::Identifier::String(topic_name), 0));
@@ -2016,7 +2016,7 @@ TEST_F(E2E_ConsumerGroup,
DeleteConsumerOffsetWithoutPermissionThrowsWithoutRemo
make_string_identifier(topic_name), "partition_id",
partition_id_bytes(0),
std::move(messages)));
ASSERT_NO_THROW(client.StoreConsumerOffset(consumer,
iggy::Identifier::String(stream_name),
-
iggy::Identifier::String(topic_name), 1, 0));
+
iggy::Identifier::String(topic_name), 0, 1));
ASSERT_NO_THROW(CreateUser(user_admin_client, username, password,
iggy::ffi::UserStatus::Active, true,
iggy::ffi::Permissions{}));
auto restricted_client = GetLoggedInHighLevelClient(username, password);
@@ -2094,7 +2094,7 @@ TEST_F(E2E_ConsumerGroup,
DeleteConsumerGroupOffsetForUnownedPartitionThrowsWith
iggy::Identifier::String(group_name)));
const auto consumer_group =
iggy::Consumer::Group(iggy::Identifier::String(group_name));
ASSERT_NO_THROW(owner_client.StoreConsumerOffset(consumer_group,
iggy::Identifier::String(stream_name),
-
iggy::Identifier::String(topic_name), 1, 0));
+
iggy::Identifier::String(topic_name), 0, 1));
ASSERT_THROW(non_member_client.DeleteConsumerOffset(consumer_group,
iggy::Identifier::String(stream_name),
iggy::Identifier::String(topic_name), 0),
@@ -2151,7 +2151,7 @@ TEST_F(E2E_ConsumerGroup,
DeleteConsumerOffsetSupportsNamedAndNumericIdentifiers
ASSERT_NO_THROW(client.StoreConsumerOffset(named_consumer,
iggy::Identifier::String(stream_name),
iggy::Identifier::String(topic_name), 0, 0));
ASSERT_NO_THROW(client.StoreConsumerOffset(numeric_consumer,
iggy::Identifier::Numeric(stream.Id()),
-
iggy::Identifier::Numeric(topic.Id()), 1, 0));
+
iggy::Identifier::Numeric(topic.Id()), 0, 1));
ASSERT_NO_THROW(client.DeleteConsumerOffset(named_consumer,
iggy::Identifier::Numeric(stream.Id()),
iggy::Identifier::Numeric(topic.Id()), 0));
diff --git a/foreign/cpp/tests/unit/unit_tests.cpp
b/foreign/cpp/tests/unit/unit_tests.cpp
index 410e91fbd..4f05e27e5 100644
--- a/foreign/cpp/tests/unit/unit_tests.cpp
+++ b/foreign/cpp/tests/unit/unit_tests.cpp
@@ -402,7 +402,7 @@ TEST(IggyBlockingClientTest,
ConsumerOffsetOperationsRejectMaximumPartitionId) {
}
};
- expect_rejection([&] { client.StoreConsumerOffset(consumer, stream, topic,
0, maximum_partition); });
+ expect_rejection([&] { client.StoreConsumerOffset(consumer, stream, topic,
maximum_partition, 0); });
expect_rejection([&] { (void)client.GetConsumerOffset(consumer, stream,
topic, maximum_partition); });
expect_rejection([&] { client.DeleteConsumerOffset(consumer, stream,
topic, maximum_partition); });
}