Skip to content

Commit 5bec074

Browse files
committed
Merge pull request #4590 from krancour/flock-locks
fix(*): use flock to serialize certain pulls
2 parents 2439338 + 6dbe872 commit 5bec074

7 files changed

Lines changed: 11 additions & 9 deletions

deisctl/units/deis-logspout.service

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ After=docker.socket etcd2.service etcd.service
77
[Service]
88
EnvironmentFile=/etc/environment
99
TimeoutStartSec=20m
10-
ExecStartPre=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/logspout` && docker history $IMAGE >/dev/null 2>&1 || docker pull $IMAGE"
10+
ExecStartPre=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/logspout` && docker history $IMAGE >/dev/null 2>&1 || flock -w 1200 /var/run/lock/alpine-pull docker pull $IMAGE"
1111
ExecStartPre=/bin/sh -c "docker inspect deis-logspout >/dev/null 2>&1 && docker rm -f deis-logspout || true"
1212
ExecStart=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/logspout` && docker run --name deis-logspout --rm -v /var/run/docker.sock:/tmp/docker.sock -e ETCD_HOST=$COREOS_PRIVATE_IPV4 -e HOST=$COREOS_PRIVATE_IPV4 -e DEBUG=1 $IMAGE"
1313
ExecStop=-/usr/bin/docker stop deis-logspout

deisctl/units/deis-publisher.service

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ After=docker.socket etcd2.service etcd.service
77
[Service]
88
EnvironmentFile=/etc/environment
99
TimeoutStartSec=20m
10-
ExecStartPre=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/publisher` && docker history $IMAGE >/dev/null 2>&1 || docker pull $IMAGE"
10+
ExecStartPre=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/publisher` && docker history $IMAGE >/dev/null 2>&1 || flock -w 1200 /var/run/lock/alpine-pull docker pull $IMAGE"
1111
ExecStartPre=/bin/sh -c "docker inspect deis-publisher >/dev/null 2>&1 && docker rm -f deis-publisher || true"
1212
ExecStart=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/publisher` && docker run --name deis-publisher --rm -v /var/run/docker.sock:/var/run/docker.sock $IMAGE --host=$COREOS_PRIVATE_IPV4 --etcd-host=$COREOS_PRIVATE_IPV4"
1313
ExecStop=-/usr/bin/docker stop deis-publisher

deisctl/units/deis-store-admin.service

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Description=deis-store-admin
44
[Service]
55
EnvironmentFile=/etc/environment
66
TimeoutStartSec=20m
7-
ExecStartPre=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/store-admin` && docker history $IMAGE >/dev/null 2>&1 || docker pull $IMAGE"
7+
ExecStartPre=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/store-admin` && docker history $IMAGE >/dev/null 2>&1 || flock -w 1200 /var/run/lock/store-pull docker pull $IMAGE"
88
ExecStartPre=/bin/sh -c "docker inspect deis-store-admin >/dev/null 2>&1 && docker rm -f deis-store-admin >/dev/null 2>&1 || true"
99
ExecStart=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/store-admin` && docker run --name deis-store-admin --rm --volumes-from=deis-store-daemon-data --volumes-from=deis-store-monitor-data -e HOST=$COREOS_PRIVATE_IPV4 $IMAGE"
1010
ExecStop=-/usr/bin/docker stop deis-store-admin

deisctl/units/deis-store-daemon.service

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@ Description=deis-store-daemon
44
[Service]
55
EnvironmentFile=/etc/environment
66
TimeoutStartSec=20m
7-
ExecStartPre=/bin/sh -c "docker inspect deis-store-daemon-data >/dev/null 2>&1 || docker run --name deis-store-daemon-data -v /var/lib/ceph/osd alpine:3.2 /bin/true"
8-
ExecStartPre=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/store-daemon` && docker history $IMAGE >/dev/null 2>&1 || docker pull $IMAGE"
7+
ExecStartPre=/bin/sh -c "IMAGE=alpine:3.2 && docker history $IMAGE >/dev/null 2>&1 || flock -w 1200 /var/run/lock/alpine-pull docker pull $IMAGE"
8+
ExecStartPre=/bin/sh -c "IMAGE=alpine:3.2 && docker inspect deis-store-daemon-data >/dev/null 2>&1 || docker run --name deis-store-daemon-data -v /var/lib/ceph/osd $IMAGE /bin/true"
9+
ExecStartPre=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/store-daemon` && docker history $IMAGE >/dev/null 2>&1 || flock -w 1200 /var/run/lock/store-pull docker pull $IMAGE"
910
ExecStartPre=/bin/sh -c "docker inspect deis-store-daemon >/dev/null 2>&1 && docker rm -f deis-store-daemon >/dev/null 2>&1 || true"
1011
ExecStartPre=/usr/bin/sleep 10
1112
ExecStart=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/store-daemon` && docker run --name deis-store-daemon --rm --volumes-from=deis-store-daemon-data -e HOST=$COREOS_PRIVATE_IPV4 -p 6800 --net host $IMAGE"

