Fix bug where duplicate container is leftover after 'up' fails
Signed-off-by: Aanand Prasad <aanand.prasad@gmail.com>
This commit is contained in:
parent
cd2cdb25e3
commit
62b47224f0
4 changed files with 62 additions and 13 deletions
|
|
@ -226,6 +226,9 @@ class Project(object):
|
|||
|
||||
services = self.get_services(service_names, include_deps=start_deps)
|
||||
|
||||
for service in services:
|
||||
service.remove_duplicate_containers()
|
||||
|
||||
plans = self._get_convergence_plans(
|
||||
services,
|
||||
allow_recreate=allow_recreate,
|
||||
|
|
|
|||
|
|
@ -378,6 +378,26 @@ class Service(object):
|
|||
container.start()
|
||||
return container
|
||||
|
||||
def remove_duplicate_containers(self, timeout=DEFAULT_TIMEOUT):
|
||||
for c in self.duplicate_containers():
|
||||
log.info('Removing %s...' % c.name)
|
||||
c.stop(timeout=timeout)
|
||||
c.remove()
|
||||
|
||||
def duplicate_containers(self):
|
||||
containers = sorted(
|
||||
self.containers(stopped=True),
|
||||
key=lambda c: c.get('Created'),
|
||||
)
|
||||
|
||||
numbers = set()
|
||||
|
||||
for c in containers:
|
||||
if c.number in numbers:
|
||||
yield c
|
||||
else:
|
||||
numbers.add(c.number)
|
||||
|
||||
def config_hash(self):
|
||||
return json_hash(self.config_dict())
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue