thomasmueller commented on code in PR #562:
URL: https://github.com/apache/jackrabbit-oak/pull/562#discussion_r866548521
##
oak-run/src/main/java/org/apache/jackrabbit/oak/indexversion/IndexVersionOperation.java:
##
@@ -86,42 +92,65 @@ public static List
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
Review Comment:
I would make this comment a bit clearer:
```
// the reverseSortedIndexNameList will now contain the remaining indexes;
// the active index was removed from that list
```
##
oak-run/src/main/java/org/apache/jackrabbit/oak/indexversion/IndexVersionOperation.java:
##
@@ -86,42 +92,65 @@ public static List
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