From 85f90ac8fcf42a631c5490dba6500e2c37df419e Mon Sep 17 00:00:00 2001 From: Cody Soyland Date: Thu, 3 May 2018 16:11:43 -0500 Subject: [PATCH] Log time/version to startup log (Fixes #391) --- holder.go | 22 ++++++++++++++++++++++ server.go | 7 +++++++ 2 files changed, 29 insertions(+) diff --git a/holder.go b/holder.go index 7649caeba..49037d09f 100644 --- a/holder.go +++ b/holder.go @@ -547,6 +547,28 @@ func (h *Holder) loadNodeID() (string, error) { return nodeID, nil } +// Log startup time and version to $DATA_DIR/.startup.log +func (h *Holder) logStartup() error { + time, err := time.Now().MarshalText() + if err != nil { + return errors.Wrap(err, "creating timestamp") + } + logLine := fmt.Sprintf("%s\t%s\n", time, Version) + + f, err := os.OpenFile(h.Path+"/.startup.log", os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0600) + if err != nil { + return errors.Wrap(err, "opening startup log") + } + + defer f.Close() + + if _, err = f.WriteString(logLine); err != nil { + return errors.Wrap(err, "writing startup log") + } + + return nil +} + // HolderSyncer is an active anti-entropy tool that compares the local holder // with a remote holder based on block checksums and resolves differences. type HolderSyncer struct { diff --git a/server.go b/server.go index 06260ae5d..7617d7e69 100644 --- a/server.go +++ b/server.go @@ -17,6 +17,7 @@ package pilosa import ( "context" "fmt" + "log" "net" "net/http" "os" @@ -268,6 +269,12 @@ func (s *Server) Open() error { return errors.New("Must pass a listener option to NewServer") } + // Log startup + err := s.Holder.logStartup() + if err != nil { + log.Println(errors.Wrap(err, "logging startup")) + } + // Get or create NodeID. // Append the NodeID tag to stats.