~kampka/ubuntu/quantal/lxc/upstart-instance

« back to all changes in this revision

Viewing changes to debian/patches/0202-make-api-start-reliable

  • Committer: Package Import Robot
  • Author(s): Stéphane Graber, Serge Hallyn, Stéphane Graber
  • Date: 2012-08-25 12:44:17 UTC
  • Revision ID: package-import@ubuntu.com-20120825124417-yn1xu1x10fi7o972
Tags: 0.8.0~rc1-4ubuntu29
[ Serge Hallyn ]
* fix lxcapi_start to not return true when it container failed to start.
* 0201-fix-mkdir-race: don't raise error if mkdir fails with EEXIST.
* 0202-make-api-start-reliable: have daemonized start through the api
  wait until the container is RUNNING before returning true.  If a 5
  second timeout is hit before the container is RUNNING, return false.

[ Stéphane Graber ]
* python-lxc: in get_ips() if timeout is 1 don't wait one second before
  returning.
* python-lxc: Add import time warning that the API isn't yet stable and
  so may change at any point in the future.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
Index: lxc/src/lxc/lxccontainer.c
 
2
===================================================================
 
3
--- lxc.orig/src/lxc/lxccontainer.c     2012-08-24 11:46:43.112003985 -0500
 
4
+++ lxc/src/lxc/lxccontainer.c  2012-08-24 12:22:40.683925258 -0500
 
5
@@ -244,6 +244,26 @@
 
6
        c->daemonize = 1;
 
7
 }
 
8
 
 
9
+static bool lxcapi_wait(struct lxc_container *c, char *state, int timeout)
 
10
+{
 
11
+       int ret;
 
12
+
 
13
+       if (!c)
 
14
+               return false;
 
15
+
 
16
+       ret = lxc_wait(c->name, state, timeout);
 
17
+       return ret == 0;
 
18
+}
 
19
+
 
20
+
 
21
+static bool wait_on_daemonized_start(struct lxc_container *c)
 
22
+{
 
23
+       /* we'll probably want to make this timeout configurable? */
 
24
+       int timeout = 5;
 
25
+
 
26
+       return lxcapi_wait(c, "RUNNING", timeout);
 
27
+}
 
28
+
 
29
 /*
 
30
  * I can't decide if it'd be more convenient for callers if we accept '...',
 
31
  * or a null-terminated array (i.e. execl vs execv)
 
32
@@ -298,7 +318,7 @@
 
33
                        return false;
 
34
                }
 
35
                if (pid != 0)
 
36
-                       return true;
 
37
+                       return wait_on_daemonized_start(c);
 
38
                /* like daemon(), chdir to / and redirect 0,1,2 to /dev/null */
 
39
                chdir("/");
 
40
                close(0);
 
41
@@ -408,17 +428,6 @@
 
42
        return ret == 0;
 
43
 }
 
44
 
 
45
-static bool lxcapi_wait(struct lxc_container *c, char *state, int timeout)
 
46
-{
 
47
-       int ret;
 
48
-
 
49
-       if (!c)
 
50
-               return false;
 
51
-
 
52
-       ret = lxc_wait(c->name, state, timeout);
 
53
-       return ret == 0;
 
54
-}
 
55
-
 
56
 static bool valid_template(char *t)
 
57
 {
 
58
        struct stat statbuf;