You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by ch...@apache.org on 2015/09/08 16:31:15 UTC

svn commit: r1701807 - in /jackrabbit/oak/trunk: oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/ oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/osgi/ oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/

Author: chetanm
Date: Tue Sep  8 14:31:15 2015
New Revision: 1701807

URL: http://svn.apache.org/r1701807
Log:
OAK-3366 - Property indexes reindex flag getting reset to true at startup

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexEditorProvider.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/package-info.java
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/osgi/RepositoryManager.java
    jackrabbit/oak/trunk/oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/AbstractRepositoryFactoryTest.groovy
    jackrabbit/oak/trunk/oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/PropertyIndexReindexingTest.groovy

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexEditorProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexEditorProvider.java?rev=1701807&r1=1701806&r2=1701807&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexEditorProvider.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexEditorProvider.java Tue Sep  8 14:31:15 2015
@@ -19,7 +19,9 @@ package org.apache.jackrabbit.oak.plugin
 import javax.annotation.Nonnull;
 
 import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Property;
 import org.apache.felix.scr.annotations.Service;
+import org.apache.jackrabbit.oak.plugins.index.IndexConstants;
 import org.apache.jackrabbit.oak.plugins.index.IndexEditorProvider;
 import org.apache.jackrabbit.oak.spi.commit.Editor;
 import org.apache.jackrabbit.oak.plugins.index.IndexUpdateCallback;
@@ -34,6 +36,7 @@ import org.apache.jackrabbit.oak.spi.sta
  * 
  */
 @Component
