Skip to content

Commit

Permalink
Merge pull request #214 from hashicorp/f-dev-alloc-cleanup
Browse files Browse the repository at this point in the history
Cleanup allocations when in dev mode
  • Loading branch information
dadgar committed Oct 6, 2015
2 parents ac2bcc4 + 02fb48f commit 930921d
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 0 deletions.
8 changes: 8 additions & 0 deletions client/alloc_runner.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
}
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
}
9 changes: 9 additions & 0 deletions client/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down

0 comments on commit 930921d

Please sign in to comment.