mirror of
https://github.com/kemko/nomad.git
synced 2026-01-07 19:05:42 +03:00
Merge pull request #214 from hashicorp/f-dev-alloc-cleanup
Cleanup allocations when in dev mode
This commit is contained in:
@@ -53,6 +53,7 @@ type AllocRunner struct {
|
||||
destroy bool
|
||||
destroyCh chan struct{}
|
||||
destroyLock sync.Mutex
|
||||
waitCh chan struct{}
|
||||
}
|
||||
|
||||
// allocRunnerState is used to snapshot the state of the alloc runner
|
||||
@@ -74,6 +75,7 @@ func NewAllocRunner(logger *log.Logger, config *config.Config, updater AllocStat
|
||||
taskStatus: make(map[string]taskStatus),
|
||||
updateCh: make(chan *structs.Allocation, 8),
|
||||
destroyCh: make(chan struct{}),
|
||||
waitCh: make(chan struct{}),
|
||||
}
|
||||
return ar
|
||||
}
|
||||
@@ -258,6 +260,7 @@ func (r *AllocRunner) setTaskStatus(taskName, status, desc string) {
|
||||
|
||||
// Run is a long running goroutine used to manage an allocation
|
||||
func (r *AllocRunner) Run() {
|
||||
defer close(r.waitCh)
|
||||
go r.dirtySyncState()
|
||||
|
||||
// Check if the allocation is in a terminal status
|
||||
@@ -376,3 +379,8 @@ func (r *AllocRunner) Destroy() {
|
||||
r.destroy = true
|
||||
close(r.destroyCh)
|
||||
}
|
||||
|
||||
// WaitCh returns a channel to wait for termination
|
||||
func (r *AllocRunner) WaitCh() <-chan struct{} {
|
||||
return r.waitCh
|
||||
}
|
||||
|
||||
@@ -184,6 +184,15 @@ func (c *Client) Shutdown() error {
|
||||
if c.shutdown {
|
||||
return nil
|
||||
}
|
||||
|
||||
// Destroy all the running allocations.
|
||||
if c.config.DevMode {
|
||||
for _, ar := range c.allocs {
|
||||
ar.Destroy()
|
||||
<-ar.WaitCh()
|
||||
}
|
||||
}
|
||||
|
||||
c.shutdown = true
|
||||
close(c.shutdownCh)
|
||||
c.connPool.Shutdown()
|
||||
|
||||
Reference in New Issue
Block a user