[Bug 1007483] Re: lxc fails to create containers concurrently
Serge Hallyn
1007483 at bugs.launchpad.net
Mon Jun 11 22:06:59 UTC 2012
** Description changed:
- When multiple containers (template ubuntu) are created simultaneously
- only the first container is successfully created, others fail with
- "failed to execute template 'ubuntu'"
+ ========== SRU justification ==============
+ 1. Impact: parallel creations of containers with the same template
+ will result in all but one failing. They should instead run in
+ parallel without racing in their critical section.
+ 2. Development fix: don't add '-n' to the flock arguments, which causes
+ flock to fail instead of waiting.
+ 3. Stable fix: same as development fix.
+ 4 Test case:
+ for i in `seq 10 12`; do
+ screen -d -m sudo lxc-create -t ubuntu -n p$i
+ done
+ ret=0
+ while [ $ret -eq 0 ]; do
+ sleep 1
+ pidof bash > /dev/null 2>&1
+ ret=$?
+ done
+
+ while [ `pidof lxc-create > /dev/null 2>&1` ]; do
+ sleep 1
+ done
+ lxc-ls
+ # make sure p10, p11, and p12 exist
+ 5. Regression potential: none
+ ==============================
+
+
+ When multiple containers (template ubuntu) are created simultaneously only the first container is successfully created, others fail with "failed to execute template 'ubuntu'"
This is a very common scenario in automated tests.
TEST CASE:
Run the following script with sudo
"""
#!/bin/sh
MAX=3
echo "Destroying existing containers"
for x in $(seq 1 $MAX); do
- sudo lxc-destroy -f -n test-lxc-$x &
+ sudo lxc-destroy -f -n test-lxc-$x &
done
sleep 10
sudo lxc-list
echo "Creating $MAX ubuntu containers"
for x in $(seq 1 $MAX); do
- echo -n "Creating $x ..."
- sudo lxc-create -t ubuntu -n test-lxc-$x &
- echo "done"
+ echo -n "Creating $x ..."
+ sudo lxc-create -t ubuntu -n test-lxc-$x &
+ echo "done"
done
echo "Waiting 30s for test to finish"
sleep 30
sudo lxc-list
"""
ACTUAL RESULT
=================================
- $ sudo sh ./lxc-create-concurrent
+ $ sudo sh ./lxc-create-concurrent
Destroying existing containers
'test-lxc-1' does not exist
'test-lxc-2' does not exist
'test-lxc-3' does not exist
RUNNING
FROZEN
STOPPED
Creating 3 ubuntu containers
Creating 1 ...done
Creating 2 ...done
Creating 3 ...done
Waiting 30s for test to finish
No config file specified, using the default config
No config file specified, using the default config
No config file specified, using the default config
debootstrap is /usr/sbin/debootstrap
debootstrap is /usr/sbin/debootstrap
- Checking cache download in /var/cache/lxc/quantal/rootfs-amd64 ...
- Copy /var/cache/lxc/quantal/rootfs-amd64 to /var/lib/lxc/test-lxc-1/rootfs ...
+ Checking cache download in /var/cache/lxc/quantal/rootfs-amd64 ...
+ Copy /var/cache/lxc/quantal/rootfs-amd64 to /var/lib/lxc/test-lxc-1/rootfs ...
Copying rootfs to /var/lib/lxc/test-lxc-1/rootfs ...
failed to execute template 'ubuntu'
debootstrap is /usr/sbin/debootstrap
failed to execute template 'ubuntu'
aborted
aborted
##
# The default user is 'ubuntu' with password 'ubuntu'!
# Use the 'sudo' command to run tasks as root in the container.
##
'ubuntu' template installed
'test-lxc-1' created
RUNNING
FROZEN
STOPPED
- test-lxc-1
+ test-lxc-1
=================================
ProblemType: Bug
DistroRelease: Ubuntu 12.10
Package: lxc 0.8.0~rc1-4ubuntu10
ProcVersionSignature: Ubuntu 3.4.0-3.8-generic 3.4.0
Uname: Linux 3.4.0-3-generic x86_64
ApportVersion: 2.1.1-0ubuntu1
Architecture: amd64
Date: Fri Jun 1 17:32:06 2012
ProcEnviron:
- TERM=xterm
- PATH=(custom, user)
- LANG=en_US.UTF-8
- SHELL=/bin/bash
+ TERM=xterm
+ PATH=(custom, user)
+ LANG=en_US.UTF-8
+ SHELL=/bin/bash
SourcePackage: lxc
UpgradeStatus: Upgraded to quantal on 2012-01-31 (121 days ago)
--
You received this bug notification because you are a member of Ubuntu
Server Team, which is subscribed to lxc in Ubuntu.
https://bugs.launchpad.net/bugs/1007483
Title:
lxc fails to create containers concurrently
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/lxc/+bug/1007483/+subscriptions
More information about the Ubuntu-server-bugs
mailing list