FrancoisZhang commented on code in PR #562:
URL: https://github.com/apache/jackrabbit-oak/pull/562#discussion_r867005282


##########
oak-run/src/main/java/org/apache/jackrabbit/oak/indexversion/IndexVersionOperation.java:
##########
@@ -86,42 +92,65 @@ public static List<IndexVersionOperation> 
generateIndexVersionOperationList(Node
         }
 
         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));
+            IndexName activeIndexNameObject = 
getActiveIndex(reverseSortedIndexNameList, parentPath, rootNode);
+            if (activeIndexNameObject == null) {
+                LOG.warn("Cannot find any active index from the list: {}", 
reverseSortedIndexNameList);
+            } else {
+                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 {
-                        // 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);
+                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 {
-                            
indexVersionOperation.setOperation(Operation.DELETE);
+                        } else if (indexNameObject.getProductVersion() <= 
activeProductVersion ) {
+                            // 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);
+                            }
                         }
+                        // if the index product version is larger than active 
index, leave it as is
+                        // for instance: if there is active damAssetLucene-7, 
the inactive damAssetLucene-8 will be leave there as is

Review Comment:
   @thomasmueller makes sense, let me refine this a bit to have a log here



-- 
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-unsubscr...@jackrabbit.apache.org

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

Reply via email to