pdxcodemonkey commented on a change in pull request #669:
URL: https://github.com/apache/geode-native/pull/669#discussion_r500611285
##########
File path: tools/gnmsg/server_messages.py
##########
@@ -36,16 +36,20 @@ def read_bucket_count(message_bytes, offset):
def read_partition_attributes(properties, message_bytes, offset):
- if properties["Parts"] != 2 and properties["Parts"] != 4:
- raise Exception(
- "Don't know how to parse a RESPONSE_CLIENT_PARTITION_ATTRIBUTES
message with "
- + properties["Parts"]
- + " parts (should have 2 or 4 only)."
- )
-
(properties["BucketCount"], offset) = read_bucket_count(message_bytes,
offset)
(properties["ColocatedWith"], offset) = parse_key_or_value(message_bytes,
offset)
- # TODO: parse parts 3 and 4 (partition resolver and list of partition
attributes), if they exist
+ if properties["Parts"] == 4:
+ (properties["PartitionResolverName"], offset) =
parse_key_or_value(message_bytes, offset)
+ # TODO: parse part 4 (list of partition attributes)
+ elif properties["Parts"] == 3:
+ try:
+ (properties["PartitionResolverName"], offset) =
parse_key_or_value(message_bytes, offset)
+ except:
+ raise Exception(
+ "Don't know how to parse a
RESPONSE_CLIENT_PARTITION_ATTRIBUTES message with "
+ + "3 parts and fpa attribute."
+ )
+ # TODO: parse part 3 if it is not partition resolver but list of
partition attributes
Review comment:
Okay, that's what I was wondering - does the Java code do it
differently? And that's clearly a yes. For the record, the C++ code ignores
the possibility of 3 parts entirely, so if this message ever comes back with 3
parts geode-native apparently will get no partition information. If we were to
dig into it, we'd probably find that some version of the server in the dim past
used to send the 3-part variant, and the Java parsing code is left for
compatibility with that ancient version of the protocol.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]