Author: chetanm
Date: Wed Nov 23 06:17:08 2016
New Revision: 1770918
URL: http://svn.apache.org/viewvc?rev=1770918&view=rev
Log:
OAK-4939 - Isolate corrupted index and make async indexer more resilient
Set status to failing in case of any corrupt index
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/jmx/IndexStatsMBean.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/jmx/package-info.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdate.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdateTest.java
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/jmx/IndexStatsMBean.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/jmx/IndexStatsMBean.java?rev=1770918&r1=1770917&r2=1770918&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/jmx/IndexStatsMBean.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/jmx/IndexStatsMBean.java
Wed Nov 23 06:17:08 2016
@@ -35,6 +35,8 @@ public interface IndexStatsMBean {
String STATUS_DONE = "done";
+ String STATUS_FAILING = "failing";
+
String STATUS_INTERRUPTED = "interrupted";
/**
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/jmx/package-info.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/jmx/package-info.java?rev=1770918&r1=1770917&r2=1770918&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/jmx/package-info.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/jmx/package-info.java
Wed Nov 23 06:17:08 2016
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-@Version("4.3.0")
+@Version("4.4.0")
@Export(optional = "provide:=true")
package org.apache.jackrabbit.oak.api.jmx;
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdate.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdate.java?rev=1770918&r1=1770917&r2=1770918&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdate.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdate.java
Wed Nov 23 06:17:08 2016
@@ -896,7 +896,11 @@ public class AsyncIndexUpdate implements
}
public void done(String now) {
- status = STATUS_DONE;
+ if (corruptIndexHandler.isFailing(name)){
+ status = STATUS_FAILING;
+ } else {
+ status = STATUS_DONE;
+ }
done = now;
if (watch.isRunning()) {
watch.stop();
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdateTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdateTest.java?rev=1770918&r1=1770917&r2=1770918&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdateTest.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdateTest.java
Wed Nov 23 06:17:08 2016
@@ -1665,8 +1665,9 @@ public class AsyncIndexUpdateTest {
//5. Let async run again
async.run();
- //Indexing should be ok now
- assertFalse(async.getIndexStats().isFailing());
+ //Indexing would be considered as failing
+ assertTrue(async.getIndexStats().isFailing());
+ assertEquals(IndexStatsMBean.STATUS_FAILING,
async.getIndexStats().getStatus());
//barIndex should be considered corrupt now
assertTrue(async.getCorruptIndexHandler().getCorruptIndexData("async").containsKey("/oak:index/barIndex"));
@@ -1685,7 +1686,7 @@ public class AsyncIndexUpdateTest {
store.merge(builder, EmptyHook.INSTANCE, CommitInfo.EMPTY);
async.run();
- assertFalse(async.getIndexStats().isFailing());
+ assertTrue(async.getIndexStats().isFailing());
//barIndex should be skipped
assertEquals(2, barIndexInfo.getSkippedCount());