This commit is contained in:
Alex Dadgar 2015-10-06 10:51:25 -07:00
commit 7e11f4fcca
4 changed files with 19 additions and 2 deletions

View File

@ -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
}

View File

@ -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()

View File

@ -122,7 +122,7 @@ job "example" {
memory = 256 # 256MB
network {
mbits = 10
dynamic_ports = ["redis"]
dynamic_ports = ["6379"]
}
}
}

View File

@ -26,7 +26,7 @@
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-62364009-1', 'auto');
ga('create', 'UA-68490725-1', 'auto');
ga('send', 'pageview');
</script>