+@Property(name = IndexConstants.TYPE_PROPERTY_NAME , value = "property", propertyPrivate = true)
 @Service(IndexEditorProvider.class)
 public class PropertyIndexEditorProvider implements IndexEditorProvider {
 

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/package-info.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/package-info.java?rev=1701807&r1=1701806&r2=1701807&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/package-info.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/package-info.java Tue Sep  8 14:31:15 2015
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-@Version("1.0")
+@Version("1.0.1")
 @Export(optional = "provide:=true")
 package org.apache.jackrabbit.oak.plugins.index.property;
 

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/osgi/RepositoryManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/osgi/RepositoryManager.java?rev=1701807&r1=1701806&r2=1701807&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/osgi/RepositoryManager.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/osgi/RepositoryManager.java Tue Sep  8 14:31:15 2015
@@ -29,10 +29,12 @@ import org.apache.felix.scr.annotations.
 import org.apache.felix.scr.annotations.Deactivate;
 import org.apache.felix.scr.annotations.Property;
 import org.apache.felix.scr.annotations.Reference;
+import org.apache.felix.scr.annotations.ReferenceStrategy;
 import org.apache.jackrabbit.oak.Oak;
 import org.apache.jackrabbit.oak.commons.PropertiesUtil;
 import org.apache.jackrabbit.oak.osgi.OsgiWhiteboard;
 import org.apache.jackrabbit.oak.plugins.commit.JcrConflictHandler;
+import org.apache.jackrabbit.oak.plugins.index.IndexEditorProvider;
 import org.apache.jackrabbit.oak.plugins.nodetype.write.InitialContent;
 import org.apache.jackrabbit.oak.plugins.observation.CommitRateLimiter;
 import org.apache.jackrabbit.oak.spi.lifecycle.RepositoryInitializer;
@@ -53,6 +55,10 @@ import org.osgi.framework.ServiceRegistr
  * to be configured in a custom way
  */
 @Component(policy = ConfigurationPolicy.REQUIRE)
+@Reference(referenceInterface = IndexEditorProvider.class,
+        target = "(type=property)",
+        strategy = ReferenceStrategy.LOOKUP
+)
 public class RepositoryManager {
     private static final int DEFAULT_OBSERVATION_QUEUE_LENGTH = 1000;
     private static final boolean DEFAULT_COMMIT_RATE_LIMIT = false;

Modified: jackrabbit/oak/trunk/oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/AbstractRepositoryFactoryTest.groovy
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/AbstractRepositoryFactoryTest.groovy?rev=1701807&r1=1701806&r2=1701807&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/AbstractRepositoryFactoryTest.groovy (original)
+++ jackrabbit/oak/trunk/oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/AbstractRepositoryFactoryTest.groovy Tue Sep  8 14:31:15 2015
@@ -26,6 +26,7 @@ import org.junit.After
 import org.junit.Before
 import org.junit.Rule
 import org.junit.rules.TemporaryFolder
+import org.osgi.framework.BundleContext
 import org.osgi.framework.ServiceReference
 import org.osgi.service.cm.ConfigurationAdmin
 import org.osgi.util.tracker.ServiceTracker
@@ -82,7 +83,11 @@ abstract class AbstractRepositoryFactory
     }
 
     protected <T> T getServiceWithWait(Class<T> clazz) {
-        ServiceTracker st = new ServiceTracker(getRegistry().bundleContext, clazz.name, null)
+        return getServiceWithWait(clazz, getRegistry().bundleContext)
+    }
+
+    protected static <T> T getServiceWithWait(Class<T> clazz, BundleContext bundleContext) {
+        ServiceTracker st = new ServiceTracker(bundleContext, clazz.name, null)
         st.open()
         T sr = (T) st.waitForService(TimeUnit.SECONDS.toMillis(SVC_WAIT_TIME))
         assert sr , "No service found for ${clazz.name}"

Modified: jackrabbit/oak/trunk/oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/PropertyIndexReindexingTest.groovy
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/PropertyIndexReindexingTest.groovy?rev=1701807&r1=1701806&r2=1701807&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/PropertyIndexReindexingTest.groovy (original)
+++ jackrabbit/oak/trunk/oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/PropertyIndexReindexingTest.groovy Tue Sep  8 14:31:15 2015
@@ -19,21 +19,21 @@
 
 package org.apache.jackrabbit.oak.run.osgi
 
+import org.apache.felix.connect.launch.PojoServiceRegistry
 import org.apache.felix.scr.Component
 import org.apache.felix.scr.ScrService
 import org.apache.jackrabbit.JcrConstants
 import org.apache.jackrabbit.commons.JcrUtils
 import org.apache.jackrabbit.oak.plugins.index.IndexConstants
 import org.junit.Before
-import org.junit.Ignore
 import org.junit.Test
 
 import javax.jcr.Node
+import javax.jcr.Repository
 import javax.jcr.Session
 
 import static org.apache.jackrabbit.oak.run.osgi.OakOSGiRepositoryFactory.REPOSITORY_CONFIG_FILE
 
-@Ignore("OAK-3366")
 class PropertyIndexReindexingTest extends AbstractRepositoryFactoryTest{
 
     @Before
@@ -44,6 +44,7 @@ class PropertyIndexReindexingTest extend
     @Test
     public void propertyIndexState() throws Exception{
         repository = repositoryFactory.getRepository(config)
+        PojoServiceRegistry registry = getRegistry()
 
         //1. Save a node with 'foo' property
         Session s = createAdminSession()
@@ -60,7 +61,7 @@ class PropertyIndexReindexingTest extend
 
         //3. By the last save reindex flag should be false
         s = createAdminSession()
-        assert false == s.getProperty("/oak:index/foo/reindex").boolean
+        assert !s.getProperty("/oak:index/foo/reindex").boolean
         s.logout()
 
         //4. Disable the PropertyIndexEditor
@@ -70,15 +71,16 @@ class PropertyIndexReindexingTest extend
 
         c[0].disable()
 
-        //5. Save another node with 'foo' property
-        s = createAdminSession()
-        s.getRootNode().addNode("a2").setProperty("foo", "bar")
-        s.save();  s.logout();
+       assert registry.getServiceReference(Repository.class.name) == null : "Repository should be unregistered " +
+               "if no property index editor found"
+
+        //5. Re-enable the editor and wait untill repository gets re-registered
+        c[0].enable()
+        getServiceWithWait(Repository.class, registry.bundleContext)
 
-        //Either last save should not have succeeded or at least reindex flag is not set to
-        //true
+        //6. Reindex flag should be stable
         s = createAdminSession()
-        assert false == s.getProperty("/oak:index/foo/reindex").boolean
+        assert !s.getProperty("/oak:index/foo/reindex").boolean
         s.logout()
     }
 }