From 1d47a06da164d85281a9e6302e0b3a0220e9c203 Mon Sep 17 00:00:00 2001 From: Mike Lang Date: Tue, 1 Aug 2017 14:14:44 -0700 Subject: [PATCH 1/3] k8s probe: Fix a panic (nil pointer deref) when a cronjob has never been scheduled in which case cj.Status.LastScheduled is nil. New behaviour is to omit it from the map (and therefore the display) if it has never been scheduled. --- probe/kubernetes/cronjob.go | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/probe/kubernetes/cronjob.go b/probe/kubernetes/cronjob.go index a34db38ef..5e76aeee7 100644 --- a/probe/kubernetes/cronjob.go +++ b/probe/kubernetes/cronjob.go @@ -63,11 +63,14 @@ func (cj *cronJob) Selectors() ([]labels.Selector, error) { } func (cj *cronJob) GetNode() report.Node { - return cj.MetaNode(report.MakeCronJobNodeID(cj.UID())).WithLatests(map[string]string{ - NodeType: "CronJob", - Schedule: cj.Spec.Schedule, - Suspended: fmt.Sprint(cj.Spec.Suspend != nil && *cj.Spec.Suspend), // nil -> false - LastScheduled: cj.Status.LastScheduleTime.Format(time.RFC3339Nano), - ActiveJobs: fmt.Sprint(len(cj.jobs)), - }) + latest := map[string]string{ + NodeType: "CronJob", + Schedule: cj.Spec.Schedule, + Suspended: fmt.Sprint(cj.Spec.Suspend != nil && *cj.Spec.Suspend), // nil -> false + ActiveJobs: fmt.Sprint(len(cj.jobs)), + } + if cj.Status.LastScheduleTime != nil { + latest[LastScheduled] = cj.Status.LastScheduleTime.Format(time.RFC3339Nano) + } + return cj.MetaNode(report.MakeCronJobNodeID(cj.UID())).WithLatests(latest) } From fbf22d3eb85c64278eac7b1d3448525c261ab4de Mon Sep 17 00:00:00 2001 From: Mike Lang Date: Tue, 1 Aug 2017 15:53:40 -0700 Subject: [PATCH 2/3] Update CHANGELOG for 1.6.2 --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2852f61cc..7d6de19ad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,11 @@ +## Release 1.6.2 + +Bugfix patch release + +- k8s probe: Fix a panic (nil pointer deref) when a cronjob has never been scheduled + [#2785](https://github.com/weaveworks/scope/pull/2785) + ## Release 1.6.1 This is a re-release of 1.6.0. The official build for 1.6.0 inadvertently From a0d8047534eef1785c6892ec95daf8edee042736 Mon Sep 17 00:00:00 2001 From: Mike Lang Date: Tue, 1 Aug 2017 15:55:59 -0700 Subject: [PATCH 3/3] Update links for 1.6.2 --- site/installing.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/site/installing.md b/site/installing.md index 4a3f452bd..d21735141 100644 --- a/site/installing.md +++ b/site/installing.md @@ -125,7 +125,7 @@ After it’s been launched, open your browser to `http://localhost:4040`. **Docker Compose Format Version 1:** scope: - image: weaveworks/scope:1.6.1 + image: weaveworks/scope:1.6.2 net: "host" pid: "host" privileged: true @@ -141,7 +141,7 @@ After it’s been launched, open your browser to `http://localhost:4040`. version: '2' services: scope: - image: weaveworks/scope:1.6.1 + image: weaveworks/scope:1.6.2 network_mode: "host" pid: "host" privileged: true @@ -165,7 +165,7 @@ Version 2 of this YAML file supports networks and volumes as defined by any plug **Docker Compose Format Version 1:** probe: - image: weaveworks/scope:1.6.1 + image: weaveworks/scope:1.6.2 net: "host" pid: "host" privileged: true @@ -182,7 +182,7 @@ Version 2 of this YAML file supports networks and volumes as defined by any plug version: '2' services: probe: - image: weaveworks/scope:1.6.1 + image: weaveworks/scope:1.6.2 network_mode: "host" pid: "host" privileged: true