mirror of
https://github.com/flatcar/scripts.git
synced 2025-10-19 11:21:32 +02:00
Merge pull request #375 from philips/docker-0.8.1-fix-sa
fix(app-emulation/docker): fix up socket activation problem
This commit is contained in:
commit
c7ae55e094
@ -97,6 +97,10 @@ pkg_setup() {
|
|||||||
check_extra_config
|
check_extra_config
|
||||||
}
|
}
|
||||||
|
|
||||||
|
src_prepare() {
|
||||||
|
epatch "${FILESDIR}"/fix-api-serve-until-the-acceptconnections-job.patch
|
||||||
|
}
|
||||||
|
|
||||||
src_compile() {
|
src_compile() {
|
||||||
# if we treat them right, Docker's build scripts will set up a
|
# if we treat them right, Docker's build scripts will set up a
|
||||||
# reasonable GOAPTH for us
|
# reasonable GOAPTH for us
|
||||||
|
@ -0,0 +1,53 @@
|
|||||||
|
From a15ba88df0aeecf70eb6c1dfefe3506fda390f3c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Brandon Philips <brandon@ifup.co>
|
||||||
|
Date: Fri, 28 Feb 2014 20:43:08 -0800
|
||||||
|
Subject: [PATCH] fix(api): serve until the "acceptconnections" job
|
||||||
|
|
||||||
|
This fixes a bug that I encountered when using socket activation with
|
||||||
|
docker 0.8.1. When running the first `docker run` it would return:
|
||||||
|
"create: command not found".
|
||||||
|
|
||||||
|
The root cause was the socket activation code path was starting to
|
||||||
|
listen before the "initserver" job had finished. This meant that the
|
||||||
|
"create" handler hand't been registered yet leading to the command not
|
||||||
|
found error.
|
||||||
|
|
||||||
|
In log format it looks like this:
|
||||||
|
|
||||||
|
```
|
||||||
|
[/var/lib/docker|9d2e78e9] +job initserver()
|
||||||
|
2014/03/01 04:05:35 Listening for HTTP on fd ()
|
||||||
|
[/var/lib/docker|0d71c177] +job create()
|
||||||
|
create: command not found
|
||||||
|
[/var/lib/docker|0d71c177] -job create()
|
||||||
|
[/var/lib/docker|0d71c177] +job acceptconnections()
|
||||||
|
[/var/lib/docker|0d71c177] -job initserver() = OK (0)
|
||||||
|
```
|
||||||
|
|
||||||
|
To fix the issue select on the activationLock and block until the
|
||||||
|
"acceptconnections" job has ran.
|
||||||
|
---
|
||||||
|
api/api.go | 7 +++++++
|
||||||
|
1 file changed, 7 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/api/api.go b/api/api.go
|
||||||
|
index 8d9bae9..d668e5d 100644
|
||||||
|
--- a/api/api.go
|
||||||
|
+++ b/api/api.go
|
||||||
|
@@ -1127,6 +1127,13 @@ func ServeFd(addr string, handle http.Handler) error {
|
||||||
|
|
||||||
|
chErrors := make(chan error, len(ls))
|
||||||
|
|
||||||
|
+ // We don't want to start serving on these sockets until the
|
||||||
|
+ // "initserver" job has completed. Otherwise required handlers
|
||||||
|
+ // won't be ready.
|
||||||
|
+ select {
|
||||||
|
+ case <-activationLock:
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
// Since ListenFD will return one or more sockets we have
|
||||||
|
// to create a go func to spawn off multiple serves
|
||||||
|
for i := range ls {
|
||||||
|
--
|
||||||
|
1.8.1.4
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user