Skip to content

Commit d84c041

Browse files
Merge pull request #118 from timvaillancourt/1.0.1
1.0.1: Minor fixes for 1.0 release
2 parents 3a7c1e1 + 718edfe commit d84c041

File tree

6 files changed

+21
-6
lines changed

6 files changed

+21
-6
lines changed

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ FROM centos:centos7
22
MAINTAINER Tim Vaillancourt <tim.vaillancourt@percona.com>
33
RUN yum install -y https://www.percona.com/redir/downloads/percona-release/redhat/latest/percona-release-0.1-4.noarch.rpm epel-release && \
44
yum install -y Percona-Server-MongoDB-32-tools zbackup && yum clean all && \
5-
curl -Lo /usr/bin/mongodb-consistent-backup https://github.com/Percona-Lab/mongodb_consistent_backup/releases/download/1.0.0/mongodb-consistent-backup.el7.centos.x86_64 && \
5+
curl -Lo /usr/bin/mongodb-consistent-backup https://github.com/Percona-Lab/mongodb_consistent_backup/releases/download/1.0.1/mongodb-consistent-backup.el7.centos.x86_64 && \
66
chmod +x /usr/bin/mongodb-consistent-backup
77
ENTRYPOINT ["mongodb-consistent-backup"]
88
CMD ["--help"]

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.0.0
1+
1.0.1

mongodb_consistent_backup/Archive/Zbackup/Zbackup.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from select import select
55
from subprocess import Popen, PIPE, call
66

7+
from mongodb_consistent_backup.Common import Lock
78
from mongodb_consistent_backup.Errors import OperationError
89
from mongodb_consistent_backup.Pipeline import Task
910

@@ -24,7 +25,9 @@ def __init__(self, manager, config, timer, base_dir, backup_dir, **kwargs):
2425
self.compression_method = 'lzma'
2526
self.compression_supported = ['lzma']
2627

27-
self.zbackup_dir = os.path.join(self.config.backup.location, self.backup_name, "mongodb-consistent-backup_zbackup")
28+
self.base_dir = os.path.join(self.config.backup.location, self.backup_name)
29+
self.zbackup_dir = os.path.join(self.base_dir, "mongodb-consistent-backup_zbackup")
30+
self.zbackup_lock = os.path.join(self.base_dir, "mongodb-consistent-backup_zbackup.lock")
2831
self.zbackup_backups = os.path.join(self.zbackup_dir, "backups")
2932
self.zbackup_backup_path = os.path.join(self.zbackup_backups, "%s.tar" % self.backup_time)
3033
self.zbackup_bundles = os.path.join(self.zbackup_dir, "bundles")
@@ -50,6 +53,10 @@ def init(self):
5053
else:
5154
raise OperationError("ZBackup dir: %s is not a zbackup storage directory!" % self.zbackup_dir)
5255
else:
56+
if not os.path.isdir(self.base_dir):
57+
os.makedirs(self.base_dir)
58+
lock = Lock(self.zbackup_lock)
59+
lock.acquire()
5360
try:
5461
cmd_line = [self.zbackup_binary]
5562
if self.zbackup_passwd_file:
@@ -65,6 +72,8 @@ def init(self):
6572
raise OperationError("ZBackup initialization failed! Exit code: %i" % exit_code)
6673
except Exception, e:
6774
raise OperationError("Error creating ZBackup storage directory! Error: %s" % e)
75+
finally:
76+
lock.release()
6877

6978
def version(self):
7079
if self._version:
@@ -148,6 +157,8 @@ def get_commands(self, base_dir, sub_dir):
148157

149158
def run(self):
150159
if self.has_zbackup():
160+
lock = Lock(self.zbackup_lock)
161+
lock.acquire()
151162
try:
152163
logging.info("Starting ZBackup version: %s (options: compression=%s, encryption=%s, threads=%i, cache_mb=%i)" %
153164
(self.version(), self.compression(), self.encrypted, self.threads(), self.zbackup_cache_mb)
@@ -171,5 +182,6 @@ def run(self):
171182
finally:
172183
self.running = False
173184
self.stopped = True
185+
lock.release()
174186
else:
175187
raise OperationError("Cannot find ZBackup at %s!" % self.zbackup_binary)

mongodb_consistent_backup/Backup/Mongodump/MongodumpThread.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
from multiprocessing import Process
66
from select import select
7+
from shutil import rmtree
78
from signal import signal, SIGINT, SIGTERM, SIG_IGN
89
from subprocess import Popen, PIPE
910

@@ -102,7 +103,7 @@ def run(self):
102103
mongodump_cmd = self.mongodump_cmd()
103104
try:
104105
if os.path.isdir(self.dump_dir):
105-
os.removedirs(self.dump_dir)
106+
rmtree(self.dump_dir)
106107
os.makedirs(self.dump_dir)
107108
logging.debug("Running mongodump cmd: %s" % mongodump_cmd)
108109
self._process = Popen(mongodump_cmd, stderr=PIPE)

mongodb_consistent_backup/Oplog/Tailer/Tailer.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@ def run(self):
6464
}
6565
self.shards[shard]['thread'].start()
6666
while not oplog_state.get('running'):
67+
if self.shards[shard]['thread'].exitcode:
68+
raise OperationError("Oplog tailer for %s failed with exit code %i!" % (mongo_uri, self.shards[shard]['thread'].exitcode))
6769
sleep(0.5)
6870

6971
def stop(self, kill=False, sleep_secs=0.5):

mongodb_consistent_backup/State.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,9 +132,9 @@ def load_backups(self):
132132
if os.path.isdir(self.base_dir):
133133
for subdir in os.listdir(self.base_dir):
134134
try:
135-
if subdir == self.meta_name:
135+
bkp_path = os.path.join(self.base_dir, subdir)
136+
if subdir == self.meta_name or os.path.islink(bkp_path):
136137
continue
137-
bkp_path = os.path.join(self.base_dir, subdir)
138138
state_path = os.path.join(bkp_path, self.meta_name)
139139
state_file = os.path.join(state_path, "meta.bson")
140140
done_path = os.path.join(state_path, "done.bson")

0 commit comments

Comments
 (0)