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()
}
}