summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPedro Alvarez <pedro.alvarez@codethink.co.uk>2016-01-06 15:59:33 +0000
committerPedro Alvarez <pedro.alvarez@codethink.co.uk>2016-01-06 16:02:36 +0000
commitb95ab85a9319abe7dba8c254ef69c2c4eedc578f (patch)
treef72df1f61ac9e3f415356de3688d0ca760ad379b
parent0f00fbbed38757a2b0628341f172c69d9c4dd60a (diff)
downloadmorph-baserock/pedroalvarez/cachedir-creation-bug.tar.gz
More robust artifact cachedir creationbaserock/pedroalvarez/cachedir-creation-bug
When starting various distbuilds at the same time we were having random errors like: 2016-01-06 12:14:03 Starting distributed build 2016-01-06 12:14:03 Connecting to mason-x86-64:7878 2016-01-06 12:14:03 Requesting build of git://192.168.222.58/baserock/baserock/definitions 28b92192c00a36395acd6a960959d3b4468f9894 systems/openstack-system-x86_64.morph ERROR: /srv/distbuild/artifacts: File exists ERROR: /srv/distbuild/artifacts: File exists ERROR: /srv/distbuild/artifacts: File exists ERROR: /srv/distbuild/artifacts: File exists This has been happening in Mason since we remove the 'artifacts' folder after Mason finishes. Change-Id: Ie328ec1debf12f27f49641fbf7ad4fa9403ba8a3
-rw-r--r--morphlib/util.py9
1 files changed, 7 insertions, 2 deletions
diff --git a/morphlib/util.py b/morphlib/util.py
index 94b0f4c4..b76029df 100644
--- a/morphlib/util.py
+++ b/morphlib/util.py
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
-# Copyright (C) 2011-2015 Codethink Limited
+# Copyright (C) 2011-2016 Codethink Limited
# Copyright © 2015 Richard Ipsum
#
# This program is free software; you can redistribute it and/or modify
@@ -15,6 +15,7 @@
# with this program. If not, see <http://www.gnu.org/licenses/>.
import contextlib
+import errno
import itertools
import os
import pipes
@@ -136,7 +137,11 @@ def new_artifact_caches(settings): # pragma: no cover
cachedir = create_cachedir(settings)
artifact_cachedir = os.path.join(cachedir, 'artifacts')
if not os.path.exists(artifact_cachedir):
- os.mkdir(artifact_cachedir)
+ try:
+ os.mkdir(artifact_cachedir)
+ except OSError as e:
+ if e.errno != errno.EEXIST:
+ raise
lac = morphlib.localartifactcache.LocalArtifactCache(
fs.osfs.OSFS(artifact_cachedir))