2588b3bc98
This fixes few cases where driver eventor goroutines are leaked during normal operations, but especially so in tests. This change makes few modifications: First, it switches drivers to use `Context`s to manage shutdown events. Previously, it relied on callers invoking `.Shutdown()` function that is specific to internal drivers only and require casting. Using `Contexts` provide a consistent idiomatic way to manage lifecycle for both internal and external drivers. Also, I discovered few places where we don't clean up a temporary driver instance in the plugin catalog code, where we dispense a driver to inspect and validate the schema config without properly cleaning it up.
21 lines
394 B
Go
21 lines
394 B
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
|
|
log "github.com/hashicorp/go-hclog"
|
|
|
|
"github.com/hashicorp/nomad/devices/gpu/nvidia"
|
|
"github.com/hashicorp/nomad/plugins"
|
|
)
|
|
|
|
func main() {
|
|
// Serve the plugin
|
|
plugins.ServeCtx(factory)
|
|
}
|
|
|
|
// factory returns a new instance of the Nvidia GPU plugin
|
|
func factory(ctx context.Context, log log.Logger) interface{} {
|
|
return nvidia.NewNvidiaDevice(ctx, log)
|
|
}
|