From c9cebe21bf2216d3e5f3163bfb039479a43b5b52 Mon Sep 17 00:00:00 2001 From: Seebs Date: Mon, 1 Apr 2019 19:34:34 -0500 Subject: [PATCH] unbreak holder node ID logic The attempt to fix up the logic broke returns from loadNodeID() in some cases, because it was overwriting the node ID generated in the IsNotExist case. --- holder.go | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/holder.go b/holder.go index 40b21e538..41ca16a9d 100644 --- a/holder.go +++ b/holder.go @@ -587,27 +587,23 @@ func (h *Holder) setFileLimit() { func (h *Holder) loadNodeID() (string, error) { idPath := path.Join(h.Path, ".id") - nodeID := "" h.Logger.Printf("load NodeID: %s", idPath) if err := os.MkdirAll(h.Path, 0777); err != nil { return "", errors.Wrap(err, "creating directory") } nodeIDBytes, err := ioutil.ReadFile(idPath) - // apparently it's safe to call IsNotExist on something that might - // be nil: - // https://github.com/golang/go/issues/31065 - if os.IsNotExist(err) { - nodeID = uuid.NewV4().String() - err = ioutil.WriteFile(idPath, []byte(nodeID), 0600) - if err != nil { - return "", errors.Wrap(err, "writing file") - } - } else if err != nil { + if err == nil { + return strings.TrimSpace(string(nodeIDBytes)), nil + } + if !os.IsNotExist(err) { return "", errors.Wrap(err, "reading file") } - nodeID = strings.TrimSpace(string(nodeIDBytes)) - + nodeID := uuid.NewV4().String() + err = ioutil.WriteFile(idPath, []byte(nodeID), 0600) + if err != nil { + return "", errors.Wrap(err, "writing file") + } return nodeID, nil }