public static Partition FromStream(BigEndianBinaryReader stream) { var partition = new Partition { ErrorCode = stream.ReadInt16(), PartitionId = stream.ReadInt32(), LeaderId = stream.ReadInt32(), Replicas = new List<int>(), Isrs = new List<int>() }; var numReplicas = stream.ReadInt32(); for (int i = 0; i < numReplicas; i++) { partition.Replicas.Add(stream.ReadInt32()); } var numIsr = stream.ReadInt32(); for (int i = 0; i < numIsr; i++) { partition.Isrs.Add(stream.ReadInt32()); } return partition; }
private BrokerRoute TryGetRouteFromCache(string topic, Partition partition) { IKafkaConnection conn; if (_brokerConnectionIndex.TryGetValue(partition.LeaderId, out conn)) { return new BrokerRoute { Topic = topic, PartitionId = partition.PartitionId, Connection = conn }; } return null; }
private BrokerRoute GetCachedRoute(string topic, Partition partition) { var route = TryGetRouteFromCache(topic, partition); //leader could not be found, refresh the broker information and try one more time if (route == null) { RefreshTopicMetadata(topic); route = TryGetRouteFromCache(topic, partition); } if (route != null) return route; throw new LeaderNotFoundException(string.Format("Lead broker cannot be found for parition: {0}, leader: {1}", partition.PartitionId, partition.LeaderId)); }
private BrokerRoute GetCachedRoute(string topic, Partition partition) { var route = TryGetRouteFromCache(topic, partition); if (route != null) return route; throw new LeaderNotFoundException(string.Format("Lead broker cannot be found for partition: {0}, leader: {1}", partition.PartitionId, partition.LeaderId)); }
protected bool Equals(Partition other) { return PartitionId == other.PartitionId; }