This is an automated email from the ASF dual-hosted git repository.

hubcio pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iggy.git


The following commit(s) were added to refs/heads/master by this push:
     new e1b1b22a7 fix(go,csharp): remove duplicate consumer groups in 
DeserializeClient/MapClient (#3164)
e1b1b22a7 is described below

commit e1b1b22a749d44f3550b15535d3da1f8ab5fa0e9
Author: Atharva Lade <[email protected]>
AuthorDate: Mon Apr 27 07:10:35 2026 -0500

    fix(go,csharp): remove duplicate consumer groups in 
DeserializeClient/MapClient (#3164)
---
 foreign/csharp/Iggy_SDK/Mappers/BinaryMapper.cs    | 32 ++++++++++------------
 .../binary_response_deserializer.go                | 28 +++++++++----------
 2 files changed, 27 insertions(+), 33 deletions(-)

diff --git a/foreign/csharp/Iggy_SDK/Mappers/BinaryMapper.cs 
b/foreign/csharp/Iggy_SDK/Mappers/BinaryMapper.cs
index cb530a54e..7ec286d8e 100644
--- a/foreign/csharp/Iggy_SDK/Mappers/BinaryMapper.cs
+++ b/foreign/csharp/Iggy_SDK/Mappers/BinaryMapper.cs
@@ -239,26 +239,22 @@ internal static class BinaryMapper
     internal static ClientResponse MapClient(ReadOnlySpan<byte> payload)
     {
         var (response, position) = MapClientInfo(payload, 0);
-        var consumerGroups = new List<ConsumerGroupInfo>();
-        var length = payload.Length;
+        var consumerGroups = new 
List<ConsumerGroupInfo>(response.ConsumerGroupsCount);
 
-        while (position < length)
+        for (var i = 0; i < response.ConsumerGroupsCount; i++)
         {
-            for (var i = 0; i < response.ConsumerGroupsCount; i++)
-            {
-                var streamId = 
BinaryPrimitives.ReadInt32LittleEndian(payload[position..(position + 4)]);
-                var topicId = 
BinaryPrimitives.ReadInt32LittleEndian(payload[(position + 4)..(position + 8)]);
-                var consumerGroupId = 
BinaryPrimitives.ReadInt32LittleEndian(payload[(position + 8)..(position + 
12)]);
-                var consumerGroup
-                    = new ConsumerGroupInfo
-                    {
-                        StreamId = streamId,
-                        TopicId = topicId,
-                        GroupId = consumerGroupId
-                    };
-                consumerGroups.Add(consumerGroup);
-                position += 12;
-            }
+            var streamId = 
BinaryPrimitives.ReadInt32LittleEndian(payload[position..(position + 4)]);
+            var topicId = 
BinaryPrimitives.ReadInt32LittleEndian(payload[(position + 4)..(position + 8)]);
+            var consumerGroupId = 
BinaryPrimitives.ReadInt32LittleEndian(payload[(position + 8)..(position + 
12)]);
+            var consumerGroup
+                = new ConsumerGroupInfo
+                {
+                    StreamId = streamId,
+                    TopicId = topicId,
+                    GroupId = consumerGroupId
+                };
+            consumerGroups.Add(consumerGroup);
+            position += 12;
         }
 
         return new ClientResponse
diff --git a/foreign/go/binary_serialization/binary_response_deserializer.go 
b/foreign/go/binary_serialization/binary_response_deserializer.go
index 81bd35153..045073f55 100644
--- a/foreign/go/binary_serialization/binary_response_deserializer.go
+++ b/foreign/go/binary_serialization/binary_response_deserializer.go
@@ -538,24 +538,22 @@ func MapClientInfo(payload []byte, position int) 
(iggcon.ClientInfo, int) {
 
 func DeserializeClient(payload []byte) *iggcon.ClientInfoDetails {
        clientInfo, position := MapClientInfo(payload, 0)
-       consumerGroups := make([]iggcon.ConsumerGroupInfo, 
clientInfo.ConsumerGroupsCount)
-       length := len(payload)
+       consumerGroups := make([]iggcon.ConsumerGroupInfo, 0, 
clientInfo.ConsumerGroupsCount)
 
-       for position < length {
-               for i := uint32(0); i < clientInfo.ConsumerGroupsCount; i++ {
-                       streamId := binary.LittleEndian.Uint32(payload[position 
: position+4])
-                       topicId := 
binary.LittleEndian.Uint32(payload[position+4 : position+8])
-                       groupId := 
binary.LittleEndian.Uint32(payload[position+8 : position+12])
-
-                       consumerGroup := iggcon.ConsumerGroupInfo{
-                               StreamId: streamId,
-                               TopicId:  topicId,
-                               GroupId:  groupId,
-                       }
-                       consumerGroups = append(consumerGroups, consumerGroup)
-                       position += 12
+       for i := uint32(0); i < clientInfo.ConsumerGroupsCount; i++ {
+               streamId := binary.LittleEndian.Uint32(payload[position : 
position+4])
+               topicId := binary.LittleEndian.Uint32(payload[position+4 : 
position+8])
+               groupId := binary.LittleEndian.Uint32(payload[position+8 : 
position+12])
+
+               consumerGroup := iggcon.ConsumerGroupInfo{
+                       StreamId: streamId,
+                       TopicId:  topicId,
+                       GroupId:  groupId,
                }
+               consumerGroups = append(consumerGroups, consumerGroup)
+               position += 12
        }
+
        return &iggcon.ClientInfoDetails{
                ClientInfo:     clientInfo,
                ConsumerGroups: consumerGroups,

Reply via email to