mirror of https://github.com/apache/lucene.git
SOLR-4032: Files larger than an internal buffer size fail to replicate.
git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1414428 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
01cfcca8a6
commit
862335a772
|
@ -69,6 +69,9 @@ New Features
|
|||
|
||||
* SOLR-3911: Make Directory and DirectoryFactory first class so that the majority
|
||||
of Solr's features work with any custom implementations. (Mark Miller)
|
||||
Additional Work:
|
||||
- SOLR-4032: Files larger than an internal buffer size fail to replicate.
|
||||
(Mark Miller, Markus Jelsma)
|
||||
|
||||
* SOLR-1972: Add extra statistics to RequestHandlers - 5 & 15-minute reqs/sec
|
||||
rolling averages; median, 75th, 95th, 99th, 99.9th percentile request times
|
||||
|
|
|
@ -1062,7 +1062,7 @@ public class ReplicationHandler extends RequestHandlerBase implements SolrCoreAw
|
|||
while (true) {
|
||||
offset = offset == -1 ? 0 : offset;
|
||||
int read = (int) Math.min(buf.length, filelen - offset);
|
||||
in.readBytes(buf, offset == -1 ? 0 : (int) offset, read);
|
||||
in.readBytes(buf, 0, read);
|
||||
|
||||
fos.writeInt((int) read);
|
||||
if (useChecksum) {
|
||||
|
@ -1082,6 +1082,8 @@ public class ReplicationHandler extends RequestHandlerBase implements SolrCoreAw
|
|||
fos.close();
|
||||
break;
|
||||
}
|
||||
offset += read;
|
||||
in.seek(offset);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
LOG.warn("Exception while writing response for params: " + params, e);
|
||||
|
|
|
@ -656,6 +656,8 @@ public class TestReplicationHandler extends SolrTestCaseJ4 {
|
|||
}
|
||||
|
||||
private void doTestReplicateAfterCoreReload() throws Exception {
|
||||
int docs = TEST_NIGHTLY ? 200000 : 0;
|
||||
|
||||
//stop slave
|
||||
slaveJetty.stop();
|
||||
|
||||
|
@ -670,14 +672,14 @@ public class TestReplicationHandler extends SolrTestCaseJ4 {
|
|||
masterClient = createNewSolrServer(masterJetty.getLocalPort());
|
||||
|
||||
masterClient.deleteByQuery("*:*");
|
||||
for (int i = 0; i < 10; i++)
|
||||
for (int i = 0; i < docs; i++)
|
||||
index(masterClient, "id", i, "name", "name = " + i);
|
||||
|
||||
masterClient.commit();
|
||||
|
||||
NamedList masterQueryRsp = rQuery(10, "*:*", masterClient);
|
||||
NamedList masterQueryRsp = rQuery(docs, "*:*", masterClient);
|
||||
SolrDocumentList masterQueryResult = (SolrDocumentList) masterQueryRsp.get("response");
|
||||
assertEquals(10, masterQueryResult.getNumFound());
|
||||
assertEquals(docs, masterQueryResult.getNumFound());
|
||||
|
||||
slave.setTestPort(masterJetty.getLocalPort());
|
||||
slave.copyConfigFile(slave.getSolrConfigFile(), "solrconfig.xml");
|
||||
|
@ -687,9 +689,9 @@ public class TestReplicationHandler extends SolrTestCaseJ4 {
|
|||
slaveClient = createNewSolrServer(slaveJetty.getLocalPort());
|
||||
|
||||
//get docs from slave and check if number is equal to master
|
||||
NamedList slaveQueryRsp = rQuery(10, "*:*", slaveClient);
|
||||
NamedList slaveQueryRsp = rQuery(docs, "*:*", slaveClient);
|
||||
SolrDocumentList slaveQueryResult = (SolrDocumentList) slaveQueryRsp.get("response");
|
||||
assertEquals(10, slaveQueryResult.getNumFound());
|
||||
assertEquals(docs, slaveQueryResult.getNumFound());
|
||||
|
||||
//compare results
|
||||
String cmp = BaseDistributedSearchTestCase.compare(masterQueryResult, slaveQueryResult, 0, null);
|
||||
|
@ -703,19 +705,19 @@ public class TestReplicationHandler extends SolrTestCaseJ4 {
|
|||
assertEquals(version, getIndexVersion(masterClient).get("indexversion"));
|
||||
assertEquals(commits.get("commits"), getCommits(masterClient).get("commits"));
|
||||
|
||||
index(masterClient, "id", 110, "name", "name = 1");
|
||||
index(masterClient, "id", 120, "name", "name = 2");
|
||||
index(masterClient, "id", docs + 10, "name", "name = 1");
|
||||
index(masterClient, "id", docs + 20, "name", "name = 2");
|
||||
|
||||
masterClient.commit();
|
||||
|
||||
NamedList resp = rQuery(12, "*:*", masterClient);
|
||||
NamedList resp = rQuery(docs + 2, "*:*", masterClient);
|
||||
masterQueryResult = (SolrDocumentList) resp.get("response");
|
||||
assertEquals(12, masterQueryResult.getNumFound());
|
||||
assertEquals(docs + 2, masterQueryResult.getNumFound());
|
||||
|
||||
//get docs from slave and check if number is equal to master
|
||||
slaveQueryRsp = rQuery(12, "*:*", slaveClient);
|
||||
slaveQueryRsp = rQuery(docs + 2, "*:*", slaveClient);
|
||||
slaveQueryResult = (SolrDocumentList) slaveQueryRsp.get("response");
|
||||
assertEquals(12, slaveQueryResult.getNumFound());
|
||||
assertEquals(docs + 2, slaveQueryResult.getNumFound());
|
||||
|
||||
// NOTE: revert config on master.
|
||||
master.copyConfigFile(CONF_DIR + "solrconfig-master.xml", "solrconfig.xml");
|
||||
|
|
Loading…
Reference in New Issue