Signed-off-by: Solomon Hykes <solomon@docker.com>
| ... | ... |
@@ -49,10 +49,17 @@ func (job *Job) Run() error {
|
| 49 | 49 |
if job.Eng.IsShutdown() {
|
| 50 | 50 |
return fmt.Errorf("engine is shutdown")
|
| 51 | 51 |
} |
| 52 |
- job.Eng.l.Lock() |
|
| 53 |
- job.Eng.tasks.Add(1) |
|
| 54 |
- job.Eng.l.Unlock() |
|
| 55 |
- defer job.Eng.tasks.Done() |
|
| 52 |
+ // FIXME: this is a temporary workaround to avoid Engine.Shutdown |
|
| 53 |
+ // waiting 5 seconds for server/api.ServeApi to complete (which it never will) |
|
| 54 |
+ // everytime the daemon is cleanly restarted. |
|
| 55 |
+ // The permanent fix is to implement Job.Stop and Job.OnStop so that |
|
| 56 |
+ // ServeApi can cooperate and terminate cleanly. |
|
| 57 |
+ if job.Name != "serveapi" {
|
|
| 58 |
+ job.Eng.l.Lock() |
|
| 59 |
+ job.Eng.tasks.Add(1) |
|
| 60 |
+ job.Eng.l.Unlock() |
|
| 61 |
+ defer job.Eng.tasks.Done() |
|
| 62 |
+ } |
|
| 56 | 63 |
// FIXME: make this thread-safe |
| 57 | 64 |
// FIXME: implement wait |
| 58 | 65 |
if !job.end.IsZero() {
|