Author: shalin
Date: Thu May 28 04:16:41 2009
New Revision: 779423
URL: http://svn.apache.org/viewvc?rev=779423&view=rev
Log:
SOLR-1051 -- Support the merge of multiple indexes as a CoreAdmin and an update
command
Added:
lucene/solr/trunk/src/java/org/apache/solr/update/MergeIndexesCommand.java
(with props)
lucene/solr/trunk/src/test/org/apache/solr/client/solrj/MergeIndexesExampleTestBase.java
(with props)
lucene/solr/trunk/src/test/org/apache/solr/client/solrj/embedded/MergeIndexesEmbeddedTest.java
(with props)
Modified:
lucene/solr/trunk/CHANGES.txt
lucene/solr/trunk/src/common/org/apache/solr/common/params/CoreAdminParams.java
lucene/solr/trunk/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
lucene/solr/trunk/src/java/org/apache/solr/update/DirectUpdateHandler.java
lucene/solr/trunk/src/java/org/apache/solr/update/DirectUpdateHandler2.java
lucene/solr/trunk/src/java/org/apache/solr/update/UpdateHandler.java
lucene/solr/trunk/src/java/org/apache/solr/update/processor/LogUpdateProcessorFactory.java
lucene/solr/trunk/src/java/org/apache/solr/update/processor/RunUpdateProcessorFactory.java
lucene/solr/trunk/src/java/org/apache/solr/update/processor/UpdateRequestProcessor.java
lucene/solr/trunk/src/solrj/org/apache/solr/client/solrj/request/CoreAdminRequest.java
Modified: lucene/solr/trunk/CHANGES.txt
URL:
http://svn.apache.org/viewvc/lucene/solr/trunk/CHANGES.txt?rev=779423&r1=779422&r2=779423&view=diff
==============================================================================
--- lucene/solr/trunk/CHANGES.txt (original)
+++ lucene/solr/trunk/CHANGES.txt Thu May 28 04:16:41 2009
@@ -226,6 +226,8 @@
55. SOLR-1116: Add a Binary FieldType (noble)
+56. SOLR-1051: Support the merge of multiple indexes as a CoreAdmin and an
update command (Ning Li via shalin)
+
Optimizations
----------------------
1. SOLR-374: Use IndexReader.reopen to save resources by re-using parts of the
Modified:
lucene/solr/trunk/src/common/org/apache/solr/common/params/CoreAdminParams.java
URL:
http://svn.apache.org/viewvc/lucene/solr/trunk/src/common/org/apache/solr/common/params/CoreAdminParams.java?rev=779423&r1=779422&r2=779423&view=diff
==============================================================================
---
lucene/solr/trunk/src/common/org/apache/solr/common/params/CoreAdminParams.java
(original)
+++
lucene/solr/trunk/src/common/org/apache/solr/common/params/CoreAdminParams.java
Thu May 28 04:16:41 2009
@@ -53,6 +53,10 @@
/** If you specify a file, what is its name **/
public final static String FILE = "file";
+ /** If you merge indexes, what are the index directories.
+ * The directories are separated by ",". */
+ public final static String INDEX_DIRS = "indexDirs";
+
public enum CoreAdminAction {
STATUS,
LOAD,
@@ -62,7 +66,8 @@
PERSIST,
SWAP,
RENAME,
- ALIAS;
+ ALIAS,
+ MERGEINDEXES;
public static CoreAdminAction get( String p )
{
Modified:
lucene/solr/trunk/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
URL:
http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java?rev=779423&r1=779422&r2=779423&view=diff
==============================================================================
---
lucene/solr/trunk/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
(original)
+++
lucene/solr/trunk/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
Thu May 28 04:16:41 2009
@@ -21,16 +21,22 @@
import org.apache.solr.common.params.CoreAdminParams;
import org.apache.solr.common.params.CoreAdminParams.CoreAdminAction;
import org.apache.solr.common.params.SolrParams;
+import org.apache.solr.common.params.UpdateParams;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.common.util.SimpleOrderedMap;
import org.apache.solr.core.CoreContainer;
import org.apache.solr.core.CoreDescriptor;
import org.apache.solr.core.SolrCore;
+import org.apache.solr.core.DirectoryFactory;
import org.apache.solr.handler.RequestHandlerBase;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.request.SolrQueryResponse;
import org.apache.solr.search.SolrIndexSearcher;
import org.apache.solr.util.RefCounted;
+import org.apache.solr.update.MergeIndexesCommand;
+import org.apache.solr.update.processor.UpdateRequestProcessor;
+import org.apache.solr.update.processor.UpdateRequestProcessorChain;
+import org.apache.lucene.store.Directory;
import java.io.File;
import java.io.IOException;
@@ -141,11 +147,18 @@
break;
}
+ case MERGEINDEXES: {
+ doPersist = this.handleMergeAction(req, rsp);
+ break;
+ }
+
default: {
doPersist = this.handleCustomAction(req, rsp);
break;
}
- } // switch
+ case LOAD:
+ break;
+ }
}
// Should we persist the changes?
if (doPersist) {
@@ -154,6 +167,37 @@
}
}
+ protected boolean handleMergeAction(SolrQueryRequest req, SolrQueryResponse
rsp) throws IOException {
+ boolean doPersist = false;
+ SolrParams params = req.getParams();
+ SolrParams required = params.required();
+ String cname = required.get(CoreAdminParams.CORE);
+ SolrCore core = coreContainer.getCore(cname);
+ if (core != null) {
+ try {
+ doPersist = coreContainer.isPersistent();
+
+ String p = required.get(CoreAdminParams.INDEX_DIRS);
+ String[] dirNames = p.split(",");
+
+ DirectoryFactory dirFactory = core.getDirectoryFactory();
+ Directory[] dirs = new Directory[dirNames.length];
+ for (int i = 0; i < dirNames.length; i++) {
+ dirs[i] = dirFactory.open(dirNames[i]);
+ }
+
+ UpdateRequestProcessorChain processorChain =
+
core.getUpdateProcessingChain(params.get(UpdateParams.UPDATE_PROCESSOR));
+ UpdateRequestProcessor processor =
+ processorChain.createProcessor(req, rsp);
+ processor.processMergeIndexes(new MergeIndexesCommand(dirs));
+ } finally {
+ core.close();
+ }
+ }
+ return doPersist;
+ }
+
/**
* Handle Custom Action.
* <p/>
Modified:
lucene/solr/trunk/src/java/org/apache/solr/update/DirectUpdateHandler.java
URL:
http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/update/DirectUpdateHandler.java?rev=779423&r1=779422&r2=779423&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/update/DirectUpdateHandler.java
(original)
+++ lucene/solr/trunk/src/java/org/apache/solr/update/DirectUpdateHandler.java
Thu May 28 04:16:41 2009
@@ -226,6 +226,12 @@
}
***************************/
+ public int mergeIndexes(MergeIndexesCommand cmd) throws IOException {
+ throw new SolrException(
+ SolrException.ErrorCode.BAD_REQUEST,
+ "DirectUpdateHandler doesn't support mergeIndexes. Use
DirectUpdateHandler2 instead.");
+ }
+
public void commit(CommitUpdateCommand cmd) throws IOException {
Future[] waitSearcher = null;
if (cmd.waitSearcher) {
Modified:
lucene/solr/trunk/src/java/org/apache/solr/update/DirectUpdateHandler2.java
URL:
http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/update/DirectUpdateHandler2.java?rev=779423&r1=779422&r2=779423&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/update/DirectUpdateHandler2.java
(original)
+++ lucene/solr/trunk/src/java/org/apache/solr/update/DirectUpdateHandler2.java
Thu May 28 04:16:41 2009
@@ -29,6 +29,7 @@
import org.apache.lucene.search.MatchAllDocsQuery;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.search.BooleanClause.Occur;
+import org.apache.lucene.store.Directory;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
@@ -129,6 +130,7 @@
AtomicLong deleteByIdCommandsCumulative= new AtomicLong();
AtomicLong deleteByQueryCommands= new AtomicLong();
AtomicLong deleteByQueryCommandsCumulative= new AtomicLong();
+ AtomicLong mergeIndexesCommands = new AtomicLong();
AtomicLong commitCommands= new AtomicLong();
AtomicLong optimizeCommands= new AtomicLong();
AtomicLong rollbackCommands= new AtomicLong();
@@ -339,7 +341,35 @@
}
}
- public void forceOpenWriter() throws IOException {
+ public int mergeIndexes(MergeIndexesCommand cmd) throws IOException {
+ mergeIndexesCommands.incrementAndGet();
+ int rc = -1;
+
+ iwCommit.lock();
+ try {
+ log.info("start " + cmd);
+
+ Directory[] dirs = cmd.dirs;
+ if (dirs != null && dirs.length > 0) {
+ openWriter();
+ writer.addIndexesNoOptimize(dirs);
+ rc = 1;
+ } else {
+ rc = 0;
+ }
+ log.info("end_mergeIndexes");
+ } finally {
+ iwCommit.unlock();
+ }
+
+ if (rc == 1 && tracker.timeUpperBound > 0) {
+ tracker.scheduleCommitWithin(tracker.timeUpperBound);
+ }
+
+ return rc;
+ }
+
+ public void forceOpenWriter() throws IOException {
iwCommit.lock();
try {
openWriter();
Added:
lucene/solr/trunk/src/java/org/apache/solr/update/MergeIndexesCommand.java
URL:
http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/update/MergeIndexesCommand.java?rev=779423&view=auto
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/update/MergeIndexesCommand.java
(added)
+++ lucene/solr/trunk/src/java/org/apache/solr/update/MergeIndexesCommand.java
Thu May 28 04:16:41 2009
@@ -0,0 +1,52 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.solr.update;
+
+import org.apache.lucene.store.Directory;
+
+/**
+ * A merge indexes command encapsulated in an object.
+ *
+ * @since solr 1.4
+ * @version $Id$
+ */
+public class MergeIndexesCommand extends UpdateCommand {
+ public Directory[] dirs;
+
+ public MergeIndexesCommand() {
+ this(null);
+ }
+
+ public MergeIndexesCommand(Directory[] dirs) {
+ super("mergeIndexes");
+ this.dirs = dirs;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder(commandName);
+ sb.append(':');
+ if (dirs != null && dirs.length > 0) {
+ sb.append(dirs[0]);
+ for (int i = 1; i < dirs.length; i++) {
+ sb.append(",").append(dirs[i]);
+ }
+ }
+ return sb.toString();
+ }
+}
Propchange:
lucene/solr/trunk/src/java/org/apache/solr/update/MergeIndexesCommand.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
lucene/solr/trunk/src/java/org/apache/solr/update/MergeIndexesCommand.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Modified: lucene/solr/trunk/src/java/org/apache/solr/update/UpdateHandler.java
URL:
http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/update/UpdateHandler.java?rev=779423&r1=779422&r2=779423&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/update/UpdateHandler.java
(original)
+++ lucene/solr/trunk/src/java/org/apache/solr/update/UpdateHandler.java Thu
May 28 04:16:41 2009
@@ -155,6 +155,7 @@
public abstract int addDoc(AddUpdateCommand cmd) throws IOException;
public abstract void delete(DeleteUpdateCommand cmd) throws IOException;
public abstract void deleteByQuery(DeleteUpdateCommand cmd) throws
IOException;
+ public abstract int mergeIndexes(MergeIndexesCommand cmd) throws IOException;
public abstract void commit(CommitUpdateCommand cmd) throws IOException;
public abstract void rollback(RollbackUpdateCommand cmd) throws IOException;
public abstract void close() throws IOException;
Modified:
lucene/solr/trunk/src/java/org/apache/solr/update/processor/LogUpdateProcessorFactory.java
URL:
http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/update/processor/LogUpdateProcessorFactory.java?rev=779423&r1=779422&r2=779423&view=diff
==============================================================================
---
lucene/solr/trunk/src/java/org/apache/solr/update/processor/LogUpdateProcessorFactory.java
(original)
+++
lucene/solr/trunk/src/java/org/apache/solr/update/processor/LogUpdateProcessorFactory.java
Thu May 28 04:16:41 2009
@@ -29,6 +29,7 @@
import org.apache.solr.update.AddUpdateCommand;
import org.apache.solr.update.CommitUpdateCommand;
import org.apache.solr.update.DeleteUpdateCommand;
+import org.apache.solr.update.MergeIndexesCommand;
import org.apache.solr.update.RollbackUpdateCommand;
/**
@@ -126,6 +127,13 @@
}
@Override
+ public void processMergeIndexes(MergeIndexesCommand cmd) throws IOException {
+ if (next != null) next.processMergeIndexes(cmd);
+
+ toLog.add("mergeIndexes", cmd.toString());
+ }
+
+ @Override
public void processCommit( CommitUpdateCommand cmd ) throws IOException {
if (next != null) next.processCommit(cmd);
Modified:
lucene/solr/trunk/src/java/org/apache/solr/update/processor/RunUpdateProcessorFactory.java
URL:
http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/update/processor/RunUpdateProcessorFactory.java?rev=779423&r1=779422&r2=779423&view=diff
==============================================================================
---
lucene/solr/trunk/src/java/org/apache/solr/update/processor/RunUpdateProcessorFactory.java
(original)
+++
lucene/solr/trunk/src/java/org/apache/solr/update/processor/RunUpdateProcessorFactory.java
Thu May 28 04:16:41 2009
@@ -25,6 +25,7 @@
import org.apache.solr.update.CommitUpdateCommand;
import org.apache.solr.update.DeleteUpdateCommand;
import org.apache.solr.update.DocumentBuilder;
+import org.apache.solr.update.MergeIndexesCommand;
import org.apache.solr.update.RollbackUpdateCommand;
import org.apache.solr.update.UpdateHandler;
@@ -73,6 +74,12 @@
}
@Override
+ public void processMergeIndexes(MergeIndexesCommand cmd) throws IOException {
+ updateHandler.mergeIndexes(cmd);
+ super.processMergeIndexes(cmd);
+ }
+
+ @Override
public void processCommit(CommitUpdateCommand cmd) throws IOException
{
updateHandler.commit(cmd);
Modified:
lucene/solr/trunk/src/java/org/apache/solr/update/processor/UpdateRequestProcessor.java
URL:
http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/update/processor/UpdateRequestProcessor.java?rev=779423&r1=779422&r2=779423&view=diff
==============================================================================
---
lucene/solr/trunk/src/java/org/apache/solr/update/processor/UpdateRequestProcessor.java
(original)
+++
lucene/solr/trunk/src/java/org/apache/solr/update/processor/UpdateRequestProcessor.java
Thu May 28 04:16:41 2009
@@ -24,6 +24,7 @@
import org.apache.solr.update.AddUpdateCommand;
import org.apache.solr.update.CommitUpdateCommand;
import org.apache.solr.update.DeleteUpdateCommand;
+import org.apache.solr.update.MergeIndexesCommand;
import org.apache.solr.update.RollbackUpdateCommand;
@@ -56,6 +57,10 @@
if (next != null) next.processDelete(cmd);
}
+ public void processMergeIndexes(MergeIndexesCommand cmd) throws IOException {
+ if (next != null) next.processMergeIndexes(cmd);
+ }
+
public void processCommit(CommitUpdateCommand cmd) throws IOException
{
if (next != null) next.processCommit(cmd);
Modified:
lucene/solr/trunk/src/solrj/org/apache/solr/client/solrj/request/CoreAdminRequest.java
URL:
http://svn.apache.org/viewvc/lucene/solr/trunk/src/solrj/org/apache/solr/client/solrj/request/CoreAdminRequest.java?rev=779423&r1=779422&r2=779423&view=diff
==============================================================================
---
lucene/solr/trunk/src/solrj/org/apache/solr/client/solrj/request/CoreAdminRequest.java
(original)
+++
lucene/solr/trunk/src/solrj/org/apache/solr/client/solrj/request/CoreAdminRequest.java
Thu May 28 04:16:41 2009
@@ -109,6 +109,34 @@
}
}
+ public static class MergeIndexes extends CoreAdminRequest {
+ protected String indexDirs;
+
+ public MergeIndexes() {
+ action = CoreAdminAction.MERGEINDEXES;
+ }
+
+ public void setIndexDirs(String indexDirs) {
+ this.indexDirs = indexDirs;
+ }
+
+ public String getIndexDirs() {
+ return indexDirs;
+ }
+
+ @Override
+ public SolrParams getParams() {
+ if (action == null) {
+ throw new RuntimeException("no action specified!");
+ }
+ ModifiableSolrParams params = new ModifiableSolrParams();
+ params.set(CoreAdminParams.ACTION, action.toString());
+ params.set(CoreAdminParams.CORE, core);
+ params.set(CoreAdminParams.INDEX_DIRS, indexDirs);
+ return params;
+ }
+ }
+
public CoreAdminRequest()
{
super( METHOD.GET, "/admin/cores" );
@@ -247,4 +275,23 @@
req.setFileName(fileName);
return req.process(server);
}
+
+ public static CoreAdminResponse mergeIndexes(String name,
+ String[] indexDirs, SolrServer server) throws SolrServerException,
+ IOException {
+ CoreAdminRequest.MergeIndexes req = new CoreAdminRequest.MergeIndexes();
+ req.setCoreName(name);
+ String p = null;
+ if (indexDirs.length == 1) {
+ p = indexDirs[0];
+ } else if (indexDirs.length > 1) {
+ StringBuilder s = new StringBuilder(indexDirs[0]);
+ for (int i = 1; i < indexDirs.length; i++) {
+ s.append(",").append(indexDirs[i]);
+ }
+ p = s.toString();
+ }
+ req.setIndexDirs(p);
+ return req.process(server);
+ }
}
Added:
lucene/solr/trunk/src/test/org/apache/solr/client/solrj/MergeIndexesExampleTestBase.java
URL:
http://svn.apache.org/viewvc/lucene/solr/trunk/src/test/org/apache/solr/client/solrj/MergeIndexesExampleTestBase.java?rev=779423&view=auto
==============================================================================
---
lucene/solr/trunk/src/test/org/apache/solr/client/solrj/MergeIndexesExampleTestBase.java
(added)
+++
lucene/solr/trunk/src/test/org/apache/solr/client/solrj/MergeIndexesExampleTestBase.java
Thu May 28 04:16:41 2009
@@ -0,0 +1,136 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.solr.client.solrj;
+
+import org.apache.solr.client.solrj.request.CoreAdminRequest;
+import org.apache.solr.client.solrj.request.QueryRequest;
+import org.apache.solr.client.solrj.request.UpdateRequest;
+import org.apache.solr.client.solrj.request.UpdateRequest.ACTION;
+import org.apache.solr.common.SolrInputDocument;
+import org.apache.solr.core.CoreContainer;
+import org.apache.solr.core.SolrCore;
+
+/**
+ * Abstract base class for testing merge indexes command
+ *
+ * @since solr 1.4
+ * @version $Id$
+ */
+public abstract class MergeIndexesExampleTestBase extends SolrExampleTestBase {
+ // protected static final CoreContainer cores = new CoreContainer();
+ protected static CoreContainer cores;
+
+ @Override
+ public String getSolrHome() {
+ return "../../../example/multicore/";
+ }
+
+ @Override
+ public String getSchemaFile() {
+ return getSolrHome() + "core0/conf/schema.xml";
+ }
+
+ @Override
+ public String getSolrConfigFile() {
+ return getSolrHome() + "core0/conf/solrconfig.xml";
+ }
+
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ cores = h.getCoreContainer();
+ SolrCore.log.info("CORES=" + cores + " : " + cores.getCoreNames());
+ cores.setPersistent(false);
+ }
+
+ @Override
+ protected final SolrServer getSolrServer() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ protected final SolrServer createNewSolrServer() {
+ throw new UnsupportedOperationException();
+ }
+
+ protected abstract SolrServer getSolrCore0();
+
+ protected abstract SolrServer getSolrCore1();
+
+ protected abstract SolrServer getSolrAdmin();
+
+ protected abstract SolrServer getSolrCore(String name);
+
+ protected abstract String getIndexDirCore1();
+
+ public void testMergeIndexes() throws Exception {
+ UpdateRequest up = new UpdateRequest();
+ up.setAction(ACTION.COMMIT, true, true);
+ up.deleteByQuery("*:*");
+ up.process(getSolrCore0());
+ up.process(getSolrCore1());
+ up.clear();
+
+ // Add something to each core
+ SolrInputDocument doc = new SolrInputDocument();
+ doc.setField("id", "AAA");
+ doc.setField("name", "core0");
+
+ // Add to core0
+ up.add(doc);
+ up.process(getSolrCore0());
+
+ // Add to core1
+ doc.setField("id", "BBB");
+ doc.setField("name", "core1");
+ up.add(doc);
+ up.process(getSolrCore1());
+
+ // Now Make sure AAA is in 0 and BBB in 1
+ SolrQuery q = new SolrQuery();
+ QueryRequest r = new QueryRequest(q);
+ q.setQuery("id:AAA");
+ assertEquals(1, r.process(getSolrCore0()).getResults().size());
+ assertEquals(0, r.process(getSolrCore1()).getResults().size());
+
+ assertEquals(1,
+ getSolrCore0().query(new SolrQuery("id:AAA")).getResults().size());
+ assertEquals(0,
+ getSolrCore0().query(new SolrQuery("id:BBB")).getResults().size());
+
+ assertEquals(0,
+ getSolrCore1().query(new SolrQuery("id:AAA")).getResults().size());
+ assertEquals(1,
+ getSolrCore1().query(new SolrQuery("id:BBB")).getResults().size());
+
+ // Now get the index directory of core1 and merge with core0
+ String indexDir = getIndexDirCore1();
+ String name = "core0";
+ SolrServer coreadmin = getSolrAdmin();
+ CoreAdminRequest.mergeIndexes(name, new String[] { indexDir }, coreadmin);
+
+ // Now commit the merged index
+ up.clear(); // just do commit
+ up.process(getSolrCore0());
+
+ assertEquals(1,
+ getSolrCore0().query(new SolrQuery("id:AAA")).getResults().size());
+ assertEquals(1,
+ getSolrCore0().query(new SolrQuery("id:BBB")).getResults().size());
+ }
+}
Propchange:
lucene/solr/trunk/src/test/org/apache/solr/client/solrj/MergeIndexesExampleTestBase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
lucene/solr/trunk/src/test/org/apache/solr/client/solrj/MergeIndexesExampleTestBase.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added:
lucene/solr/trunk/src/test/org/apache/solr/client/solrj/embedded/MergeIndexesEmbeddedTest.java
URL:
http://svn.apache.org/viewvc/lucene/solr/trunk/src/test/org/apache/solr/client/solrj/embedded/MergeIndexesEmbeddedTest.java?rev=779423&view=auto
==============================================================================
---
lucene/solr/trunk/src/test/org/apache/solr/client/solrj/embedded/MergeIndexesEmbeddedTest.java
(added)
+++
lucene/solr/trunk/src/test/org/apache/solr/client/solrj/embedded/MergeIndexesEmbeddedTest.java
Thu May 28 04:16:41 2009
@@ -0,0 +1,70 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.solr.client.solrj.embedded;
+
+import java.io.File;
+
+import org.apache.solr.client.solrj.MergeIndexesExampleTestBase;
+import org.apache.solr.client.solrj.SolrServer;
+import org.apache.solr.core.SolrCore;
+
+/**
+ * Test for merge indexes command
+ *
+ * @since solr 1.4
+ * @version $Id$
+ */
+public class MergeIndexesEmbeddedTest extends MergeIndexesExampleTestBase {
+
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+
+ File home = new File(getSolrHome());
+ File f = new File(home, "solr.xml");
+ cores.load(getSolrHome(), f);
+ }
+
+ @Override
+ protected SolrServer getSolrCore0() {
+ return new EmbeddedSolrServer(cores, "core0");
+ }
+
+ @Override
+ protected SolrServer getSolrCore1() {
+ return new EmbeddedSolrServer(cores, "core1");
+ }
+
+ @Override
+ protected SolrServer getSolrCore(String name) {
+ return new EmbeddedSolrServer(cores, name);
+ }
+
+ @Override
+ protected SolrServer getSolrAdmin() {
+ return new EmbeddedSolrServer(cores, "core0");
+ }
+
+ @Override
+ protected String getIndexDirCore1() {
+ SolrCore core1 = cores.getCore("core1");
+ String indexDir = core1.getIndexDir();
+ core1.close();
+ return indexDir;
+ }
+}
Propchange:
lucene/solr/trunk/src/test/org/apache/solr/client/solrj/embedded/MergeIndexesEmbeddedTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
lucene/solr/trunk/src/test/org/apache/solr/client/solrj/embedded/MergeIndexesEmbeddedTest.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL