You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ma...@apache.org on 2013/10/11 04:17:57 UTC
svn commit: r1531171 - in /lucene/dev/branches/lucene_solr_4_5: ./ solr/
solr/core/ solr/core/src/java/org/apache/solr/client/solrj/embedded/
solr/core/src/java/org/apache/solr/core/
solr/core/src/java/org/apache/solr/handler/admin/ solr/core/src/test-...
Author: markrmiller
Date: Fri Oct 11 02:17:56 2013
New Revision: 1531171
URL: http://svn.apache.org/r1531171
Log:
SOLR-5317: SolrCore persistence bugs if defining SolrCores in solr.xml
tests: Compare absolute paths
Fix race when persisting cores in solr.xml
Added:
lucene/dev/branches/lucene_solr_4_5/solr/core/src/test-files/solr/solr-no-core-old-style.xml
- copied unchanged from r1530982, lucene/dev/branches/branch_4x/solr/core/src/test-files/solr/solr-no-core-old-style.xml
Modified:
lucene/dev/branches/lucene_solr_4_5/ (props changed)
lucene/dev/branches/lucene_solr_4_5/solr/ (props changed)
lucene/dev/branches/lucene_solr_4_5/solr/CHANGES.txt (contents, props changed)
lucene/dev/branches/lucene_solr_4_5/solr/core/ (props changed)
lucene/dev/branches/lucene_solr_4_5/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java
lucene/dev/branches/lucene_solr_4_5/solr/core/src/java/org/apache/solr/core/CoreContainer.java
lucene/dev/branches/lucene_solr_4_5/solr/core/src/java/org/apache/solr/core/SolrXMLCoresLocator.java
lucene/dev/branches/lucene_solr_4_5/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
lucene/dev/branches/lucene_solr_4_5/solr/core/src/test/org/apache/solr/cloud/CollectionsAPIDistributedZkTest.java
lucene/dev/branches/lucene_solr_4_5/solr/test-framework/ (props changed)
lucene/dev/branches/lucene_solr_4_5/solr/test-framework/src/java/org/apache/solr/cloud/AbstractDistribZkTestBase.java
lucene/dev/branches/lucene_solr_4_5/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java
lucene/dev/branches/lucene_solr_4_5/solr/test-framework/src/java/org/apache/solr/cloud/AbstractZkTestCase.java
Modified: lucene/dev/branches/lucene_solr_4_5/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_5/solr/CHANGES.txt?rev=1531171&r1=1531170&r2=1531171&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_5/solr/CHANGES.txt (original)
+++ lucene/dev/branches/lucene_solr_4_5/solr/CHANGES.txt Fri Oct 11 02:17:56 2013
@@ -62,6 +62,9 @@ Bug Fixes
* SOLR-5327: SOLR-4915, "The root cause should be returned to the user when a SolrCore create
call fails", was reverted. (Mark Miller)
+
+* SOLR-5317: SolrCore persistence bugs if defining SolrCores in solr.xml.
+ (Mark Miller, Yago Riveiro)
================== 4.5.0 ==================
Modified: lucene/dev/branches/lucene_solr_4_5/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_5/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java?rev=1531171&r1=1531170&r2=1531171&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_5/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java (original)
+++ lucene/dev/branches/lucene_solr_4_5/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java Fri Oct 11 02:17:56 2013
@@ -356,37 +356,40 @@ public class JettySolrRunner {
startedBefore = true;
}
- if( dataDir != null) {
+ if (dataDir != null) {
System.setProperty("solr.data.dir", dataDir);
}
- if( solrUlogDir != null) {
+ if (solrUlogDir != null) {
System.setProperty("solr.ulog.dir", solrUlogDir);
}
- if(shards != null) {
+ if (shards != null) {
System.setProperty("shard", shards);
}
if (coreNodeName != null) {
System.setProperty("coreNodeName", coreNodeName);
}
-
- if (!server.isRunning()) {
- server.start();
- }
- synchronized (JettySolrRunner.this) {
- int cnt = 0;
- while (!waitOnSolr) {
- this.wait(100);
- if (cnt++ == 5) {
- throw new RuntimeException("Jetty/Solr unresponsive");
+ try {
+
+ if (!server.isRunning()) {
+ server.start();
+ }
+ synchronized (JettySolrRunner.this) {
+ int cnt = 0;
+ while (!waitOnSolr) {
+ this.wait(100);
+ if (cnt++ == 5) {
+ throw new RuntimeException("Jetty/Solr unresponsive");
+ }
}
}
+ } finally {
+
+ System.clearProperty("shard");
+ System.clearProperty("solr.data.dir");
+ System.clearProperty("coreNodeName");
+ System.clearProperty("solr.ulog.dir");
}
- System.clearProperty("shard");
- System.clearProperty("solr.data.dir");
- System.clearProperty("coreNodeName");
- System.clearProperty("solr.ulog.dir");
-
}
public void stop() throws Exception {
Modified: lucene/dev/branches/lucene_solr_4_5/solr/core/src/java/org/apache/solr/core/CoreContainer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_5/solr/core/src/java/org/apache/solr/core/CoreContainer.java?rev=1531171&r1=1531170&r2=1531171&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_5/solr/core/src/java/org/apache/solr/core/CoreContainer.java (original)
+++ lucene/dev/branches/lucene_solr_4_5/solr/core/src/java/org/apache/solr/core/CoreContainer.java Fri Oct 11 02:17:56 2013
@@ -17,25 +17,7 @@
package org.apache.solr.core;
-import com.google.common.collect.Maps;
-import org.apache.solr.cloud.ZkController;
-import org.apache.solr.cloud.ZkSolrResourceLoader;
-import org.apache.solr.common.SolrException;
-import org.apache.solr.common.SolrException.ErrorCode;
-import org.apache.solr.common.cloud.ZooKeeperException;
-import org.apache.solr.common.util.ExecutorUtil;
-import org.apache.solr.handler.admin.CollectionsHandler;
-import org.apache.solr.handler.admin.CoreAdminHandler;
-import org.apache.solr.handler.admin.InfoHandler;
-import org.apache.solr.handler.component.ShardHandlerFactory;
-import org.apache.solr.logging.LogWatcher;
-import org.apache.solr.schema.IndexSchema;
-import org.apache.solr.schema.IndexSchemaFactory;
-import org.apache.solr.util.DefaultSolrThreadFactory;
-import org.apache.solr.util.FileUtils;
-import org.apache.zookeeper.KeeperException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import static com.google.common.base.Preconditions.checkNotNull;
import java.io.File;
import java.text.SimpleDateFormat;
@@ -57,11 +39,27 @@ import java.util.concurrent.ExecutorComp
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-import static com.google.common.base.Preconditions.checkNotNull;
+import org.apache.solr.cloud.ZkController;
+import org.apache.solr.cloud.ZkSolrResourceLoader;
+import org.apache.solr.common.SolrException;
+import org.apache.solr.common.SolrException.ErrorCode;
+import org.apache.solr.common.cloud.ZooKeeperException;
+import org.apache.solr.common.util.ExecutorUtil;
+import org.apache.solr.handler.admin.CollectionsHandler;
+import org.apache.solr.handler.admin.CoreAdminHandler;
+import org.apache.solr.handler.admin.InfoHandler;
+import org.apache.solr.handler.component.ShardHandlerFactory;
+import org.apache.solr.logging.LogWatcher;
+import org.apache.solr.schema.IndexSchema;
+import org.apache.solr.schema.IndexSchemaFactory;
+import org.apache.solr.util.DefaultSolrThreadFactory;
+import org.apache.solr.util.FileUtils;
+import org.apache.zookeeper.KeeperException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.collect.Maps;
/**
Modified: lucene/dev/branches/lucene_solr_4_5/solr/core/src/java/org/apache/solr/core/SolrXMLCoresLocator.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_5/solr/core/src/java/org/apache/solr/core/SolrXMLCoresLocator.java?rev=1531171&r1=1531170&r2=1531171&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_5/solr/core/src/java/org/apache/solr/core/SolrXMLCoresLocator.java (original)
+++ lucene/dev/branches/lucene_solr_4_5/solr/core/src/java/org/apache/solr/core/SolrXMLCoresLocator.java Fri Oct 11 02:17:56 2013
@@ -19,6 +19,8 @@ package org.apache.solr.core;
import com.google.common.base.Charsets;
import com.google.common.collect.ImmutableList;
+
+import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -28,6 +30,8 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
+import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Properties;
@@ -139,20 +143,31 @@ public class SolrXMLCoresLocator impleme
}
@Override
- public final void persist(CoreContainer cc, CoreDescriptor... coreDescriptors) {
- doPersist(buildSolrXML(cc.getCoreDescriptors()));
+ public synchronized final void persist(CoreContainer cc, CoreDescriptor... coreDescriptors) {
+ List<CoreDescriptor> cds = new ArrayList<CoreDescriptor>(cc.getCoreDescriptors().size() + coreDescriptors.length);
+
+ cds.addAll(cc.getCoreDescriptors());
+ cds.addAll(Arrays.asList(coreDescriptors));
+
+ doPersist(buildSolrXML(cds));
}
protected void doPersist(String xml) {
File file = new File(cfg.config.getResourceLoader().getInstanceDir(), ConfigSolr.SOLR_XML_FILE);
+ Writer writer = null;
+ FileOutputStream fos = null;
try {
- Writer writer = new OutputStreamWriter(new FileOutputStream(file), Charsets.UTF_8);
+ fos = new FileOutputStream(file);
+ writer = new OutputStreamWriter(fos, Charsets.UTF_8);
writer.write(xml);
writer.close();
logger.info("Persisted core descriptions to {}", file.getAbsolutePath());
- }
- catch (IOException e) {
- logger.error("Couldn't persist core descriptions to {} : {}", file.getAbsolutePath(), e);
+ } catch (IOException e) {
+ logger.error("Couldn't persist core descriptions to {} : {}",
+ file.getAbsolutePath(), e);
+ } finally {
+ IOUtils.closeQuietly(writer);
+ IOUtils.closeQuietly(fos);
}
}
@@ -163,12 +178,14 @@ public class SolrXMLCoresLocator impleme
@Override
public void delete(CoreContainer cc, CoreDescriptor... coreDescriptors) {
- this.persist(cc, coreDescriptors);
+ // coreDescriptors is kind of a useless param - we persist the current state off cc
+ this.persist(cc);
}
@Override
public void rename(CoreContainer cc, CoreDescriptor oldCD, CoreDescriptor newCD) {
- this.persist(cc, oldCD, newCD);
+ // we don't need those params, we just write out the current cc state
+ this.persist(cc);
}
@Override
Modified: lucene/dev/branches/lucene_solr_4_5/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_5/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java?rev=1531171&r1=1531170&r2=1531171&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_5/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java (original)
+++ lucene/dev/branches/lucene_solr_4_5/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java Fri Oct 11 02:17:56 2013
@@ -19,6 +19,7 @@ package org.apache.solr.handler.admin;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
+
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.lucene.index.DirectoryReader;
@@ -48,6 +49,7 @@ import org.apache.solr.core.CoreDescript
import org.apache.solr.core.DirectoryFactory;
import org.apache.solr.core.DirectoryFactory.DirContext;
import org.apache.solr.core.SolrCore;
+import org.apache.solr.core.SolrXMLCoresLocator;
import org.apache.solr.handler.RequestHandlerBase;
import org.apache.solr.request.LocalSolrQueryRequest;
import org.apache.solr.request.SolrQueryRequest;
@@ -461,9 +463,19 @@ public class CoreAdminHandler extends Re
if (coreContainer.getZkController() != null) {
coreContainer.preRegisterInZk(dcore);
}
+
+ // make sure we can write out the descriptor first
coreContainer.getCoresLocator().create(coreContainer, dcore);
+
SolrCore core = coreContainer.create(dcore);
+
coreContainer.register(dcore.getName(), core, false);
+
+ if (coreContainer.getCoresLocator() instanceof SolrXMLCoresLocator) {
+ // hack - in this case we persist once more because a core create race might
+ // have dropped entries.
+ coreContainer.getCoresLocator().create(coreContainer);
+ }
rsp.add("core", core.getName());
}
catch (Exception ex) {
Modified: lucene/dev/branches/lucene_solr_4_5/solr/core/src/test/org/apache/solr/cloud/CollectionsAPIDistributedZkTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_5/solr/core/src/test/org/apache/solr/cloud/CollectionsAPIDistributedZkTest.java?rev=1531171&r1=1531170&r2=1531171&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_5/solr/core/src/test/org/apache/solr/cloud/CollectionsAPIDistributedZkTest.java (original)
+++ lucene/dev/branches/lucene_solr_4_5/solr/core/src/test/org/apache/solr/cloud/CollectionsAPIDistributedZkTest.java Fri Oct 11 02:17:56 2013
@@ -65,6 +65,7 @@ import org.apache.solr.common.cloud.Clus
import org.apache.solr.common.cloud.DocCollection;
import org.apache.solr.common.cloud.Replica;
import org.apache.solr.common.cloud.Slice;
+import org.apache.solr.common.cloud.SolrZkClient;
import org.apache.solr.common.cloud.ZkCoreNodeProps;
import org.apache.solr.common.cloud.ZkNodeProps;
import org.apache.solr.common.cloud.ZkStateReader;
@@ -99,6 +100,11 @@ public class CollectionsAPIDistributedZk
CompletionService<Request> completionService;
Set<Future<Request>> pending;
+
+ // we randomly use a second config set rather than just one
+ private boolean secondConfigSet = random().nextBoolean();
+
+ private boolean oldStyleSolrXml = false;
@BeforeClass
public static void beforeThisClass2() throws Exception {
@@ -109,12 +115,49 @@ public class CollectionsAPIDistributedZk
@Override
public void setUp() throws Exception {
super.setUp();
+
System.setProperty("numShards", Integer.toString(sliceCount));
System.setProperty("solr.xml.persist", "true");
+ useJettyDataDir = false;
+
+ oldStyleSolrXml = random().nextBoolean();
+ if (oldStyleSolrXml) {
+ System.err.println("Using old style solr.xml");
+ } else {
+ System.err.println("Using new style solr.xml");
+ }
+ if (secondConfigSet ) {
+ String zkHost = zkServer.getZkHost();
+ String zkAddress = zkServer.getZkAddress();
+ SolrZkClient zkClient = new SolrZkClient(zkHost, AbstractZkTestCase.TIMEOUT);
+ zkClient.makePath("/solr", false, true);
+ zkClient.close();
+
+ zkClient = new SolrZkClient(zkAddress, AbstractZkTestCase.TIMEOUT);
+
+ File solrhome = new File(TEST_HOME());
+
+ // for now, always upload the config and schema to the canonical names
+ AbstractZkTestCase.putConfig("conf2", zkClient, solrhome, "solrconfig.xml", "solrconfig.xml");
+ AbstractZkTestCase.putConfig("conf2", zkClient, solrhome, "schema.xml", "schema.xml");
+
+ AbstractZkTestCase.putConfig("conf2", zkClient, solrhome, "solrconfig.snippet.randomindexconfig.xml");
+ AbstractZkTestCase.putConfig("conf2", zkClient, solrhome, "stopwords.txt");
+ AbstractZkTestCase.putConfig("conf2", zkClient, solrhome, "protwords.txt");
+ AbstractZkTestCase.putConfig("conf2", zkClient, solrhome, "currency.xml");
+ AbstractZkTestCase.putConfig("conf2", zkClient, solrhome, "open-exchange-rates.json");
+ AbstractZkTestCase.putConfig("conf2", zkClient, solrhome, "mapping-ISOLatin1Accent.txt");
+ AbstractZkTestCase.putConfig("conf2", zkClient, solrhome, "old_synonyms.txt");
+ AbstractZkTestCase.putConfig("conf2", zkClient, solrhome, "synonyms.txt");
+ AbstractZkTestCase.putConfig("conf2", zkClient, solrhome, "elevate.xml");
+ zkClient.close();
+ }
+
}
protected String getSolrXml() {
- return "solr-no-core.xml";
+ // test old style and new style solr.xml
+ return oldStyleSolrXml ? "solr-no-core-old-style.xml" : "solr-no-core.xml";
}
@@ -498,6 +541,27 @@ public class CollectionsAPIDistributedZk
// poll for a second - it can take a moment before we are ready to serve
waitForNon403or404or503(collectionClient);
}
+
+ // sometimes we restart one of the jetty nodes
+ if (random().nextBoolean()) {
+ JettySolrRunner jetty = jettys.get(random().nextInt(jettys.size()));
+ ChaosMonkey.stop(jetty);
+ ChaosMonkey.start(jetty);
+
+ for (Entry<String,List<Integer>> entry : collectionInfosEntrySet) {
+ String collection = entry.getKey();
+ List<Integer> list = entry.getValue();
+ checkForCollection(collection, list, null);
+
+ String url = getUrlFromZk(collection);
+
+ HttpSolrServer collectionClient = new HttpSolrServer(url);
+
+ // poll for a second - it can take a moment before we are ready to serve
+ waitForNon403or404or503(collectionClient);
+ }
+ }
+
ZkStateReader zkStateReader = getCommonCloudSolrServer().getZkStateReader();
for (int j = 0; j < cnt; j++) {
waitForRecoveriesToFinish("awholynewcollection_" + j, zkStateReader, false);
@@ -668,16 +732,18 @@ public class CollectionsAPIDistributedZk
.getFilter()).getCores();
Collection<SolrCore> theCores = cores.getCores();
for (SolrCore core : theCores) {
- // look for core props file
- assertTrue("Could not find expected core.properties file",
- new File((String) core.getStatistics().get("instanceDir"),
- "core.properties").exists());
+ if (!oldStyleSolrXml) {
+ // look for core props file
+ assertTrue("Could not find expected core.properties file",
+ new File((String) core.getStatistics().get("instanceDir"),
+ "core.properties").exists());
+ }
assertEquals(
- SolrResourceLoader.normalizeDir(jetty.getSolrHome() + File.separator
- + core.getName()),
- SolrResourceLoader.normalizeDir((String) core.getStatistics().get(
- "instanceDir")));
+ new File(SolrResourceLoader.normalizeDir(jetty.getSolrHome() + File.separator
+ + core.getName())).getAbsolutePath(),
+ new File(SolrResourceLoader.normalizeDir((String) core.getStatistics().get(
+ "instanceDir"))).getAbsolutePath());
}
}
Modified: lucene/dev/branches/lucene_solr_4_5/solr/test-framework/src/java/org/apache/solr/cloud/AbstractDistribZkTestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_5/solr/test-framework/src/java/org/apache/solr/cloud/AbstractDistribZkTestBase.java?rev=1531171&r1=1531170&r2=1531171&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_5/solr/test-framework/src/java/org/apache/solr/cloud/AbstractDistribZkTestBase.java (original)
+++ lucene/dev/branches/lucene_solr_4_5/solr/test-framework/src/java/org/apache/solr/cloud/AbstractDistribZkTestBase.java Fri Oct 11 02:17:56 2013
@@ -148,7 +148,7 @@ public abstract class AbstractDistribZkT
for (Map.Entry<String,Slice> entry : slices.entrySet()) {
Map<String,Replica> shards = entry.getValue().getReplicasMap();
for (Map.Entry<String,Replica> shard : shards.entrySet()) {
- if (verbose) System.out.println("rstate:"
+ if (verbose) System.out.println("replica:" + shard.getValue().getName() + " rstate:"
+ shard.getValue().getStr(ZkStateReader.STATE_PROP)
+ " live:"
+ clusterState.liveNodesContain(shard.getValue().getNodeName()));
Modified: lucene/dev/branches/lucene_solr_4_5/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_5/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java?rev=1531171&r1=1531170&r2=1531171&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_5/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java (original)
+++ lucene/dev/branches/lucene_solr_4_5/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java Fri Oct 11 02:17:56 2013
@@ -121,6 +121,7 @@ public abstract class AbstractFullDistri
protected Map<String,CloudJettyRunner> shardToLeaderJetty = new HashMap<String,CloudJettyRunner>();
private boolean cloudInit;
protected boolean checkCreatedVsState;
+ protected boolean useJettyDataDir = true;
public static class CloudJettyRunner {
public JettySolrRunner jetty;
@@ -346,8 +347,8 @@ public abstract class AbstractFullDistri
getClass().getName() + "-jetty" + cnt + "-" + System.currentTimeMillis());
jettyDir.mkdirs();
setupJettySolrHome(jettyDir);
- JettySolrRunner j = createJetty(jettyDir, getDataDir(testDir + "/jetty"
- + cnt), null, "solrconfig.xml", null);
+ JettySolrRunner j = createJetty(jettyDir, useJettyDataDir ? getDataDir(testDir + "/jetty"
+ + cnt) : null, null, "solrconfig.xml", null);
jettys.add(j);
SolrServer client = createNewSolrServer(j.getLocalPort());
clients.add(client);
Modified: lucene/dev/branches/lucene_solr_4_5/solr/test-framework/src/java/org/apache/solr/cloud/AbstractZkTestCase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_5/solr/test-framework/src/java/org/apache/solr/cloud/AbstractZkTestCase.java?rev=1531171&r1=1531170&r2=1531171&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_5/solr/test-framework/src/java/org/apache/solr/cloud/AbstractZkTestCase.java (original)
+++ lucene/dev/branches/lucene_solr_4_5/solr/test-framework/src/java/org/apache/solr/cloud/AbstractZkTestCase.java Fri Oct 11 02:17:56 2013
@@ -102,27 +102,26 @@ public abstract class AbstractZkTestCase
zkClient.makePath("/collections/control_collection/shards", CreateMode.PERSISTENT, true);
// for now, always upload the config and schema to the canonical names
- putConfig(zkClient, solrhome, config, "solrconfig.xml");
- putConfig(zkClient, solrhome, schema, "schema.xml");
+ putConfig("conf1", zkClient, solrhome, config, "solrconfig.xml");
+ putConfig("conf1", zkClient, solrhome, schema, "schema.xml");
- putConfig(zkClient, solrhome, "solrconfig.snippet.randomindexconfig.xml");
- putConfig(zkClient, solrhome, "stopwords.txt");
- putConfig(zkClient, solrhome, "protwords.txt");
- putConfig(zkClient, solrhome, "currency.xml");
- putConfig(zkClient, solrhome, "open-exchange-rates.json");
- putConfig(zkClient, solrhome, "mapping-ISOLatin1Accent.txt");
- putConfig(zkClient, solrhome, "old_synonyms.txt");
- putConfig(zkClient, solrhome, "synonyms.txt");
-
+ putConfig("conf1", zkClient, solrhome, "solrconfig.snippet.randomindexconfig.xml");
+ putConfig("conf1", zkClient, solrhome, "stopwords.txt");
+ putConfig("conf1", zkClient, solrhome, "protwords.txt");
+ putConfig("conf1", zkClient, solrhome, "currency.xml");
+ putConfig("conf1", zkClient, solrhome, "open-exchange-rates.json");
+ putConfig("conf1", zkClient, solrhome, "mapping-ISOLatin1Accent.txt");
+ putConfig("conf1", zkClient, solrhome, "old_synonyms.txt");
+ putConfig("conf1", zkClient, solrhome, "synonyms.txt");
zkClient.close();
}
- private static void putConfig(SolrZkClient zkClient, File solrhome, final String name)
+ public static void putConfig(String confName, SolrZkClient zkClient, File solrhome, final String name)
throws Exception {
- putConfig(zkClient, solrhome, name, name);
+ putConfig(confName, zkClient, solrhome, name, name);
}
- private static void putConfig(SolrZkClient zkClient, File solrhome, final String srcName, String destName)
+ public static void putConfig(String confName, SolrZkClient zkClient, File solrhome, final String srcName, String destName)
throws Exception {
File file = new File(solrhome, "collection1"
+ File.separator + "conf" + File.separator + srcName);
@@ -131,7 +130,7 @@ public abstract class AbstractZkTestCase
return;
}
- String destPath = "/configs/conf1/" + destName;
+ String destPath = "/configs/" + confName + "/" + destName;
log.info("put " + file.getAbsolutePath() + " to " + destPath);
zkClient.makePath(destPath, file, false, true);
}