From 5d2950fea282b82aafab32e2ac0e0c5f328234a1 Mon Sep 17 00:00:00 2001 From: Richard Ramos Date: Tue, 5 Mar 2024 16:06:23 -0400 Subject: [PATCH 1/2] fix: repeated fields are packed in proto3 --- waku/waku_metadata/rpc.nim | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/waku/waku_metadata/rpc.nim b/waku/waku_metadata/rpc.nim index dd6034d814..755dedb84e 100644 --- a/waku/waku_metadata/rpc.nim +++ b/waku/waku_metadata/rpc.nim @@ -23,9 +23,7 @@ proc encode*(rpc: WakuMetadataRequest): ProtoBuffer = var pb = initProtoBuffer() pb.write3(1, rpc.clusterId) - - for shard in rpc.shards: - pb.write3(2, shard) + pb.writePacked(2, rpc.shards) pb.finish3() pb @@ -41,7 +39,7 @@ proc decode*(T: type WakuMetadataRequest, buffer: seq[byte]): ProtoResult[T] = rpc.clusterId = some(clusterId.uint32) var shards: seq[uint64] - if ?pb.getRepeatedField(2, shards): + if ?pb.getPackedRepeatedField(2, shards): for shard in shards: rpc.shards.add(shard.uint32) @@ -51,9 +49,7 @@ proc encode*(rpc: WakuMetadataResponse): ProtoBuffer = var pb = initProtoBuffer() pb.write3(1, rpc.clusterId) - - for shard in rpc.shards: - pb.write3(2, shard) + pb.writePacked(2, rpc.shards) pb.finish3() pb @@ -69,7 +65,7 @@ proc decode*(T: type WakuMetadataResponse, buffer: seq[byte]): ProtoResult[T] = rpc.clusterId = some(clusterId.uint32) var shards: seq[uint64] - if ?pb.getRepeatedField(2, shards): + if ?pb.getPackedRepeatedField(2, shards): for shard in shards: rpc.shards.add(shard.uint32) From fc35ba3d728f05c895617e8f67989937744b4672 Mon Sep 17 00:00:00 2001 From: Richard Ramos Date: Wed, 6 Mar 2024 11:03:58 -0400 Subject: [PATCH 2/2] fix: add new field for shards in metadata protobuffers to avoid breaking change and deprecate original field --- waku/waku_metadata/rpc.nim | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/waku/waku_metadata/rpc.nim b/waku/waku_metadata/rpc.nim index 755dedb84e..fb85b774ef 100644 --- a/waku/waku_metadata/rpc.nim +++ b/waku/waku_metadata/rpc.nim @@ -23,7 +23,9 @@ proc encode*(rpc: WakuMetadataRequest): ProtoBuffer = var pb = initProtoBuffer() pb.write3(1, rpc.clusterId) - pb.writePacked(2, rpc.shards) + for shard in rpc.shards: + pb.write3(2, shard) # deprecated + pb.writePacked(3, rpc.shards) pb.finish3() pb @@ -39,7 +41,13 @@ proc decode*(T: type WakuMetadataRequest, buffer: seq[byte]): ProtoResult[T] = rpc.clusterId = some(clusterId.uint32) var shards: seq[uint64] - if ?pb.getPackedRepeatedField(2, shards): + if ?pb.getPackedRepeatedField(3, shards): + for shard in shards: + rpc.shards.add(shard.uint32) + elif ?pb.getPackedRepeatedField(2, shards): + for shard in shards: + rpc.shards.add(shard.uint32) + elif ?pb.getRepeatedField(2, shards): for shard in shards: rpc.shards.add(shard.uint32) @@ -49,7 +57,9 @@ proc encode*(rpc: WakuMetadataResponse): ProtoBuffer = var pb = initProtoBuffer() pb.write3(1, rpc.clusterId) - pb.writePacked(2, rpc.shards) + for shard in rpc.shards: + pb.write3(2, shard) # deprecated + pb.writePacked(3, rpc.shards) pb.finish3() pb @@ -65,8 +75,16 @@ proc decode*(T: type WakuMetadataResponse, buffer: seq[byte]): ProtoResult[T] = rpc.clusterId = some(clusterId.uint32) var shards: seq[uint64] - if ?pb.getPackedRepeatedField(2, shards): + + if ?pb.getPackedRepeatedField(3, shards): for shard in shards: rpc.shards.add(shard.uint32) + elif ?pb.getPackedRepeatedField(2, shards): + for shard in shards: + rpc.shards.add(shard.uint32) + elif ?pb.getRepeatedField(2, shards): + for shard in shards: + rpc.shards.add(shard.uint32) + ok(rpc)