Browse Source

DRY up two functions

Evan Huus 11 years ago
parent
commit
4872214cf2
1 changed files with 14 additions and 12 deletions
  1. 14 12
      client.go

+ 14 - 12
client.go

@@ -163,7 +163,7 @@ func (client *Client) Topics() ([]string, error) {
 	return ret, nil
 }
 
-func (client *Client) Replicas(topic string, partitionID int32) ([]int32, error) {
+func (client *Client) getMetadata(topic string, partitionID int32) (*PartitionMetadata, error) {
 	metadata := client.cachedMetadata(topic, partitionID)
 
 	if metadata == nil {
@@ -178,22 +178,24 @@ func (client *Client) Replicas(topic string, partitionID int32) ([]int32, error)
 		return nil, UnknownTopicOrPartition
 	}
 
-	return dupeAndSort(metadata.Replicas), nil
+	return metadata, nil
 }
 
-func (client *Client) ReplicasInSync(topic string, partitionID int32) ([]int32, error) {
-	metadata := client.cachedMetadata(topic, partitionID)
+func (client *Client) Replicas(topic string, partitionID int32) ([]int32, error) {
+	metadata, err := client.getMetadata(topic, partitionID)
 
-	if metadata == nil {
-		err := client.RefreshTopicMetadata(topic)
-		if err != nil {
-			return nil, err
-		}
-		metadata = client.cachedMetadata(topic, partitionID)
+	if err != nil {
+		return nil, err
 	}
 
-	if metadata == nil {
-		return nil, UnknownTopicOrPartition
+	return dupeAndSort(metadata.Replicas), nil
+}
+
+func (client *Client) ReplicasInSync(topic string, partitionID int32) ([]int32, error) {
+	metadata, err := client.getMetadata(topic, partitionID)
+
+	if err != nil {
+		return nil, err
 	}
 
 	return dupeAndSort(metadata.Isr), nil