deisctl/units/deis-store-gateway.service

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Description=deis-store-gateway
44
[Service]
55
EnvironmentFile=/etc/environment
66
TimeoutStartSec=20m
7-
ExecStartPre=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/store-gateway` && docker history $IMAGE >/dev/null 2>&1 || docker pull $IMAGE"
7+
ExecStartPre=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/store-gateway` && docker history $IMAGE >/dev/null 2>&1 || flock -w 1200 /var/run/lock/store-pull docker pull $IMAGE"
88
ExecStartPre=/bin/sh -c "docker inspect deis-store-gateway >/dev/null 2>&1 && docker rm -f deis-store-gateway || true"
99
ExecStart=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/store-gateway` && docker run --name deis-store-gateway --rm -h deis-store-gateway -e HOST=$COREOS_PRIVATE_IPV4 -e EXTERNAL_PORT=8888 -p 8888:8888 $IMAGE"
1010
ExecStartPost=/bin/sh -c "until (echo 'Waiting for ceph gateway on 8888/tcp...' && curl -sSL http://localhost:8888|grep -e '<ID>anonymous</ID><DisplayName></DisplayName>' >/dev/null 2>&1); do sleep 1; done"

deisctl/units/deis-store-metadata.service

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Description=deis-store-metadata
44
[Service]
55
EnvironmentFile=/etc/environment
66
TimeoutStartSec=20m
7-
ExecStartPre=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/store-metadata` && docker history $IMAGE >/dev/null 2>&1 || docker pull $IMAGE"
7+
ExecStartPre=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/store-metadata` && docker history $IMAGE >/dev/null 2>&1 || flock -w 1200 /var/run/lock/store-pull docker pull $IMAGE"
88
ExecStartPre=/bin/sh -c "docker inspect deis-store-metadata >/dev/null 2>&1 && docker rm -f deis-store-metadata || true"
99
ExecStart=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/store-metadata` && docker run --name deis-store-metadata --rm -e HOST=$COREOS_PRIVATE_IPV4 --net host $IMAGE"
1010
ExecStop=-/usr/bin/docker stop deis-store-metadata

deisctl/units/deis-store-monitor.service

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@ Description=deis-store-monitor
44
[Service]
55
EnvironmentFile=/etc/environment
66
TimeoutStartSec=20m
7-
ExecStartPre=/bin/sh -c "docker inspect deis-store-monitor-data >/dev/null 2>&1 || docker run --name deis-store-monitor-data -v /etc/ceph -v /var/lib/ceph/mon alpine:3.2 /bin/true"
8-
ExecStartPre=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/store-monitor` && docker history $IMAGE >/dev/null 2>&1 || docker pull $IMAGE"
7+
ExecStartPre=/bin/sh -c "IMAGE=alpine:3.2 && docker history $IMAGE >/dev/null 2>&1 || flock -w 1200 /var/run/lock/alpine-pull docker pull $IMAGE"
8+
ExecStartPre=/bin/sh -c "IMAGE=alpine:3.2 && docker inspect deis-store-monitor-data >/dev/null 2>&1 || docker run --name deis-store-monitor-data -v /etc/ceph -v /var/lib/ceph/mon $IMAGE /bin/true"
9+
ExecStartPre=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/store-monitor` && docker history $IMAGE >/dev/null 2>&1 || flock -w 1200 /var/run/lock/store-pull docker pull $IMAGE"
910
ExecStartPre=/bin/sh -c "etcdctl set /deis/store/hosts/$COREOS_PRIVATE_IPV4 `hostname` >/dev/null"
1011
ExecStartPre=/bin/sh -c "docker inspect deis-store-monitor >/dev/null 2>&1 && docker rm -f deis-store-monitor >/dev/null 2>&1 || true"
1112
ExecStart=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/store-monitor` && docker run --name deis-store-monitor --rm --volumes-from=deis-store-monitor-data -e HOST=$COREOS_PRIVATE_IPV4 -p 6789 --net host $IMAGE"

0 commit comments

Comments
 (0)