Skip to content

Commit

Permalink
Merge pull request #2173 from hashicorp/b-stats
Browse files Browse the repository at this point in the history
Don't retrieve Driver Stats if unsupported
  • Loading branch information
dadgar committed Jan 10, 2017
2 parents 35af1ed + fa7db8c commit 6687d38
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 11 deletions.
27 changes: 17 additions & 10 deletions client/driver/driver.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package driver

import (
"errors"
"fmt"
"log"
"os"
Expand All @@ -16,16 +17,22 @@ import (
cstructs "github.com/hashicorp/nomad/client/structs"
)

// BuiltinDrivers contains the built in registered drivers
// which are available for allocation handling
var BuiltinDrivers = map[string]Factory{
"docker": NewDockerDriver,
"exec": NewExecDriver,
"raw_exec": NewRawExecDriver,
"java": NewJavaDriver,
"qemu": NewQemuDriver,
"rkt": NewRktDriver,
}
var (
// BuiltinDrivers contains the built in registered drivers
// which are available for allocation handling
BuiltinDrivers = map[string]Factory{
"docker": NewDockerDriver,
"exec": NewExecDriver,
"raw_exec": NewRawExecDriver,
"java": NewJavaDriver,
"qemu": NewQemuDriver,
"rkt": NewRktDriver,
}

// DriverStatsNotImplemented is the error to be returned if a driver doesn't
// implement stats.
DriverStatsNotImplemented = errors.New("stats not implemented for driver")
)

// NewDriver is used to instantiate and return a new driver
// given the name and a logger
Expand Down
2 changes: 1 addition & 1 deletion client/driver/rkt.go
Original file line number Diff line number Diff line change
Expand Up @@ -541,7 +541,7 @@ func (h *rktHandle) Kill() error {
}

func (h *rktHandle) Stats() (*cstructs.TaskResourceUsage, error) {
return nil, fmt.Errorf("stats not implemented for rkt")
return nil, DriverStatsNotImplemented
}

func (h *rktHandle) run() {
Expand Down
6 changes: 6 additions & 0 deletions client/task_runner.go
Original file line number Diff line number Diff line change
Expand Up @@ -1173,6 +1173,12 @@ func (r *TaskRunner) collectResourceUsageStats(stopCollection <-chan struct{}) {
ru, err := r.handle.Stats()

if err != nil {
// Check if the driver doesn't implement stats
if err.Error() == driver.DriverStatsNotImplemented.Error() {
r.logger.Printf("[DEBUG] client: driver for task %q in allocation %q doesn't support stats", r.task.Name, r.alloc.ID)
return
}

// We do not log when the plugin is shutdown as this is simply a
// race between the stopCollection channel being closed and calling
// Stats on the handle.
Expand Down

0 comments on commit 6687d38

Please sign in to comment.