diff options
author | Daniel Wagner-Hall <daniel@matrix.org> | 2015-11-12 11:58:48 +0000 |
---|---|---|
committer | Daniel Wagner-Hall <daniel@matrix.org> | 2015-11-12 11:58:48 +0000 |
commit | 6a9c4cfd0be467e290be52b02e6229fd30367c6e (patch) | |
tree | c615718d013da8d34b50deadf80d2bfc4e28d492 /synapse/config | |
parent | Merge branch 'release-v0.11.0' of github.com:matrix-org/synapse into develop (diff) | |
download | synapse-6a9c4cfd0be467e290be52b02e6229fd30367c6e.tar.xz |
Fix race creating directories
Diffstat (limited to 'synapse/config')
-rw-r--r-- | synapse/config/_base.py | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/synapse/config/_base.py b/synapse/config/_base.py index ceef309afc..c18e0bdbb8 100644 --- a/synapse/config/_base.py +++ b/synapse/config/_base.py @@ -14,6 +14,7 @@ # limitations under the License. import argparse +import errno import os import yaml import sys @@ -91,8 +92,11 @@ class Config(object): @classmethod def ensure_directory(cls, dir_path): dir_path = cls.abspath(dir_path) - if not os.path.exists(dir_path): + try: os.makedirs(dir_path) + except OSError, e: + if e.errno != errno.EEXIST: + raise if not os.path.isdir(dir_path): raise ConfigError( "%s is not a directory" % (dir_path,) |