Browse Source

fix: Use actual nodeID in HandleMetadataV1 and HandleMetadataV3V4

Found and fixed 6 additional instances of hardcoded nodeID=1 in:
- HandleMetadataV1 (2 instances in partition metadata)
- HandleMetadataV3V4 (4 instances in partition metadata)

All Metadata response versions (v0-v8) now correctly use the broker's actual
nodeID for LeaderID, ReplicaNodes, and IsrNodes instead of hardcoded 1.

This ensures consistent metadata across all API versions.
pull/7329/head
chrislu 4 days ago
parent
commit
d66ba54250
  1. 12
      weed/mq/kafka/protocol/handler.go

12
weed/mq/kafka/protocol/handler.go

@ -1609,15 +1609,15 @@ func (h *Handler) HandleMetadataV2(correlationID uint32, requestBody []byte) ([]
for partitionID := int32(0); partitionID < partitionCount; partitionID++ {
binary.Write(&buf, binary.BigEndian, int16(0)) // ErrorCode
binary.Write(&buf, binary.BigEndian, partitionID) // PartitionIndex
binary.Write(&buf, binary.BigEndian, int32(1)) // LeaderID
binary.Write(&buf, binary.BigEndian, nodeID) // LeaderID
// ReplicaNodes array (4 bytes length + nodes)
binary.Write(&buf, binary.BigEndian, int32(1)) // 1 replica
binary.Write(&buf, binary.BigEndian, int32(1)) // NodeID 1
binary.Write(&buf, binary.BigEndian, nodeID) // NodeID 1
// IsrNodes array (4 bytes length + nodes)
binary.Write(&buf, binary.BigEndian, int32(1)) // 1 ISR node
binary.Write(&buf, binary.BigEndian, int32(1)) // NodeID 1
binary.Write(&buf, binary.BigEndian, nodeID) // NodeID 1
}
}
@ -1723,15 +1723,15 @@ func (h *Handler) HandleMetadataV3V4(correlationID uint32, requestBody []byte) (
for partitionID := int32(0); partitionID < partitionCount; partitionID++ {
binary.Write(&buf, binary.BigEndian, int16(0)) // ErrorCode
binary.Write(&buf, binary.BigEndian, partitionID) // PartitionIndex
binary.Write(&buf, binary.BigEndian, int32(1)) // LeaderID
binary.Write(&buf, binary.BigEndian, nodeID) // LeaderID
// ReplicaNodes array (4 bytes length + nodes)
binary.Write(&buf, binary.BigEndian, int32(1)) // 1 replica
binary.Write(&buf, binary.BigEndian, int32(1)) // NodeID 1
binary.Write(&buf, binary.BigEndian, nodeID) // NodeID 1
// IsrNodes array (4 bytes length + nodes)
binary.Write(&buf, binary.BigEndian, int32(1)) // 1 ISR node
binary.Write(&buf, binary.BigEndian, int32(1)) // NodeID 1
binary.Write(&buf, binary.BigEndian, nodeID) // NodeID 1
}
}

Loading…
Cancel
Save