Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 921eae3

Browse files
committed
backward compatibility for export: check if db version <= 2.3.6, then disable export of write-hooks
1 parent d3def38 commit 921eae3

File tree

2 files changed

+14
-8
lines changed

2 files changed

+14
-8
lines changed

rethinkdb/_export.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,8 @@ def export_table(db, table, directory, options, error_queue, progress_info, sind
234234

235235
writer = None
236236

237+
has_write_hooks = utils_common.check_minimum_version(options, '2.3.7', False)
238+
237239
try:
238240
# -- get table info
239241

@@ -248,13 +250,14 @@ def export_table(db, table, directory, options, error_queue, progress_info, sind
248250

249251
sindex_counter.value += len(table_info["indexes"])
250252

251-
table_info['write_hook'] = options.retryQuery(
252-
'table write hook data %s.%s' % (db, table),
253-
query.db(db).table(table).get_write_hook(),
254-
run_options={'binary_format': 'raw'})
253+
if has_write_hooks:
254+
table_info['write_hook'] = options.retryQuery(
255+
'table write hook data %s.%s' % (db, table),
256+
query.db(db).table(table).get_write_hook(),
257+
run_options={'binary_format': 'raw'})
255258

256-
if table_info['write_hook'] is not None:
257-
hook_counter.value += 1
259+
if table_info['write_hook'] is not None:
260+
hook_counter.value += 1
258261

259262
with open(os.path.join(directory, db, table + '.info'), 'w') as info_file:
260263
info_file.write(json.dumps(table_info) + "\n")

rethinkdb/utils_common.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ def print_progress(ratio, indent=0, read=None, write=None):
124124
sys.stdout.flush()
125125

126126

127-
def check_minimum_version(options, minimum_version='1.6'):
127+
def check_minimum_version(options, minimum_version='1.6', raise_exception=True):
128128
minimum_version = distutils.version.LooseVersion(minimum_version)
129129
version_string = options.retryQuery('get server version', query.db(
130130
'rethinkdb').table('server_status')[0]['process']['version'])
@@ -135,7 +135,10 @@ def check_minimum_version(options, minimum_version='1.6'):
135135
raise RuntimeError("invalid version string format: %s" % version_string)
136136

137137
if distutils.version.LooseVersion(matches.group('version')) < minimum_version:
138-
raise RuntimeError("Incompatible version, expected >= %s got: %s" % (minimum_version, version_string))
138+
if raise_exception:
139+
raise RuntimeError("Incompatible version, expected >= %s got: %s" % (minimum_version, version_string))
140+
return False
141+
return True
139142

140143

141144
DbTable = collections.namedtuple('DbTable', ['db', 'table'])

0 commit comments

Comments
 (0)