This is an automated email from the ASF dual-hosted git repository.

mkataria pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 34eb523  Revert "OAK-9552: Don't index except if it's 
oak:QueryIndexDefinition (#357)" (#366)
34eb523 is described below

commit 34eb52309837c2665f9dcd32db0f5d1fc72c8dbf
Author: Mohit Kataria <mkata...@apache.org>
AuthorDate: Thu Sep 9 15:42:26 2021 +0530

    Revert "OAK-9552: Don't index except if it's oak:QueryIndexDefinition 
(#357)" (#366)
    
    This reverts commit 7758523789202bc987673d1b74560266af4341c4.
---
 .../jackrabbit/oak/plugins/index/IndexUpdate.java  |  25 +--
 .../oak/plugins/index/lucene/InvalidIndexTest.java | 198 ---------------------
 2 files changed, 1 insertion(+), 222 deletions(-)

diff --git 
a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdate.java
 
b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdate.java
index 80a18e0..b4cce77 100644
--- 
a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdate.java
+++ 
b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdate.java
@@ -46,7 +46,6 @@ import java.util.Set;
 
 import com.google.common.collect.Iterables;
 
-import org.apache.jackrabbit.JcrConstants;
 import org.apache.jackrabbit.oak.api.CommitFailedException;
 import org.apache.jackrabbit.oak.api.PropertyState;
 import org.apache.jackrabbit.oak.api.Type;
@@ -74,14 +73,6 @@ public class IndexUpdate implements Editor, PathSource {
     private static final Logger log = 
LoggerFactory.getLogger(IndexUpdate.class);
     private static final String TYPE_ELASTICSEARCH = "elasticsearch";
 
-    //This is used so that wrong index definitions are sparsely logged. After 
every 1000 indexing cycles, index definitions
-    // with wrong nodetype will be logged.
-    public static final long INDEX_JCR_TYPE_INVALID_LOG_LIMITER = 
Long.parseLong(System.getProperty("oak.indexer.indexJcrTypeInvalidLogLimiter", 
"1000"));
-
-    // Initial value is set at indexJcrTypeInvalidLogLimiter so that first 
logging start on first cycle/update itself.
-    // This counter is cyclically incremented till 
indexJcrTypeInvalidLogLimiter and then reset to 0
-    private static volatile long cyclicExecutionCount = 
INDEX_JCR_TYPE_INVALID_LOG_LIMITER;
-
     /**
      * <p>
      * The value of this flag determines the behavior of the IndexUpdate when
@@ -133,6 +124,7 @@ public class IndexUpdate implements Editor, PathSource {
      */
     private final Map<String, Editor> reindex = new HashMap<String, Editor>();
 
+
     public IndexUpdate(
             IndexEditorProvider provider, String async,
             NodeState root, NodeBuilder builder,
@@ -288,25 +280,10 @@ public class IndexUpdate implements Editor, PathSource {
             NodeBuilder definition = definitions.getChildNode(name);
             if (isIncluded(rootState.async, definition)) {
                 String type = definition.getString(TYPE_PROPERTY_NAME);
-                String primaryType = 
definition.getName(JcrConstants.JCR_PRIMARYTYPE);
                 if (type == null) {
                     // probably not an index def
                     continue;
                 }
-                /*
-                 Log a warning after every indexJcrTypeInvalidLogLimiter 
cycles of indexer where nodeState changed.
-                 and skip further execution for invalid nodetype of index 
definition.
-                 */
-                if 
(!IndexConstants.INDEX_DEFINITIONS_NODE_TYPE.equals(primaryType)) {
-                    // It is a cyclic counter which reset back to 0 after 
INDEX_JCR_TYPE_INVALID_LOG_LIMITER
-                    // This is to sparsely log this warning.
-                    if ((cyclicExecutionCount >= 
INDEX_JCR_TYPE_INVALID_LOG_LIMITER)) {
-                        log.warn("jcr:primaryType of index {} should be {} 
instead of {}", name, IndexConstants.INDEX_DEFINITIONS_NODE_TYPE, primaryType);
-                        cyclicExecutionCount = 0;
-                    }
-                    cyclicExecutionCount++;
-                    continue;
-                }
 
                 boolean shouldReindex = shouldReindex(definition, before, 
name);
                 String indexPath = getIndexPath(getPath(), name);
diff --git 
a/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/InvalidIndexTest.java
 
b/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/InvalidIndexTest.java
deleted file mode 100644
index 7a2563b..0000000
--- 
a/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/InvalidIndexTest.java
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.jackrabbit.oak.plugins.index.lucene;
-
-import ch.qos.logback.classic.Level;
-import org.apache.jackrabbit.oak.InitialContent;
-import org.apache.jackrabbit.oak.Oak;
-import org.apache.jackrabbit.oak.api.*;
-import org.apache.jackrabbit.oak.commons.junit.LogCustomizer;
-import org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate;
-import org.apache.jackrabbit.oak.plugins.index.IndexUpdate;
-import org.apache.jackrabbit.oak.plugins.index.TrackingCorruptIndexHandler;
-import 
org.apache.jackrabbit.oak.plugins.index.counter.NodeCounterEditorProvider;
-import org.apache.jackrabbit.oak.plugins.index.nodetype.NodeTypeIndexProvider;
-import 
org.apache.jackrabbit.oak.plugins.index.property.PropertyIndexEditorProvider;
-import org.apache.jackrabbit.oak.plugins.index.property.PropertyIndexProvider;
-import org.apache.jackrabbit.oak.plugins.memory.MemoryNodeStore;
-import org.apache.jackrabbit.oak.spi.blob.MemoryBlobStore;
-import org.apache.jackrabbit.oak.spi.commit.Observer;
-import org.apache.jackrabbit.oak.spi.nodetype.NodeTypeConstants;
-import org.apache.jackrabbit.oak.spi.query.QueryIndexProvider;
-import org.apache.jackrabbit.oak.spi.security.OpenSecurityProvider;
-import org.apache.jackrabbit.oak.spi.state.NodeStore;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.util.List;
-import java.util.concurrent.TimeUnit;
-
-import static com.google.common.collect.Lists.newArrayList;
-import static 
org.apache.jackrabbit.oak.plugins.index.CompositeIndexEditorProvider.compose;
-import static 
org.apache.jackrabbit.oak.plugins.index.IndexConstants.INDEX_DEFINITIONS_NAME;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.assertFalse;
-
-/**
- * Tests: Logging of invalid jcr:primaryType of index.
- */
-public class InvalidIndexTest {
-
-    private final long INDEX_CORRUPT_INTERVAL_IN_MILLIS = 100;
-    private MemoryBlobStore blobStore;
-
-    protected Root root;
-
-    private AsyncIndexUpdate asyncIndexUpdate;
-
-    private static final String invalidJcrPrimaryTypeIndexName = 
"myTestIndexWithWrongJcrPrimaryType";
-    private static final String invalidJcrPrimaryTypeForIndex = 
NodeTypeConstants.NT_OAK_UNSTRUCTURED;
-
-    private NodeStore nodeStore;
-    private LogCustomizer customLogger;
-
-
-    // Setting contentCount to DEFAULT_indexJcrTypeInvalidLogLimiter + 1, so 
that invalid indexes are logged atleast once
-    private final long contentCount = 
IndexUpdate.INDEX_JCR_TYPE_INVALID_LOG_LIMITER + 1;
-
-    @Before
-    public void before() throws Exception {
-        ContentSession session = createRepository().login(null, null);
-        root = session.getLatestRoot();
-        customLogger = LogCustomizer
-                .forLogger(IndexUpdate.class.getName())
-                .enable(Level.WARN).create();
-        customLogger.starting();
-    }
-
-    @After
-    public void after() {
-        customLogger.finished();
-    }
-
-    private ContentRepository createRepository() {
-        nodeStore = new MemoryNodeStore();
-        blobStore = new MemoryBlobStore();
-        blobStore.setBlockSizeMin(48);//make it as small as possible
-
-        LuceneIndexEditorProvider luceneIndexEditorProvider = new 
LuceneIndexEditorProvider();
-        LuceneIndexProvider provider = new LuceneIndexProvider();
-        luceneIndexEditorProvider.setBlobStore(blobStore);
-
-        asyncIndexUpdate = new AsyncIndexUpdate("async", nodeStore, 
compose(newArrayList(
-                luceneIndexEditorProvider,
-                new NodeCounterEditorProvider()
-        )));
-        TrackingCorruptIndexHandler trackingCorruptIndexHandler = new 
TrackingCorruptIndexHandler();
-        
trackingCorruptIndexHandler.setCorruptInterval(INDEX_CORRUPT_INTERVAL_IN_MILLIS,
 TimeUnit.MILLISECONDS);
-        asyncIndexUpdate.setCorruptIndexHandler(trackingCorruptIndexHandler);
-        return new Oak(nodeStore)
-                .with(new InitialContent())
-                .with(new OpenSecurityProvider())
-                .with((QueryIndexProvider) provider)
-                .with((Observer) provider)
-                .with(luceneIndexEditorProvider)
-                .with(new PropertyIndexEditorProvider())
-                .with(new NodeTypeIndexProvider())
-                .with(new PropertyIndexProvider())
-                .with(new PropertyIndexEditorProvider())
-                .createContentRepository();
-    }
-
-    private void runEmptyAsyncIndexerCyclesWithoutNewContent(long count) {
-        for (int i = 0; i < count; i++) {
-            asyncIndexUpdate.run();
-        }
-    }
-
-    private void runIndexerCyclesAfterEachNodeCommit(long count, boolean 
async) throws CommitFailedException {
-        for (int i = 0; i < count; i++) {
-            root.getTree("/").addChild("testNode" + i);
-            root.commit();
-            if (async) {
-                asyncIndexUpdate.run();
-            }
-        }
-    }
-
-    private boolean assertionLogPresent(List<String> logs, String 
assertionLog) {
-        for (String log : logs) {
-            if (log.equals(assertionLog)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    private String invalidJcrPrimaryTypeLog() {
-        return "jcr:primaryType of index " + invalidJcrPrimaryTypeIndexName + 
" should be oak:QueryIndexDefinition instead of " + 
invalidJcrPrimaryTypeForIndex;
-    }
-
-    /**
-     * Logs warning as index is not a valid index definition
-     */
-    @Test
-    public void loggingInvalidJcrPrimaryType() throws Exception {
-        Tree test1 = 
root.getTree("/").addChild(INDEX_DEFINITIONS_NAME).addChild(invalidJcrPrimaryTypeIndexName);
-        test1.setProperty("jcr:primaryType", invalidJcrPrimaryTypeForIndex, 
Type.NAME);
-        test1.setProperty("type", "lucene");
-        test1.setProperty("reindex", true);
-        test1.setProperty("async", "async");
-        root.commit();
-        runIndexerCyclesAfterEachNodeCommit(contentCount, true);
-        runEmptyAsyncIndexerCyclesWithoutNewContent(contentCount);
-
-        List<String> logs = customLogger.getLogs();
-        assertTrue(assertionLogPresent(logs, invalidJcrPrimaryTypeLog()));
-    }
-
-    @Test
-    public void noLoggingIfNodeIsNotIndexDefinition() throws Exception {
-        // This is not a valid index definition. Refer method: 
IndexUpdate.isIncluded
-        Tree test1 = 
root.getTree("/").addChild(INDEX_DEFINITIONS_NAME).addChild(invalidJcrPrimaryTypeIndexName);
-        test1.setProperty("jcr:primaryType", invalidJcrPrimaryTypeForIndex, 
Type.NAME);
-        // Here index definition itself is not valid as there is no type 
property
-        // test1.setProperty("type", "lucene");
-        test1.setProperty("reindex", true);
-        test1.setProperty("async", "async");
-        root.commit();
-
-        runIndexerCyclesAfterEachNodeCommit(contentCount, true);
-        runEmptyAsyncIndexerCyclesWithoutNewContent(contentCount);
-
-        List<String> logs = customLogger.getLogs();
-        assertFalse(assertionLogPresent(logs, invalidJcrPrimaryTypeLog()));
-    }
-
-    @Test
-    public void loggingInCaseOfSyncLuceneIndexDefinition() throws Exception {
-        Tree test1 = 
root.getTree("/").addChild(INDEX_DEFINITIONS_NAME).addChild(invalidJcrPrimaryTypeIndexName);
-        test1.setProperty("jcr:primaryType", invalidJcrPrimaryTypeForIndex, 
Type.NAME);
-        test1.setProperty("type", "lucene");
-        test1.setProperty("reindex", true);
-        // test1.setProperty("async", "async");
-        root.commit();
-
-        runIndexerCyclesAfterEachNodeCommit(contentCount, false);
-        List<String> logs = customLogger.getLogs();
-        assertTrue(assertionLogPresent(logs, invalidJcrPrimaryTypeLog()));
-    }
-}

Reply via email to