You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by yo...@apache.org on 2012/08/07 17:00:19 UTC
svn commit: r1370297 - in /lucene/dev/trunk/solr/core/src:
java/org/apache/solr/search/ValueSourceParser.java
java/org/apache/solr/update/UpdateLog.java
test/org/apache/solr/search/QueryEqualityTest.java
test/org/apache/solr/search/TestRecovery.java
Author: yonik
Date: Tue Aug 7 15:00:19 2012
New Revision: 1370297
URL: http://svn.apache.org/viewvc?rev=1370297&view=rev
Log:
SOLR-3685: cloud sometimes skipped peersync attempt due to flags not being cleared when no updates were buffered during replication
Modified:
lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ValueSourceParser.java
lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/UpdateLog.java
lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/QueryEqualityTest.java
lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestRecovery.java
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ValueSourceParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ValueSourceParser.java?rev=1370297&r1=1370296&r2=1370297&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ValueSourceParser.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ValueSourceParser.java Tue Aug 7 15:00:19 2012
@@ -107,6 +107,25 @@ public abstract class ValueSourceParser
return new LiteralValueSource(fp.parseArg());
}
});
+ addParser("threadid", new ValueSourceParser() {
+ @Override
+ public ValueSource parse(FunctionQParser fp) throws ParseException {
+ return new LongConstValueSource(Thread.currentThread().getId());
+ }
+ });
+ addParser("sleep", new ValueSourceParser() {
+ @Override
+ public ValueSource parse(FunctionQParser fp) throws ParseException {
+ int ms = fp.parseInt();
+ ValueSource source = fp.parseValueSource();
+ try {
+ Thread.sleep(ms);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ return source;
+ }
+ });
addParser("rord", new ValueSourceParser() {
@Override
public ValueSource parse(FunctionQParser fp) throws ParseException {
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/UpdateLog.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/UpdateLog.java?rev=1370297&r1=1370296&r2=1370297&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/UpdateLog.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/UpdateLog.java Tue Aug 7 15:00:19 2012
@@ -1048,6 +1048,7 @@ public class UpdateLog implements Plugin
try {
cancelApplyBufferUpdate = false;
if (state != State.BUFFERING) return null;
+ operationFlags &= ~FLAG_GAP;
// handle case when no log was even created because no updates
// were received.
@@ -1057,7 +1058,6 @@ public class UpdateLog implements Plugin
}
tlog.incref();
state = State.APPLYING_BUFFERED;
- operationFlags &= ~FLAG_GAP;
} finally {
versionInfo.unblockUpdates();
}
Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/QueryEqualityTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/QueryEqualityTest.java?rev=1370297&r1=1370296&r2=1370297&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/QueryEqualityTest.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/QueryEqualityTest.java Tue Aug 7 15:00:19 2012
@@ -648,6 +648,11 @@ public class QueryEqualityTest extends S
"foo_i");
}
+ public void testTestFuncs() throws Exception {
+ assertFuncEquals("sleep(1,5)", "sleep(1,5)");
+ assertFuncEquals("threadid()", "threadid()");
+ }
+
/**
* this test does not assert anything itself, it simply toggles a static
* boolean informing an @AfterClass method to assert that every default
Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestRecovery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestRecovery.java?rev=1370297&r1=1370296&r2=1370297&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestRecovery.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestRecovery.java Tue Aug 7 15:00:19 2012
@@ -559,7 +559,22 @@ public class TestRecovery extends SolrTe
assertTrue((ulog.getStartingOperation() & UpdateLog.FLAG_GAP) == 0);
+ ulog.bufferUpdates();
+ // simulate receiving no updates
+ ulog.applyBufferedUpdates();
+ updateJ(jsonAdd(sdoc("id","Q7", "_version_","117")), params(DISTRIB_UPDATE_PARAM,FROM_LEADER)); // do another add to make sure flags are back to normal
+ req.close();
+ h.close();
+ createCore();
+
+ req = req();
+ uhandler = req.getCore().getUpdateHandler();
+ ulog = uhandler.getUpdateLog();
+
+ assertTrue((ulog.getStartingOperation() & UpdateLog.FLAG_GAP) == 0); // check flags on Q7
+
+ logReplayFinish.acquire();
assertEquals(UpdateLog.State.ACTIVE, ulog.getState()); // leave each test method in a good state
} finally {
DirectUpdateHandler2.commitOnClose = true;