Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions cmd/event_handler/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ func processEvent(ctx context.Context) error {
if err != nil {
return fmt.Errorf("failed to open event log: %s", err)
}
defer logFile.Close()
defer func() { _ = logFile.Close() }()

log.SetOutput(logFile)
log.Printf("event: %s, node: %d, success: %s, details: %s\n", *event, *nodeID, *success, *details)
Expand Down Expand Up @@ -68,7 +68,7 @@ func processEvent(ctx context.Context) error {
}
}

return nil
return logFile.Sync()
}

func evaluateClusterState(ctx context.Context, conn *pgx.Conn, node *flypg.Node) error {
Expand Down
4 changes: 1 addition & 3 deletions internal/flycheck/vm.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,7 @@ func CheckVM(checks *check.CheckSuite) *check.CheckSuite {
return checkDisk("/data/")
})

checks.AddCheck("checkLoad", func() (string, error) {
return checkLoad()
})
checks.AddCheck("checkLoad", checkLoad)

pressureNames := []string{"memory", "cpu", "io"}
for _, n := range pressureNames {
Expand Down
22 changes: 17 additions & 5 deletions internal/flypg/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ func ReadFromFile(path string) (ConfigMap, error) {
if err != nil {
return nil, err
}
defer file.Close()
defer func() { _ = file.Close() }()

conf := ConfigMap{}
scanner := bufio.NewScanner(file)
Expand All @@ -138,7 +138,7 @@ func writeInternalConfigFile(c Config) error {
if err != nil {
return err
}
defer file.Close()
defer func() { _ = file.Close() }()

internal := c.InternalConfig()

Expand All @@ -147,19 +147,25 @@ func writeInternalConfigFile(c Config) error {
file.Write([]byte(entry))
}

if err := file.Sync(); err != nil {
return fmt.Errorf("failed to sync file: %s", err)
} else if err := file.Close(); err != nil {
return fmt.Errorf("failed to close file: %s", err)
}

if err := utils.SetFileOwnership(c.InternalConfigFile(), "postgres"); err != nil {
return fmt.Errorf("failed to set file ownership on %s: %s", c.InternalConfigFile(), err)
}

return file.Sync()
return nil
}

func writeUserConfigFile(c Config) error {
file, err := os.Create(c.UserConfigFile())
if err != nil {
return err
}
defer file.Close()
defer func() { _ = file.Close() }()

internal := c.InternalConfig()

Expand All @@ -169,9 +175,15 @@ func writeUserConfigFile(c Config) error {
file.Write([]byte(entry))
}

if err := file.Sync(); err != nil {
return fmt.Errorf("failed to sync file: %s", err)
} else if err := file.Close(); err != nil {
return fmt.Errorf("failed to close file: %s", err)
}

if err := utils.SetFileOwnership(c.UserConfigFile(), "postgres"); err != nil {
return fmt.Errorf("failed to set file ownership on %s: %s", c.UserConfigFile(), err)
}

return file.Sync()
return nil
}
28 changes: 16 additions & 12 deletions internal/flypg/flypg.go
Original file line number Diff line number Diff line change
Expand Up @@ -80,25 +80,29 @@ func (c *FlyPGConfig) CurrentConfig() (ConfigMap, error) {
func (c *FlyPGConfig) initialize() error {
c.SetDefaults()

internal, err := os.Create(c.internalConfigFilePath)
file, err := os.Create(c.internalConfigFilePath)
if err != nil {
return err
}
defer func() {
if err := internal.Close(); err != nil {
fmt.Printf("failed to close file: %s\n", err)
}
}()
defer func() { _ = file.Close() }()

user, err := os.Create(c.userConfigFilePath)
if err := file.Sync(); err != nil {
return fmt.Errorf("failed to sync file: %s", err)
} else if err := file.Close(); err != nil {
return fmt.Errorf("failed to close file: %s", err)
}

file, err = os.Create(c.userConfigFilePath)
if err != nil {
return err
}
defer func() {
if err := user.Close(); err != nil {
fmt.Printf("failed to close file: %s\n", err)
}
}()
defer func() { _ = file.Close() }()

if err := file.Sync(); err != nil {
return fmt.Errorf("failed to sync file: %s", err)
} else if err := file.Close(); err != nil {
return fmt.Errorf("failed to close file: %s", err)
}

return nil
}
2 changes: 1 addition & 1 deletion internal/flypg/node.go
Original file line number Diff line number Diff line change
Expand Up @@ -522,7 +522,7 @@ func (n *Node) setDefaultHBA() error {
if err != nil {
return err
}
defer file.Close()
defer func() { _ = file.Close() }()

for _, entry := range entries {
str := fmt.Sprintf("%s %s %s %s %s\n", entry.Type, entry.Database, entry.User, entry.Address, entry.Method)
Expand Down
8 changes: 4 additions & 4 deletions internal/flypg/pg.go
Original file line number Diff line number Diff line change
Expand Up @@ -249,19 +249,19 @@ func (c *PGConfig) initialize() error {
}

func (c *PGConfig) writePGConfigEntries(entries []string) error {
f, err := os.OpenFile(c.configFilePath, os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0600)
file, err := os.Create(c.configFilePath)
if err != nil {
return err
}
defer f.Close()
defer func() { _ = file.Close() }()

for _, entry := range entries {
if _, err := f.WriteString(entry); err != nil {
if _, err := file.WriteString(entry); err != nil {
return fmt.Errorf("failed append configuration entry: %s", err)
}
}

return f.Sync()
return file.Sync()
}

func memTotalInBytes() (int64, error) {
Expand Down
13 changes: 9 additions & 4 deletions internal/flypg/repmgr.go
Original file line number Diff line number Diff line change
Expand Up @@ -101,16 +101,21 @@ func (r *RepMgr) initialize() error {
if err != nil {
return nil
}
defer file.Close()
defer func() { _ = file.Close() }()

entries := []string{"include 'repmgr.internal.conf'\n", "include 'repmgr.user.conf'\n"}

for _, entry := range entries {
if _, err := file.WriteString(entry); err != nil {
return fmt.Errorf("failed append configuration entry: %s", err)
}
}

if err := file.Sync(); err != nil {
return fmt.Errorf("failed to sync file: %s", err)
} else if err := file.Close(); err != nil {
return fmt.Errorf("failed to close file: %s", err)
}

if err := r.writePasswdConf(); err != nil {
return fmt.Errorf("failed creating pgpass file: %s", err)
}
Expand Down Expand Up @@ -231,11 +236,11 @@ func (r *RepMgr) clonePrimary(ipStr string) error {

func (r *RepMgr) writePasswdConf() error {
path := "/data/.pgpass"
file, err := os.OpenFile(path, os.O_CREATE|os.O_RDWR|os.O_TRUNC, 0600)
file, err := os.Create(path)
if err != nil {
return fmt.Errorf("failed to open repmgr password file: %s", err)
}
defer file.Close()
defer func() { _ = file.Close() }()

if err := utils.SetFileOwnership(path, "postgres"); err != nil {
return fmt.Errorf("failed to set file ownership: %s", err)
Expand Down
8 changes: 4 additions & 4 deletions internal/flypg/restore.go
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ func grantLocalAccess() error {
if err != nil {
return err
}
defer file.Close()
defer func() { _ = file.Close() }()

perm := []byte("host all postgres ::0/0 trust")
_, err = file.Write(perm)
Expand All @@ -143,7 +143,7 @@ func restoreHBAFile() error {
if err != nil {
return err
}
defer file.Close()
defer func() { _ = file.Close() }()

// revert back to our original config
_, err = file.Write(data)
Expand All @@ -160,11 +160,11 @@ func restoreHBAFile() error {
}

func setRestoreLock() error {
file, err := os.OpenFile(restoreLockFile, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0600)
file, err := os.Create(restoreLockFile)
if err != nil {
return err
}
defer file.Close()
defer func() { _ = file.Close() }()

_, err = file.WriteString(os.Getenv("FLY_APP_NAME"))
if err != nil {
Expand Down
21 changes: 11 additions & 10 deletions internal/flypg/ssh.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,32 +37,33 @@ func writeSSHKey() error {
func writePrivateKey() error {
key := os.Getenv("SSH_KEY")

keyFile, err := os.Create(privateKeyFile)
file, err := os.Create(privateKeyFile)
if err != nil {
return err
}
defer keyFile.Close()
_, err = keyFile.Write([]byte(key))
defer func() { _ = file.Close() }()

_, err = file.Write([]byte(key))
if err != nil {
return err
return fmt.Errorf("failed to write contents to pvt key: %s", err)
}

return keyFile.Sync()
return file.Sync()
}

func writePublicKey() error {
cert := os.Getenv("SSH_CERT")

certFile, err := os.Create(publicKeyFile)
file, err := os.Create(publicKeyFile)
if err != nil {
return err
}
defer certFile.Close()
defer func() { _ = file.Close() }()

_, err = certFile.Write([]byte(cert))
_, err = file.Write([]byte(cert))
if err != nil {
return err
return fmt.Errorf("failed to write contents to pub key: %s", err)
}

return certFile.Sync()
return file.Sync()
}
2 changes: 1 addition & 1 deletion internal/supervisor/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,5 @@ func fatalOnErr(err error) {
func fatal(i ...interface{}) {
fmt.Fprint(os.Stderr, "hivemind: ")
fmt.Fprintln(os.Stderr, i...)
os.Exit(1)
panic(i)
}