add a mutex to guard w.kv
diff --git a/naming/etcd/etcd.go b/naming/etcd/etcd.go
index 8a877ed..9072e85 100644
--- a/naming/etcd/etcd.go
+++ b/naming/etcd/etcd.go
@@ -92,6 +92,7 @@
 
 type watcher struct {
 	wr etcdcl.Watcher
+	mu sync.Mutex
 	kv map[string]string
 }
 
@@ -123,6 +124,7 @@
 		if resp.Node.Dir {
 			continue
 		}
+		w.mu.Lock()
 		switch resp.Action {
 		case "set":
 			if resp.PrevNode == nil {
@@ -149,6 +151,7 @@
 			})
 			delete(w.kv, resp.Node.Key)
 		}
+		w.mu.Unlock()
 		return nu, nil
 	}
 }