Repository: incubator-trafficcontrol Updated Branches: refs/heads/master 9a71a0af3 -> 48fac1731
Fix TM2 event times missing Project: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/commit/370a27b2 Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/tree/370a27b2 Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/diff/370a27b2 Branch: refs/heads/master Commit: 370a27b2de649c5bc1f5a45083c70b1e94371b16 Parents: 9a71a0a Author: Robert Butts <robert.o.bu...@gmail.com> Authored: Wed Feb 1 13:43:35 2017 -0700 Committer: Dave Neuman <neu...@apache.org> Committed: Wed Feb 1 13:54:14 2017 -0700 ---------------------------------------------------------------------- .../traffic_monitor/deliveryservice/stat.go | 2 +- .../traffic_monitor/health/cache.go | 2 +- .../traffic_monitor/health/event.go | 24 ++++++++++++-------- .../traffic_monitor/manager/peer.go | 4 ++-- 4 files changed, 19 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/370a27b2/traffic_monitor_golang/traffic_monitor/deliveryservice/stat.go ---------------------------------------------------------------------- diff --git a/traffic_monitor_golang/traffic_monitor/deliveryservice/stat.go b/traffic_monitor_golang/traffic_monitor/deliveryservice/stat.go index f6d83f9..b50f20e 100644 --- a/traffic_monitor_golang/traffic_monitor/deliveryservice/stat.go +++ b/traffic_monitor_golang/traffic_monitor/deliveryservice/stat.go @@ -238,7 +238,7 @@ func addDSPerSecStats(dsName enum.DeliveryServiceName, stat dsdata.Stat, lastSta stat.CommonStats.IsAvailable.Value = false stat.CommonStats.IsHealthy.Value = false stat.CommonStats.ErrorStr.Value = errStr - events.Add(health.Event{Time: time.Now(), Unix: time.Now().Unix(), Description: errStr, Name: dsName.String(), Hostname: dsName.String(), Type: "Delivery Service", Available: stat.CommonStats.IsAvailable.Value}) + events.Add(health.Event{Time: health.Time(time.Now()), Description: errStr, Name: dsName.String(), Hostname: dsName.String(), Type: "Delivery Service", Available: stat.CommonStats.IsAvailable.Value}) } dsStats.DeliveryService[dsName] = stat http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/370a27b2/traffic_monitor_golang/traffic_monitor/health/cache.go ---------------------------------------------------------------------- diff --git a/traffic_monitor_golang/traffic_monitor/health/cache.go b/traffic_monitor_golang/traffic_monitor/health/cache.go index 7cf6eb5..42ce5a9 100644 --- a/traffic_monitor_golang/traffic_monitor/health/cache.go +++ b/traffic_monitor_golang/traffic_monitor/health/cache.go @@ -196,7 +196,7 @@ func CalcAvailability(results []cache.Result, pollerName string, statResultHisto if available, ok := localStates.GetCache(result.ID); !ok || available.IsAvailable != isAvailable { log.Infof("Changing state for %s was: %t now: %t because %s poller: %v error: %v", result.ID, available.IsAvailable, isAvailable, whyAvailable, pollerName, result.Error) - events.Add(Event{Time: time.Now(), Description: whyAvailable + " (" + pollerName + ")", Name: string(result.ID), Hostname: string(result.ID), Type: toData.ServerTypes[result.ID].String(), Available: isAvailable}) + events.Add(Event{Time: Time(time.Now()), Description: whyAvailable + " (" + pollerName + ")", Name: string(result.ID), Hostname: string(result.ID), Type: toData.ServerTypes[result.ID].String(), Available: isAvailable}) } localStates.SetCache(result.ID, peer.IsAvailable{IsAvailable: isAvailable}) http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/370a27b2/traffic_monitor_golang/traffic_monitor/health/event.go ---------------------------------------------------------------------- diff --git a/traffic_monitor_golang/traffic_monitor/health/event.go b/traffic_monitor_golang/traffic_monitor/health/event.go index 4dd40a3..7255031 100644 --- a/traffic_monitor_golang/traffic_monitor/health/event.go +++ b/traffic_monitor_golang/traffic_monitor/health/event.go @@ -20,22 +20,28 @@ package health */ import ( + "fmt" "sync" "time" "github.com/apache/incubator-trafficcontrol/traffic_monitor_golang/common/log" ) +type Time time.Time + +func (t Time) MarshalJSON() ([]byte, error) { + return []byte(fmt.Sprintf("%d", time.Time(t).Unix())), nil +} + // Event represents an event change in aggregated data. For example, a cache being marked as unavailable. type Event struct { - Time time.Time `json:"-"` - Index uint64 `json:"index"` - Unix int64 `json:"time"` - Description string `json:"description"` - Name string `json:"name"` - Hostname string `json:"hostname"` - Type string `json:"type"` - Available bool `json:"isAvailable"` + Time Time `json:"time"` + Index uint64 `json:"index"` + Description string `json:"description"` + Name string `json:"name"` + Hostname string `json:"hostname"` + Type string `json:"type"` + Available bool `json:"isAvailable"` } // Events provides safe access for multiple goroutines readers and a single writer to a stored Events slice. @@ -68,7 +74,7 @@ func (o *ThreadsafeEvents) Get() []Event { // Add adds the given event. This is threadsafe for one writer, multiple readers. This MUST NOT be called by multiple threads, as it non-atomically fetches and adds. func (o *ThreadsafeEvents) Add(e Event) { // host="hostname", type=EDGE, available=true, msg="REPORTED - available" - log.Eventf(e.Time, "host=\"%s\", type=%s, available=%t, msg=\"%s\"", e.Hostname, e.Type, e.Available, e.Description) + log.Eventf(time.Time(e.Time), "host=\"%s\", type=%s, available=%t, msg=\"%s\"", e.Hostname, e.Type, e.Available, e.Description) o.m.Lock() // TODO test removing events := copyEvents(*o.events) e.Index = *o.nextIndex http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/370a27b2/traffic_monitor_golang/traffic_monitor/manager/peer.go ---------------------------------------------------------------------- diff --git a/traffic_monitor_golang/traffic_monitor/manager/peer.go b/traffic_monitor_golang/traffic_monitor/manager/peer.go index e103585..7732d68 100644 --- a/traffic_monitor_golang/traffic_monitor/manager/peer.go +++ b/traffic_monitor_golang/traffic_monitor/manager/peer.go @@ -60,7 +60,7 @@ func StartPeerManager( func comparePeerState(events health.ThreadsafeEvents, result peer.Result, peerStates peer.CRStatesPeersThreadsafe) { if result.Available != peerStates.GetPeerAvailability(result.ID) { - events.Add(health.Event{Time: result.Time, Unix: result.Time.Unix(), Description: util.JoinErrorsString(result.Errors), Name: result.ID.String(), Hostname: result.ID.String(), Type: "Peer", Available: result.Available}) + events.Add(health.Event{Time: health.Time(result.Time), Description: util.JoinErrorsString(result.Errors), Name: result.ID.String(), Hostname: result.ID.String(), Type: "Peer", Available: result.Available}) } } @@ -114,7 +114,7 @@ func combineCrStates(events health.ThreadsafeEvents, peerOptimistic bool, peerSt } if overrideCondition != "" { - events.Add(health.Event{Time: time.Now(), Unix: time.Now().Unix(), Description: fmt.Sprintf("Health protocol override condition %s", overrideCondition), Name: cacheName.String(), Hostname: cacheName.String(), Type: toDataCopy.ServerTypes[cacheName].String(), Available: available}) + events.Add(health.Event{Time: health.Time(time.Now()), Description: fmt.Sprintf("Health protocol override condition %s", overrideCondition), Name: cacheName.String(), Hostname: cacheName.String(), Type: toDataCopy.ServerTypes[cacheName].String(), Available: available}) } combinedStates.SetCache(cacheName, peer.IsAvailable{IsAvailable: available})