mirror of
https://github.com/featurebasedb/featurebase.git
synced 2026-09-07 17:15:56 +00:00
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.
This commit is contained in:
parent
79451bd53c
commit
c9cebe21bf
1 changed files with 9 additions and 13 deletions
22
holder.go
22
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
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue