From 3566d08c52e096bfc48a81f6b4e07a06c887a88c Mon Sep 17 00:00:00 2001 From: Harshavardhana Date: Sun, 25 Oct 2015 11:11:29 -0700 Subject: [PATCH] Update new changes in probe and add setAppInfo --- main.go | 4 +- .../minio/minio-xl/pkg/probe/probe.go | 40 ++++++++++++++----- .../minio/minio-xl/pkg/probe/probe_test.go | 4 +- vendor/vendor.json | 4 +- 4 files changed, 37 insertions(+), 15 deletions(-) diff --git a/main.go b/main.go index 016ff0cc9..506e1330d 100644 --- a/main.go +++ b/main.go @@ -148,8 +148,8 @@ VERSION: } func main() { - // Set projet's root source path. - probe.SetRoot() + probe.Init() // Set project's root source path. + probe.SetAppInfo("Release-Tag", minioReleaseTag) app := registerApp() app.Before = func(c *cli.Context) error { diff --git a/vendor/github.com/minio/minio-xl/pkg/probe/probe.go b/vendor/github.com/minio/minio-xl/pkg/probe/probe.go index b18069585..576f5d88e 100644 --- a/vendor/github.com/minio/minio-xl/pkg/probe/probe.go +++ b/vendor/github.com/minio/minio-xl/pkg/probe/probe.go @@ -29,17 +29,32 @@ import ( "github.com/dustin/go-humanize" ) -// Root path to the project's source. -var rootPath string +var ( + // Root path to the project's source. + rootPath string + // App specific info to be included reporting. + appInfo map[string]string +) -// SetRoot sets the project's root path. Root path is automatically -// determined from the calling function's source file location. It is -// typically called from the main() function. -func SetRoot() { +// Init initializes probe. It is typically called once from the main() +// function or at least from any source file placed at the top level +// source directory. +func Init() { + // Root path is automatically determined from the calling function's source file location. // Catch the calling function's source file path. _, file, _, _ := runtime.Caller(1) // Save the directory alone. rootPath = filepath.Dir(file) + + appInfo = make(map[string]string) +} + +// SetAppInfo sets app speific key:value to report additionally during call trace dump. +// Eg. SetAppInfo("ReleaseTag", "RELEASE_42_0") +// SetAppInfo("Version", "42.0") +// SetAppInfo("Commit", "00611fb") +func SetAppInfo(key, value string) { + appInfo[key] = value } // GetSysInfo returns useful system statistics. @@ -102,7 +117,7 @@ func NewError(e error) *Error { return nil } Err := Error{lock: sync.RWMutex{}, Cause: e, CallTrace: []TracePoint{}, SysInfo: GetSysInfo()} - return Err.trace() + return Err.trace() // Skip NewError and only instead register the NewError's caller. } // Trace records the point at which it is invoked. @@ -118,7 +133,8 @@ func (e *Error) Trace(fields ...string) *Error { return e.trace(fields...) } -// Internal trace - records the point at which it is invoked. +// trace records caller's caller. It is intended for probe's own +// internal use. Take a look at probe.NewError for example. func (e *Error) trace(fields ...string) *Error { if e == nil { return nil @@ -182,7 +198,13 @@ func (e *Error) String() string { } } - str += "\n" + " Host:" + e.SysInfo["host.name"] + " | " + str += "\n " + + for key, value := range appInfo { + str += key + ":" + value + " | " + } + + str += "Host:" + e.SysInfo["host.name"] + " | " str += "OS:" + e.SysInfo["host.os"] + " | " str += "Arch:" + e.SysInfo["host.arch"] + " | " str += "Lang:" + e.SysInfo["host.lang"] + " | " diff --git a/vendor/github.com/minio/minio-xl/pkg/probe/probe_test.go b/vendor/github.com/minio/minio-xl/pkg/probe/probe_test.go index 594adc963..a5e4db2aa 100644 --- a/vendor/github.com/minio/minio-xl/pkg/probe/probe_test.go +++ b/vendor/github.com/minio/minio-xl/pkg/probe/probe_test.go @@ -43,8 +43,8 @@ func testDummy2() *probe.Error { } func (s *MySuite) TestProbe(c *C) { - probe.SetRoot() // Set project's root source path. - + probe.Init() // Set project's root source path. + probe.SetAppInfo("Release-Tag", "RELEASE.Sat-19-Sep-2015-06-15-16-GMT") es := testDummy2().Trace("TopOfStack") // Uncomment the following Println to visually test probe call trace. // fmt.Println("Expecting a simulated error here.", es) diff --git a/vendor/vendor.json b/vendor/vendor.json index d9e2b8076..5d29f9e85 100644 --- a/vendor/vendor.json +++ b/vendor/vendor.json @@ -64,8 +64,8 @@ }, { "path": "github.com/minio/minio-xl/pkg/probe", - "revision": "0ccfa2965bc93efde3efda8b0f0779690f192d4f", - "revisionTime": "2015-10-23T19:31:44-07:00" + "revision": "a7b8623fd546965505f18172717393f5de4139a2", + "revisionTime": "2015-10-25T03:03:43-07:00" }, { "path": "github.com/minio/minio-xl/pkg/quick",