summaryrefslogtreecommitdiff
path: root/cmd/dockerd
diff options
context:
space:
mode:
authorCory Snider <csnider@mirantis.com>2023-02-28 19:59:36 -0500
committerCory Snider <csnider@mirantis.com>2023-03-01 09:03:34 -0500
commitbe39be87f6ae8a94656906ebb2aa7edf4e6d210d (patch)
treec1890f61b27dc47a8f5161e6ab7145e7520854a7 /cmd/dockerd
parenta48f19157ad560fcb39e3b10fa0d6c331558998c (diff)
downloaddocker-be39be87f6ae8a94656906ebb2aa7edf4e6d210d.tar.gz
api/server: delete Wait method
It's surprising that the method to begin serving requests is named Wait. And it is unidiomatic: it is a synchronous call, but it sends its return value to the channel passed in as an argument instead of just returning the value. And ultimately it is just a trivial wrapper around serveAPI. Export the ServeAPI method instead so callers can decide how to call and synchronize around it. Call ServeAPI synchronously on the main goroutine in cmd/dockerd. The goroutine and channel which the Wait() API demanded are superfluous after all. The notifyReady() call was always concurrent and asynchronous with respect to serving the API (its implementation spawns a goroutine) so it makes no difference whether it is called before ServeAPI() or after `go ServeAPI()`. Signed-off-by: Cory Snider <csnider@mirantis.com>
Diffstat (limited to 'cmd/dockerd')
-rw-r--r--cmd/dockerd/daemon.go16
1 files changed, 7 insertions, 9 deletions
diff --git a/cmd/dockerd/daemon.go b/cmd/dockerd/daemon.go
index 8389378174..30ebb59667 100644
--- a/cmd/dockerd/daemon.go
+++ b/cmd/dockerd/daemon.go
@@ -239,18 +239,16 @@ func (cli *DaemonCli) start(opts *daemonOptions) (err error) {
cli.setupConfigReloadTrap()
- // The serve API routine never exits unless an error occurs
- // We need to start it as a goroutine and wait on it so
- // daemon doesn't exit
- serveAPIWait := make(chan error)
- go cli.api.Wait(serveAPIWait)
-
// after the daemon is done setting up we can notify systemd api
notifyReady()
- // Daemon is fully initialized and handling API traffic
- // Wait for serve API to complete
- errAPI := <-serveAPIWait
+ // Daemon is fully initialized. Start handling API traffic
+ // and wait for serve API to complete.
+ errAPI := cli.api.Serve()
+ if errAPI != nil {
+ logrus.WithError(errAPI).Error("ServeAPI error")
+ }
+
c.Cleanup()
// notify systemd that we're shutting down