Browse Source

etcdserver: add isKeyNotFound helper func

Yicheng Qin 11 years ago
parent
commit
9ad4a8e33a
1 changed files with 13 additions and 9 deletions
  1. 13 9
      etcdserver/cluster_store.go

+ 13 - 9
etcdserver/cluster_store.go

@@ -80,7 +80,7 @@ func (s *clusterStore) Get() Cluster {
 	c.id = s.id
 	c.id = s.id
 	e, err := s.Store.Get(storeMembersPrefix, true, true)
 	e, err := s.Store.Get(storeMembersPrefix, true, true)
 	if err != nil {
 	if err != nil {
-		if v, ok := err.(*etcdErr.Error); ok && v.ErrorCode == etcdErr.EcodeKeyNotFound {
+		if isKeyNotFound(err) {
 			return *c
 			return *c
 		}
 		}
 		log.Panicf("get member should never fail: %v", err)
 		log.Panicf("get member should never fail: %v", err)
@@ -132,16 +132,15 @@ func (s *clusterStore) Remove(id uint64) {
 
 
 func (s *clusterStore) IsRemoved(id uint64) bool {
 func (s *clusterStore) IsRemoved(id uint64) bool {
 	_, err := s.Store.Get(removedMemberStoreKey(id), false, false)
 	_, err := s.Store.Get(removedMemberStoreKey(id), false, false)
-	switch v := err.(type) {
-	case nil:
+	switch {
+	case err == nil:
 		return true
 		return true
-	case *etcdErr.Error:
-		if v.ErrorCode == etcdErr.EcodeKeyNotFound {
-			return false
-		}
+	case isKeyNotFound(err):
+		return false
+	default:
+		log.Panicf("unexpected error when getting removed member %x: %v", id, err)
+		return false
 	}
 	}
-	log.Panicf("unexpected getting removed member error: %v", err)
-	return false
 }
 }
 
 
 // Sender creates the default production sender used to transport raft messages
 // Sender creates the default production sender used to transport raft messages
@@ -233,3 +232,8 @@ func httpPost(c *http.Client, url string, cid uint64, data []byte) bool {
 		return false
 		return false
 	}
 	}
 }
 }
+
+func isKeyNotFound(err error) bool {
+	e, ok := err.(*etcdErr.Error)
+	return ok && e.ErrorCode == etcdErr.EcodeKeyNotFound
+}