Create raft data_dir if necessary (#1846)

Close #1760
This commit is contained in:
Mark Mercado
2021-02-18 11:35:31 +01:00
committed by GitHub
parent 32daef3939
commit 77f08af682
2 changed files with 9 additions and 1 deletions
+6
View File
@@ -5,6 +5,7 @@ import threading
import time
from patroni.dcs import AbstractDCS, ClusterConfig, Cluster, Failover, Leader, Member, SyncState, TimelineHistory
from ..utils import validate_directory
from pysyncobj import SyncObj, SyncObjConf, replicated, FAIL_REASON
from pysyncobj.transport import Node, TCPTransport, CONNECTION_STATE
@@ -275,6 +276,11 @@ class Raft(AbstractDCS):
partner_addrs.append(self_addr)
self_addr = None
# Create raft data_dir if necessary
raft_data_dir = config.get('data_dir', '')
if raft_data_dir != '':
validate_directory(raft_data_dir)
ready_event = threading.Event()
file_template = os.path.join(config.get('data_dir', ''), (self_addr or ''))
conf = SyncObjConf(password=config.get('password'), appendEntriesUseBatch=False,
+3 -1
View File
@@ -1,3 +1,4 @@
import errno
import json.decoder as json_decoder
import logging
import os
@@ -461,7 +462,8 @@ def validate_directory(d, msg="{} {}"):
os.makedirs(d)
except OSError as e:
logger.error(e)
raise PatroniException(msg.format(d, "couldn't create the directory"))
if e.errno != errno.EEXIST:
raise PatroniException(msg.format(d, "couldn't create the directory"))
elif os.path.isdir(d):
try:
fd, tmpfile = tempfile.mkstemp(dir=d)