From 446c1010185bd7ca836e686d6513f8d7c07828c5 Mon Sep 17 00:00:00 2001 From: Erdenezul Batmunkh Date: Wed, 23 May 2018 15:53:30 +0800 Subject: [PATCH 1/3] dont call ensure_indexes on slave #1338 --- mongoengine/document.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mongoengine/document.py b/mongoengine/document.py index 109f8f82..7d03bd60 100644 --- a/mongoengine/document.py +++ b/mongoengine/document.py @@ -195,7 +195,9 @@ class Document(BaseDocument): # Ensure indexes on the collection unless auto_create_index was # set to False. - if cls._meta.get('auto_create_index', True): + # Also there is no need to ensure indexes on slave. + if cls._meta.get('auto_create_index', True) and\ + db.client.is_primary: cls.ensure_indexes() return cls._collection From e8e47c39d78b25a6af9e6c77da1c2ce6fb5b88f7 Mon Sep 17 00:00:00 2001 From: Erdenezul Batmunkh Date: Wed, 23 May 2018 15:54:44 +0800 Subject: [PATCH 2/3] add changelog #1338 --- docs/changelog.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/changelog.rst b/docs/changelog.rst index 08e5a490..d5ee2b23 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -14,6 +14,7 @@ dev - Use new update_one, update_many on document/queryset update #1491 - Use insert_one, insert_many in Document.insert #1491 - Fix reload(fields) affect changed fields #1371 +- Fix Read-only access to database fails when trying to create indexes #1338 Changes in 0.15.0 ================= From 8739ab9c66e2cf84c3c206b95a5468263967b9d9 Mon Sep 17 00:00:00 2001 From: Erdenezul Batmunkh Date: Wed, 23 May 2018 15:59:18 +0800 Subject: [PATCH 3/3] fix syntax #1338 --- mongoengine/document.py | 1 + 1 file changed, 1 insertion(+) diff --git a/mongoengine/document.py b/mongoengine/document.py index 7d03bd60..0d471c3a 100644 --- a/mongoengine/document.py +++ b/mongoengine/document.py @@ -196,6 +196,7 @@ class Document(BaseDocument): # Ensure indexes on the collection unless auto_create_index was # set to False. # Also there is no need to ensure indexes on slave. + db = cls._get_db() if cls._meta.get('auto_create_index', True) and\ db.client.is_primary: cls.ensure_indexes()