Remove log.Fatal() calls and bubble up errors

This commit is contained in:
Riccardo Biraghi
2018-04-10 13:27:24 +01:00
parent 7c36a9ceea
commit 2397966a86
4 changed files with 22 additions and 9 deletions

View File

@@ -58,7 +58,11 @@ func doMain() error {
// Start signal handler
signalControl := signalHandler(name)
logConfig()
err = logConfig()
if err != nil {
logTermination(err)
return err
}
err = createVolume("/mnt/mqm")
if err != nil {
logTermination(err)

View File

@@ -16,6 +16,8 @@ limitations under the License.
package main
import (
"errors"
"fmt"
"io/ioutil"
"os/user"
"runtime"
@@ -90,12 +92,12 @@ func readMounts() error {
if !detected {
log.Print("No volume detected. Persistent messages may be lost")
} else {
checkFS("/mnt/mqm")
return checkFS("/mnt/mqm")
}
return nil
}
func logConfig() {
func logConfig() error {
log.Printf("CPU architecture: %v", runtime.GOARCH)
if runtime.GOOS == "linux" {
var err error
@@ -114,8 +116,12 @@ func logConfig() {
}
logUser()
logCapabilities()
readMounts()
err = readMounts()
if err != nil {
return err
}
} else {
log.Fatalf("Unsupported platform: %v", runtime.GOOS)
return errors.New(fmt.Sprintf("Unsupported platform: %v", runtime.GOOS))
}
return nil
}

View File

@@ -18,6 +18,8 @@ limitations under the License.
package main
import (
"errors"
"fmt"
"golang.org/x/sys/unix"
)
@@ -33,18 +35,19 @@ var fsTypes = map[int64]string{
0x794c7630: "overlayfs",
}
func checkFS(path string) {
func checkFS(path string) error {
statfs := &unix.Statfs_t{}
err := unix.Statfs(path, statfs)
if err != nil {
log.Println(err)
return
return nil
}
t := fsTypes[statfs.Type]
switch t {
case "aufs", "overlayfs", "tmpfs":
log.Fatalf("Error: %v uses unsupported filesystem type %v", path, t)
return errors.New(fmt.Sprintf("Error: %v uses unsupported filesystem type %v", path, t))
default:
log.Printf("Detected %v has filesystem type '%v'", path, t)
return nil
}
}

View File

@@ -19,6 +19,6 @@ package main
// Dummy version of this function, only for non-Linux systems.
// Having this allows unit tests to be run on other platforms (e.g. macOS)
func checkFS(path string) {
func checkFS(path string) error {
return
}