API shutdown(timeout=X) call always tries to call stop(), spewing error messages to the console when the container is already stopped

Bug #1050001 reported by Stéphane Graber
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
lxc (Ubuntu)
Fix Released
Low
Serge Hallyn

Bug Description

Title should say it all, example is available at: http://paste.ubuntu.com/1201056/

18:45 <hallyn> d'oh. i think i line got dropped there
18:46 <hallyn> the if (timeout > 0) should be if (!retv && timeout > 0)
18:46 <hallyn> we're calling c->stop() on a stopped container otherwise

The test case is:

root@amd1:~/bzr/lxc/lxc# python3
Python 3.2.3 (default, Sep 10 2012, 12:07:24)
[GCC 4.7.1 20120908 (prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import lxc
__main__:1: Warning: The python-lxc API isn't yet stable and may change at any point in the future.
>>> c=lxc.Container("qlvm3")
>>> c.start()
True
>>> c.shutdown(timeout=5)
lxc_container: failed to receive answer for the command
lxc_container: failed to send command
True
>>>

Revision history for this message
Stéphane Graber (stgraber) wrote :

Discussed on IRC, so triaging myself, assigning to Serge and marking as Low as it's mostly annoying.

Changed in lxc (Ubuntu):
status: New → Triaged
importance: Undecided → Low
assignee: nobody → Serge Hallyn (serge-hallyn)
description: updated
Revision history for this message
Stéphane Graber (stgraber) wrote :

Right, except that you probably should have called stop() instead of stop(timeout=X) as stop doesn't take a timeout, but anyway, the relevant part is the messages printed by shutdown().

Revision history for this message
Serge Hallyn (serge-hallyn) wrote :

@stgraber,

heh, obviously I meant to pull that from the cut-paste :)

description: updated
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package lxc - 0.8.0~rc1-4ubuntu34

---------------
lxc (0.8.0~rc1-4ubuntu34) quantal; urgency=low

  [ Serge Hallyn ]
  * 0214-give-pclose-errno: help debug pclose failures when lxc runs scripts.
  * 0215-lxc-clone-name-arg: fix incorrect checking for --name argument.
    (LP: #1049914)
  * 0216-hook-kmsg-to-console: link /dev/kmsg to /dev/console so init log
    messages can be seen. (LP: #1049926)
  * 0217-lxc-clone-fix-fstab: fix check for lxc.mount in lxc-clone
    (LP: #1049987)
  * 0218-api-shutdown-fix-doublestop: don't call c->stop() when already
    stopped (LP: #1050001)
  * Update lxc-start-container apparmor abstraction to allow ecryptfs mounts
    from the pre-mount script. Remove the instruction to add that line from
    the example hook.
  * Update lxc-start-container apparmor abstraction to allow mounts to paths
    under /var/lib/lxc/$container/, so that pre-mount hooks can stage mounts
    there. Also update the mountecryptfs example premount hook to use that.
    (LP: #1050469)
  * debian/rules: remove parsing of apparmor.in files.

  [ Stéphane Graber ]
  * Update lxc-start-container apparmor abstraction to allow aufs and overlayfs
    mounts from the pre-mount scripts. This is required by some hooks and will
    be needed by the new lxc-start-ephemeral.
  * Remove multi-arch path in lxc-start-container apparmor abstraction and
    instead just allow /usr/lib/*/lxc/ so nested containers running on a
    different architecture don't get blocked by apparmor.
  * Cherry-pick python-lxc fixes from upstream:
    - Minor PEP-8 syntax fix
    - Return an exception when getting Container instance as non-root
    - Automatically convert any state string passed to wait() to its uppercase
      equivalent.
    - Replace test.py by a full example of the API.
    - Remove zombie handler function from C module as it's no longer required
      and causes weird bugs when used with the hooks.

  [ William Grant ]
  * lxc-start-ephemeral: exit with the command's status, not always 0.
    (LP: #1050351)
 -- Serge Hallyn <email address hidden> Thu, 13 Sep 2012 12:02:45 -0500

Changed in lxc (Ubuntu):
status: Triaged → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.