diff --git a/discovery/discovery.go b/discovery/discovery.go index 9ea7ea65f..3dbb7b470 100644 --- a/discovery/discovery.go +++ b/discovery/discovery.go @@ -181,6 +181,9 @@ func (d *discovery) createSelf(contents string) error { resp, err := d.c.Create(ctx, d.selfKey(), contents, -1) cancel() if err != nil { + if err == client.ErrKeyExists { + return ErrDuplicateID + } return err } diff --git a/etcdmain/etcd.go b/etcdmain/etcd.go index 6fd2d64db..9be2cd2bb 100644 --- a/etcdmain/etcd.go +++ b/etcdmain/etcd.go @@ -189,7 +189,13 @@ func Main() { err = startProxy() } if err != nil { - log.Fatalf("etcd: %v", err) + switch err { + case discovery.ErrDuplicateID: + log.Fatalf("etcd: member %s has previously registered with discovery service (%s), but the data-dir (%s) on disk cannot be found.", + *name, *durl, *dir) + default: + log.Fatalf("etcd: %v", err) + } } <-stopped }