You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by GitBox <gi...@apache.org> on 2022/03/21 23:51:50 UTC

[GitHub] [jackrabbit-oak] FrancoisZhang opened a new pull request #525: OAK-9734 Index purge should prevent fully delete index definition whi…

FrancoisZhang opened a new pull request #525:
URL: https://github.com/apache/jackrabbit-oak/pull/525


   …ch is is read-only repo


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscribe@jackrabbit.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [jackrabbit-oak] FrancoisZhang commented on a change in pull request #525: OAK-9734 Index purge should prevent fully delete index definition whi…

Posted by GitBox <gi...@apache.org>.
FrancoisZhang commented on a change in pull request #525:
URL: https://github.com/apache/jackrabbit-oak/pull/525#discussion_r834566636



##########
File path: oak-run/src/main/java/org/apache/jackrabbit/oak/indexversion/IndexVersionOperation.java
##########
@@ -70,58 +70,93 @@ public String toString() {
      */
     public static List<IndexVersionOperation> generateIndexVersionOperationList(NodeState indexDefParentNode,
                                                                                 List<IndexName> indexNameObjectList, long purgeThresholdMillis) {
-        int activeProductVersion = -1;
         List<IndexName> reverseSortedIndexNameList = getReverseSortedIndexNameList(indexNameObjectList);
-        removeDisabledCustomIndexesFromList(indexDefParentNode, reverseSortedIndexNameList);
         List<IndexVersionOperation> indexVersionOperationList = new LinkedList<>();
-        for (IndexName indexNameObject : reverseSortedIndexNameList) {
-            NodeState indexNode = indexDefParentNode
-                    .getChildNode(PathUtils.getName(indexNameObject.getNodeName()));
-            /*
-            All Indexes are by default NOOP until we get index which is active for more than threshold limit
-             */
-            if (activeProductVersion == -1) {
-                indexVersionOperationList.add(new IndexVersionOperation(indexNameObject));
-                if (indexNode.hasChildNode(IndexDefinition.STATUS_NODE)) {
-                    if (indexNode.getChildNode(IndexDefinition.STATUS_NODE)
-                            .getProperty(IndexDefinition.REINDEX_COMPLETION_TIMESTAMP) != null) {
-                        String reindexCompletionTime = indexDefParentNode
-                                .getChildNode(PathUtils.getName(indexNameObject.getNodeName()))
-                                .getChildNode(IndexDefinition.STATUS_NODE)
-                                .getProperty(IndexDefinition.REINDEX_COMPLETION_TIMESTAMP).getValue(Type.DATE);
-                        long reindexCompletionTimeInMillis = PurgeOldVersionUtils.getMillisFromString(reindexCompletionTime);
-                        long currentTimeInMillis = System.currentTimeMillis();
-                        if (currentTimeInMillis - reindexCompletionTimeInMillis > purgeThresholdMillis) {
-                            activeProductVersion = indexNameObject.getProductVersion();
-                        }
+
+        List<IndexName> disableIndexNameObjectList = removeDisabledCustomIndexesFromList(indexDefParentNode, reverseSortedIndexNameList);
+        // for disabled indexes, we check if they exist in read-only repo, it not anymore, do full deletion then, otherwise, no action needed
+        for (IndexName indexNameObject : disableIndexNameObjectList) {
+            String indexName = indexNameObject.getNodeName();
+            NodeState indexNode = indexDefParentNode.getChildNode(PathUtils.getName(indexName));
+            IndexVersionOperation indexVersionOperation = new IndexVersionOperation(indexNameObject);
+            if (!isHiddenOakMountExists(indexNode)) {
+                indexVersionOperation.setOperation(Operation.DELETE);
+            }
+            indexVersionOperationList.add(indexVersionOperation);
+        }
+
+        if (!reverseSortedIndexNameList.isEmpty()) {
+            IndexName activeIndexNameObject = reverseSortedIndexNameList.remove(0);
+            NodeState activeIndexNode = indexDefParentNode.getChildNode(PathUtils.getName(activeIndexNameObject.getNodeName()));
+            boolean isActiveIndexLongEnough = isIndexPurgeReady(activeIndexNameObject, activeIndexNode, purgeThresholdMillis);
+            int activeProductVersion = activeIndexNameObject.getProductVersion();
+            indexVersionOperationList.add(new IndexVersionOperation(activeIndexNameObject));
+
+            // for rest indexes except active index
+            for (IndexName indexNameObject : reverseSortedIndexNameList) {
+                String indexName = indexNameObject.getNodeName();
+                NodeState indexNode = indexDefParentNode.getChildNode(PathUtils.getName(indexName));
+                IndexVersionOperation indexVersionOperation = new IndexVersionOperation(indexNameObject);
+                // if active index not long enough, NOOP for all indexes
+                if (isActiveIndexLongEnough) {
+                    if (indexNameObject.getProductVersion() == activeProductVersion && indexNameObject.getCustomerVersion() == 0) {
+                        indexVersionOperation.setOperation(Operation.DELETE_HIDDEN_AND_DISABLE);
                     } else {
-                        LOG.warn(IndexDefinition.REINDEX_COMPLETION_TIMESTAMP
-                                + " property is not set for index " + indexNameObject.getNodeName());
+                        // the check hidden oak mount logic only works when passing through the proper composite store
+                        if (isHiddenOakMountExists(indexNode)) {
+                            LOG.info("Found hidden oak mount node for: '{}', disable it but no index definition deletion", indexName);
+                            indexVersionOperation.setOperation(Operation.DELETE_HIDDEN_AND_DISABLE);
+                        } else {
+                            indexVersionOperation.setOperation(Operation.DELETE);
+                        }
                     }
                 }
-            } else {
-            /*
-            Once we found active index, we mark all its custom version with DELETE
-            and OOTB same product version index with DELETE_HIDDEN_AND_DISABLE
-             */
-                if (indexNameObject.getProductVersion() == activeProductVersion
-                        && indexNameObject.getCustomerVersion() == 0) {
-                    IndexVersionOperation indexVersionOperation = new IndexVersionOperation(indexNameObject);
-                    indexVersionOperation.setOperation(Operation.DELETE_HIDDEN_AND_DISABLE);
-                    indexVersionOperationList.add(indexVersionOperation);
-                } else {
-                    IndexVersionOperation indexVersionOperation = new IndexVersionOperation(indexNameObject);
-                    indexVersionOperation.setOperation(Operation.DELETE);
-                    indexVersionOperationList.add(indexVersionOperation);
-                }
+                LOG.info("The operation for index '{}' will be: '{}'", indexName, indexVersionOperation.getOperation());
+                indexVersionOperationList.add(indexVersionOperation);
             }
         }
         if (!isValidIndexVersionOperationList(indexVersionOperationList)) {
+            LOG.info("Not valid version operation list: '{}', skip all", indexNameObjectList);
             indexVersionOperationList = Collections.emptyList();
         }
         return indexVersionOperationList;
     }
 
+    // do index purge ready based on the active index's last reindexing time is longer enough, we do this for prevent rollback
+    private static boolean isIndexPurgeReady(IndexName activeIndexName, NodeState activeIndexNode, long purgeThresholdMillis) {
+        // the 1st index must be active
+        String indexName = activeIndexName.getNodeName();
+        if (activeIndexNode.hasChildNode(IndexDefinition.STATUS_NODE)) {
+            if (activeIndexNode.getChildNode(IndexDefinition.STATUS_NODE)
+                    .getProperty(IndexDefinition.REINDEX_COMPLETION_TIMESTAMP) != null) {
+                String reindexCompletionTime = activeIndexNode.getChildNode(IndexDefinition.STATUS_NODE)
+                        .getProperty(IndexDefinition.REINDEX_COMPLETION_TIMESTAMP)
+                        .getValue(Type.DATE);
+                long reindexCompletionTimeInMillis = PurgeOldVersionUtils.getMillisFromString(reindexCompletionTime);
+                long currentTimeInMillis = System.currentTimeMillis();
+                if (currentTimeInMillis - reindexCompletionTimeInMillis > purgeThresholdMillis) {
+                    LOG.info("Found active index {} is longer enough", indexName);
+                    return true;
+                } else {
+                    LOG.info("The last index time '{}' isn't longer enough for: {}", reindexCompletionTime, indexName);
+                }
+            } else {
+                LOG.warn("{} property is not set for index {}", IndexDefinition.REINDEX_COMPLETION_TIMESTAMP, indexName);

Review comment:
       @thomasmueller actually not, since the job will run twice, first run it in readonly mode for getting purging list. which is especially prevent do heavy segment clone and uploading for golden publish from beginning. hence this isn't a good place to do writing. seems still be better do this during AEM init.




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscribe@jackrabbit.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [jackrabbit-oak] FrancoisZhang commented on a change in pull request #525: OAK-9734 Index purge should prevent fully delete index definition whi…

Posted by GitBox <gi...@apache.org>.
FrancoisZhang commented on a change in pull request #525:
URL: https://github.com/apache/jackrabbit-oak/pull/525#discussion_r834562588



##########
File path: oak-run/src/test/java/org/apache/jackrabbit/oak/indexversion/PurgeOldIndexVersionTest.java
##########
@@ -80,39 +85,63 @@ public void deleteOldIndexCompletely() throws Exception {
         createCustomIndex(TEST_INDEX_PATH, 4, 0, false);
         createCustomIndex(TEST_INDEX_PATH, 4, 1, false);
         createCustomIndex(TEST_INDEX_PATH, 4, 2, false);
-        fixture.getAsyncIndexUpdate("async").run();
-        fixture.close();
-        PurgeOldIndexVersionCommand command = new PurgeOldIndexVersionCommand();
-        File storeDir = fixture.getDir();
-        String[] args = {
-                storeDir.getAbsolutePath(),
-                "--read-write",
-                "--threshold=1"
-        };
 
-        command.execute(args);
-        fixture = new RepositoryFixture(storeDir);
-        fixture.close();
+        runIndexPurgeCommand(true, 1, "");
+
+        NodeState indexRootNode = fixture.getNodeStore().getRoot().getChildNode("oak:index");
 
-        Assert.assertFalse("Index:" + "fooIndex-2" + " deleted", fixture.getNodeStore().getRoot().getChildNode("oak:index").getChildNode("fooIndex-2").exists());
-        Assert.assertFalse("Index:" + "fooIndex-2-custom-1" + " deleted", fixture.getNodeStore().getRoot().getChildNode("oak:index").getChildNode("fooIndex-2-custom-1").exists());
-        Assert.assertFalse("Index:" + "fooIndex-3" + " deleted", fixture.getNodeStore().getRoot().getChildNode("oak:index").getChildNode("fooIndex-3").exists());
-        Assert.assertFalse("Index:" + "fooIndex-3-custom-1" + " deleted", fixture.getNodeStore().getRoot().getChildNode("oak:index").getChildNode("fooIndex-3-custom-1").exists());
-        Assert.assertFalse("Index:" + "fooIndex-3-custom-2" + " deleted", fixture.getNodeStore().getRoot().getChildNode("oak:index").getChildNode("fooIndex-3-custom-2").exists());
-        Assert.assertFalse("Index:" + "fooIndex" + " deleted", fixture.getNodeStore().getRoot().getChildNode("oak:index").getChildNode("fooIndex").exists());
-        Assert.assertEquals(fixture.getNodeStore().getRoot().getChildNode("oak:index").getChildNode("fooIndex-4").getProperty("type").getValue(Type.STRING), "disabled");
-        Assert.assertFalse(isHiddenChildNodePresent(fixture.getNodeStore().getRoot().getChildNode("oak:index").getChildNode("fooIndex-4")));
-        Assert.assertFalse("Index:" + "fooIndex-4-custom-1" + " deleted", fixture.getNodeStore().getRoot().getChildNode("oak:index").getChildNode("fooIndex-4-custom-1").exists());
-        Assert.assertTrue("Index:" + "fooIndex-4-custom-2" + " deleted", fixture.getNodeStore().getRoot().getChildNode("oak:index").getChildNode("fooIndex-4-custom-2").exists());
+        Assert.assertFalse("Index:" + "fooIndex-2" + " deleted", indexRootNode.getChildNode("fooIndex-2").exists());
+        Assert.assertFalse("Index:" + "fooIndex-2-custom-1" + " deleted", indexRootNode.getChildNode("fooIndex-2-custom-1").exists());
+        Assert.assertFalse("Index:" + "fooIndex-3" + " deleted", indexRootNode.getChildNode("fooIndex-3").exists());
+        Assert.assertFalse("Index:" + "fooIndex-3-custom-1" + " deleted", indexRootNode.getChildNode("fooIndex-3-custom-1").exists());
+        Assert.assertFalse("Index:" + "fooIndex-3-custom-2" + " deleted", indexRootNode.getChildNode("fooIndex-3-custom-2").exists());
+        Assert.assertFalse("Index:" + "fooIndex" + " deleted", indexRootNode.getChildNode("fooIndex").exists());
+        Assert.assertEquals(indexRootNode.getChildNode("fooIndex-4").getProperty("type").getValue(Type.STRING), "disabled");

Review comment:
       @thomasmueller makes sense, missed this legacy tests, just made another commit for refining it




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscribe@jackrabbit.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [jackrabbit-oak] thomasmueller commented on a change in pull request #525: OAK-9734 Index purge should prevent fully delete index definition whi…

Posted by GitBox <gi...@apache.org>.
thomasmueller commented on a change in pull request #525:
URL: https://github.com/apache/jackrabbit-oak/pull/525#discussion_r831864110



##########
File path: oak-run/src/main/java/org/apache/jackrabbit/oak/indexversion/IndexVersionOperation.java
##########
@@ -70,58 +70,93 @@ public String toString() {
      */
     public static List<IndexVersionOperation> generateIndexVersionOperationList(NodeState indexDefParentNode,
                                                                                 List<IndexName> indexNameObjectList, long purgeThresholdMillis) {
-        int activeProductVersion = -1;
         List<IndexName> reverseSortedIndexNameList = getReverseSortedIndexNameList(indexNameObjectList);
-        removeDisabledCustomIndexesFromList(indexDefParentNode, reverseSortedIndexNameList);
         List<IndexVersionOperation> indexVersionOperationList = new LinkedList<>();
-        for (IndexName indexNameObject : reverseSortedIndexNameList) {
-            NodeState indexNode = indexDefParentNode
-                    .getChildNode(PathUtils.getName(indexNameObject.getNodeName()));
-            /*
-            All Indexes are by default NOOP until we get index which is active for more than threshold limit
-             */
-            if (activeProductVersion == -1) {
-                indexVersionOperationList.add(new IndexVersionOperation(indexNameObject));
-                if (indexNode.hasChildNode(IndexDefinition.STATUS_NODE)) {
-                    if (indexNode.getChildNode(IndexDefinition.STATUS_NODE)
-                            .getProperty(IndexDefinition.REINDEX_COMPLETION_TIMESTAMP) != null) {
-                        String reindexCompletionTime = indexDefParentNode
-                                .getChildNode(PathUtils.getName(indexNameObject.getNodeName()))
-                                .getChildNode(IndexDefinition.STATUS_NODE)
-                                .getProperty(IndexDefinition.REINDEX_COMPLETION_TIMESTAMP).getValue(Type.DATE);
-                        long reindexCompletionTimeInMillis = PurgeOldVersionUtils.getMillisFromString(reindexCompletionTime);
-                        long currentTimeInMillis = System.currentTimeMillis();
-                        if (currentTimeInMillis - reindexCompletionTimeInMillis > purgeThresholdMillis) {
-                            activeProductVersion = indexNameObject.getProductVersion();
-                        }
+
+        List<IndexName> disableIndexNameObjectList = removeDisabledCustomIndexesFromList(indexDefParentNode, reverseSortedIndexNameList);
+        // for disabled indexes, we check if they exist in read-only repo, it not anymore, do full deletion then, otherwise, no action needed
+        for (IndexName indexNameObject : disableIndexNameObjectList) {
+            String indexName = indexNameObject.getNodeName();
+            NodeState indexNode = indexDefParentNode.getChildNode(PathUtils.getName(indexName));
+            IndexVersionOperation indexVersionOperation = new IndexVersionOperation(indexNameObject);
+            if (!isHiddenOakMountExists(indexNode)) {
+                indexVersionOperation.setOperation(Operation.DELETE);
+            }
+            indexVersionOperationList.add(indexVersionOperation);
+        }
+
+        if (!reverseSortedIndexNameList.isEmpty()) {
+            IndexName activeIndexNameObject = reverseSortedIndexNameList.remove(0);
+            NodeState activeIndexNode = indexDefParentNode.getChildNode(PathUtils.getName(activeIndexNameObject.getNodeName()));
+            boolean isActiveIndexLongEnough = isIndexPurgeReady(activeIndexNameObject, activeIndexNode, purgeThresholdMillis);
+            int activeProductVersion = activeIndexNameObject.getProductVersion();
+            indexVersionOperationList.add(new IndexVersionOperation(activeIndexNameObject));
+
+            // for rest indexes except active index
+            for (IndexName indexNameObject : reverseSortedIndexNameList) {
+                String indexName = indexNameObject.getNodeName();
+                NodeState indexNode = indexDefParentNode.getChildNode(PathUtils.getName(indexName));
+                IndexVersionOperation indexVersionOperation = new IndexVersionOperation(indexNameObject);
+                // if active index not long enough, NOOP for all indexes
+                if (isActiveIndexLongEnough) {
+                    if (indexNameObject.getProductVersion() == activeProductVersion && indexNameObject.getCustomerVersion() == 0) {
+                        indexVersionOperation.setOperation(Operation.DELETE_HIDDEN_AND_DISABLE);
                     } else {
-                        LOG.warn(IndexDefinition.REINDEX_COMPLETION_TIMESTAMP
-                                + " property is not set for index " + indexNameObject.getNodeName());
+                        // the check hidden oak mount logic only works when passing through the proper composite store
+                        if (isHiddenOakMountExists(indexNode)) {
+                            LOG.info("Found hidden oak mount node for: '{}', disable it but no index definition deletion", indexName);
+                            indexVersionOperation.setOperation(Operation.DELETE_HIDDEN_AND_DISABLE);
+                        } else {
+                            indexVersionOperation.setOperation(Operation.DELETE);
+                        }
                     }
                 }
-            } else {
-            /*
-            Once we found active index, we mark all its custom version with DELETE
-            and OOTB same product version index with DELETE_HIDDEN_AND_DISABLE
-             */
-                if (indexNameObject.getProductVersion() == activeProductVersion
-                        && indexNameObject.getCustomerVersion() == 0) {
-                    IndexVersionOperation indexVersionOperation = new IndexVersionOperation(indexNameObject);
-                    indexVersionOperation.setOperation(Operation.DELETE_HIDDEN_AND_DISABLE);
-                    indexVersionOperationList.add(indexVersionOperation);
-                } else {
-                    IndexVersionOperation indexVersionOperation = new IndexVersionOperation(indexNameObject);
-                    indexVersionOperation.setOperation(Operation.DELETE);
-                    indexVersionOperationList.add(indexVersionOperation);
-                }
+                LOG.info("The operation for index '{}' will be: '{}'", indexName, indexVersionOperation.getOperation());
+                indexVersionOperationList.add(indexVersionOperation);
             }
         }
         if (!isValidIndexVersionOperationList(indexVersionOperationList)) {
+            LOG.info("Not valid version operation list: '{}', skip all", indexNameObjectList);
             indexVersionOperationList = Collections.emptyList();
         }
         return indexVersionOperationList;
     }
 
+    // do index purge ready based on the active index's last reindexing time is longer enough, we do this for prevent rollback
+    private static boolean isIndexPurgeReady(IndexName activeIndexName, NodeState activeIndexNode, long purgeThresholdMillis) {
+        // the 1st index must be active
+        String indexName = activeIndexName.getNodeName();
+        if (activeIndexNode.hasChildNode(IndexDefinition.STATUS_NODE)) {
+            if (activeIndexNode.getChildNode(IndexDefinition.STATUS_NODE)
+                    .getProperty(IndexDefinition.REINDEX_COMPLETION_TIMESTAMP) != null) {
+                String reindexCompletionTime = activeIndexNode.getChildNode(IndexDefinition.STATUS_NODE)
+                        .getProperty(IndexDefinition.REINDEX_COMPLETION_TIMESTAMP)
+                        .getValue(Type.DATE);
+                long reindexCompletionTimeInMillis = PurgeOldVersionUtils.getMillisFromString(reindexCompletionTime);
+                long currentTimeInMillis = System.currentTimeMillis();
+                if (currentTimeInMillis - reindexCompletionTimeInMillis > purgeThresholdMillis) {
+                    LOG.info("Found active index {} is longer enough", indexName);
+                    return true;
+                } else {
+                    LOG.info("The last index time '{}' isn't longer enough for: {}", reindexCompletionTime, indexName);
+                }
+            } else {
+                LOG.warn("{} property is not set for index {}", IndexDefinition.REINDEX_COMPLETION_TIMESTAMP, indexName);

Review comment:
       I think the logic is correct... but how can we set the value if it is missing? Currently I'm not sure where we should set the property... Maybe we could set it right here (I think we have write access), to the current date.

##########
File path: oak-run/src/test/java/org/apache/jackrabbit/oak/indexversion/PurgeOldIndexVersionTest.java
##########
@@ -80,39 +85,63 @@ public void deleteOldIndexCompletely() throws Exception {
         createCustomIndex(TEST_INDEX_PATH, 4, 0, false);
         createCustomIndex(TEST_INDEX_PATH, 4, 1, false);
         createCustomIndex(TEST_INDEX_PATH, 4, 2, false);
-        fixture.getAsyncIndexUpdate("async").run();
-        fixture.close();
-        PurgeOldIndexVersionCommand command = new PurgeOldIndexVersionCommand();
-        File storeDir = fixture.getDir();
-        String[] args = {
-                storeDir.getAbsolutePath(),
-                "--read-write",
-                "--threshold=1"
-        };
 
-        command.execute(args);
-        fixture = new RepositoryFixture(storeDir);
-        fixture.close();
+        runIndexPurgeCommand(true, 1, "");
+
+        NodeState indexRootNode = fixture.getNodeStore().getRoot().getChildNode("oak:index");
 
-        Assert.assertFalse("Index:" + "fooIndex-2" + " deleted", fixture.getNodeStore().getRoot().getChildNode("oak:index").getChildNode("fooIndex-2").exists());
-        Assert.assertFalse("Index:" + "fooIndex-2-custom-1" + " deleted", fixture.getNodeStore().getRoot().getChildNode("oak:index").getChildNode("fooIndex-2-custom-1").exists());
-        Assert.assertFalse("Index:" + "fooIndex-3" + " deleted", fixture.getNodeStore().getRoot().getChildNode("oak:index").getChildNode("fooIndex-3").exists());
-        Assert.assertFalse("Index:" + "fooIndex-3-custom-1" + " deleted", fixture.getNodeStore().getRoot().getChildNode("oak:index").getChildNode("fooIndex-3-custom-1").exists());
-        Assert.assertFalse("Index:" + "fooIndex-3-custom-2" + " deleted", fixture.getNodeStore().getRoot().getChildNode("oak:index").getChildNode("fooIndex-3-custom-2").exists());
-        Assert.assertFalse("Index:" + "fooIndex" + " deleted", fixture.getNodeStore().getRoot().getChildNode("oak:index").getChildNode("fooIndex").exists());
-        Assert.assertEquals(fixture.getNodeStore().getRoot().getChildNode("oak:index").getChildNode("fooIndex-4").getProperty("type").getValue(Type.STRING), "disabled");
-        Assert.assertFalse(isHiddenChildNodePresent(fixture.getNodeStore().getRoot().getChildNode("oak:index").getChildNode("fooIndex-4")));
-        Assert.assertFalse("Index:" + "fooIndex-4-custom-1" + " deleted", fixture.getNodeStore().getRoot().getChildNode("oak:index").getChildNode("fooIndex-4-custom-1").exists());
-        Assert.assertTrue("Index:" + "fooIndex-4-custom-2" + " deleted", fixture.getNodeStore().getRoot().getChildNode("oak:index").getChildNode("fooIndex-4-custom-2").exists());
+        Assert.assertFalse("Index:" + "fooIndex-2" + " deleted", indexRootNode.getChildNode("fooIndex-2").exists());
+        Assert.assertFalse("Index:" + "fooIndex-2-custom-1" + " deleted", indexRootNode.getChildNode("fooIndex-2-custom-1").exists());
+        Assert.assertFalse("Index:" + "fooIndex-3" + " deleted", indexRootNode.getChildNode("fooIndex-3").exists());
+        Assert.assertFalse("Index:" + "fooIndex-3-custom-1" + " deleted", indexRootNode.getChildNode("fooIndex-3-custom-1").exists());
+        Assert.assertFalse("Index:" + "fooIndex-3-custom-2" + " deleted", indexRootNode.getChildNode("fooIndex-3-custom-2").exists());
+        Assert.assertFalse("Index:" + "fooIndex" + " deleted", indexRootNode.getChildNode("fooIndex").exists());
+        Assert.assertEquals(indexRootNode.getChildNode("fooIndex-4").getProperty("type").getValue(Type.STRING), "disabled");

Review comment:
       Nit: I would swap the parameters (the literal "disabled" should come first)




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscribe@jackrabbit.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [jackrabbit-oak] thomasmueller merged pull request #525: OAK-9734 Index purge should prevent fully delete index definition whi…

Posted by GitBox <gi...@apache.org>.
thomasmueller merged pull request #525:
URL: https://github.com/apache/jackrabbit-oak/pull/525


   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscribe@jackrabbit.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org