From 4ed6bb54f1cc96ee0a8b98914c98b94edc1d1b1c Mon Sep 17 00:00:00 2001 From: drebs Date: Fri, 19 Aug 2016 12:14:40 -0300 Subject: [pkg] add leftovers deletion to couch scehma migration script Previous versions of the couchdb schema used documents "u1db_sync_log" and "u1db_sync_state" to store sync metadata. At some point this was changed, but the documents might have stayed as leftovers. This commit adds the deletion of such documents to the migration script. --- scripts/migration/0.8.2/migrate_couch_schema/__init__.py | 15 +++++++++++++++ scripts/migration/0.8.2/tests/conftest.py | 6 +++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/scripts/migration/0.8.2/migrate_couch_schema/__init__.py b/scripts/migration/0.8.2/migrate_couch_schema/__init__.py index 37e5a525..60214aae 100644 --- a/scripts/migration/0.8.2/migrate_couch_schema/__init__.py +++ b/scripts/migration/0.8.2/migrate_couch_schema/__init__.py @@ -119,6 +119,21 @@ def _migrate_sync_docs(db, do_migrate): for row in view.rows: old_doc = row['doc'] old_id = old_doc['_id'] + + # older schemas used different documents with ids starting with + # "u1db_sync" to store sync-related data: + # + # - u1db_sync_log: was used to store the whole sync log. + # - u1db_sync_state: was used to store the sync state. + # + # if any of these documents exist in the current db, they are leftover + # from previous migrations, and should just be removed. + if old_id in ['u1db_sync_log', 'u1db_sync_state']: + logger.info('removing leftover "u1db_sync_log" document...') + if do_migrate: + db.delete(old_doc) + continue + replica_uid = old_id.replace('u1db_sync_', '') new_id = "%s%s" % (SYNC_DOC_ID_PREFIX, replica_uid) new_doc = { diff --git a/scripts/migration/0.8.2/tests/conftest.py b/scripts/migration/0.8.2/tests/conftest.py index 92d1e17e..8e49891c 100644 --- a/scripts/migration/0.8.2/tests/conftest.py +++ b/scripts/migration/0.8.2/tests/conftest.py @@ -31,7 +31,11 @@ initial_docs = [ {'_id': 'doc2', 'u1db_transactions': [(2, 'trans-2'), (4, 'trans-4')]}, {'_id': '_design/docs'}, {'_id': '_design/syncs'}, - {'_id': '_design/transactions', 'views': {'log': {'map': transaction_map}}} + {'_id': '_design/transactions', + 'views': {'log': {'map': transaction_map}}}, + # the following should be removed if found in the dbs + {'_id': 'u1db_sync_log'}, + {'_id': 'u1db_sync_state'}, ] -- cgit v1.2.3