Hoss, you somehow committed an older patch (the crazy chmod on) together with this merge (<macrodef name="force-test-file-perms">). Can you revert this please?
Uwe ----- Uwe Schindler H.-H.-Meier-Allee 63, D-28213 Bremen http://www.thetaphi.de eMail: [email protected] > -----Original Message----- > From: [email protected] [mailto:[email protected]] > Sent: Friday, December 21, 2012 12:44 AM > To: [email protected] > Subject: svn commit: r1424762 - in /lucene/dev/branches/branch_4x: ./ dev- > tools/ lucene/ lucene/analysis/ > lucene/analysis/icu/src/java/org/apache/lucene/collation/ > lucene/backwards/ lucene/benchmark/ lucene/codecs/ lucene/core/ > lucene/core/src/test/org/apache/l... > > Author: hossman > Date: Thu Dec 20 23:43:47 2012 > New Revision: 1424762 > > URL: http://svn.apache.org/viewvc?rev=1424762&view=rev > Log: > SOLR-4136: followup: fix getBaseUrlForNodeName to never including trailing > slash when using the root context, and harden generateNodeName to not > trust the caller as far as leading/trailing slashes (merge r1424755) > > Modified: > lucene/dev/branches/branch_4x/ (props changed) > lucene/dev/branches/branch_4x/dev-tools/ (props changed) > lucene/dev/branches/branch_4x/lucene/ (props changed) > lucene/dev/branches/branch_4x/lucene/BUILD.txt (props changed) > lucene/dev/branches/branch_4x/lucene/CHANGES.txt (props changed) > lucene/dev/branches/branch_4x/lucene/JRE_VERSION_MIGRATION.txt > (props changed) > lucene/dev/branches/branch_4x/lucene/LICENSE.txt (props changed) > lucene/dev/branches/branch_4x/lucene/MIGRATE.txt (props changed) > lucene/dev/branches/branch_4x/lucene/NOTICE.txt (props changed) > lucene/dev/branches/branch_4x/lucene/README.txt (props changed) > lucene/dev/branches/branch_4x/lucene/SYSTEM_REQUIREMENTS.txt > (props changed) > lucene/dev/branches/branch_4x/lucene/analysis/ (props changed) > > lucene/dev/branches/branch_4x/lucene/analysis/icu/src/java/org/apache/l > ucene/collation/ICUCollationKeyFilterFactory.java (props changed) > lucene/dev/branches/branch_4x/lucene/backwards/ (props changed) > lucene/dev/branches/branch_4x/lucene/benchmark/ (props changed) > lucene/dev/branches/branch_4x/lucene/build.xml (props changed) > lucene/dev/branches/branch_4x/lucene/codecs/ (props changed) > lucene/dev/branches/branch_4x/lucene/common-build.xml (props > changed) > lucene/dev/branches/branch_4x/lucene/core/ (props changed) > > lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/i > ndex/TestBackwardsCompatibility.java (props changed) > > lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/i > ndex/index.40.cfs.zip (props changed) > > lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/i > ndex/index.40.nocfs.zip (props changed) > > lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/i > ndex/index.40.optimized.cfs.zip (props changed) > > lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/i > ndex/index.40.optimized.nocfs.zip (props changed) > lucene/dev/branches/branch_4x/lucene/demo/ (props changed) > lucene/dev/branches/branch_4x/lucene/facet/ (props changed) > lucene/dev/branches/branch_4x/lucene/grouping/ (props changed) > lucene/dev/branches/branch_4x/lucene/highlighter/ (props changed) > lucene/dev/branches/branch_4x/lucene/ivy-settings.xml (props > changed) > lucene/dev/branches/branch_4x/lucene/join/ (props changed) > lucene/dev/branches/branch_4x/lucene/licenses/ (props changed) > lucene/dev/branches/branch_4x/lucene/memory/ (props changed) > lucene/dev/branches/branch_4x/lucene/misc/ (props changed) > lucene/dev/branches/branch_4x/lucene/module-build.xml (props > changed) > lucene/dev/branches/branch_4x/lucene/queries/ (props changed) > lucene/dev/branches/branch_4x/lucene/queryparser/ (props changed) > lucene/dev/branches/branch_4x/lucene/sandbox/ (props changed) > lucene/dev/branches/branch_4x/lucene/site/ (props changed) > lucene/dev/branches/branch_4x/lucene/spatial/ (props changed) > lucene/dev/branches/branch_4x/lucene/suggest/ (props changed) > lucene/dev/branches/branch_4x/lucene/test-framework/ (props > changed) > lucene/dev/branches/branch_4x/lucene/tools/ (props changed) > lucene/dev/branches/branch_4x/solr/ (props changed) > lucene/dev/branches/branch_4x/solr/CHANGES.txt (props changed) > lucene/dev/branches/branch_4x/solr/LICENSE.txt (props changed) > lucene/dev/branches/branch_4x/solr/NOTICE.txt (props changed) > lucene/dev/branches/branch_4x/solr/README.txt (props changed) > lucene/dev/branches/branch_4x/solr/SYSTEM_REQUIREMENTS.txt > (props changed) > lucene/dev/branches/branch_4x/solr/build.xml (contents, props > changed) > lucene/dev/branches/branch_4x/solr/cloud-dev/ (props changed) > lucene/dev/branches/branch_4x/solr/common-build.xml (contents, > props changed) > lucene/dev/branches/branch_4x/solr/contrib/ (props changed) > lucene/dev/branches/branch_4x/solr/core/ (props changed) > > lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/ > ZkController.java > > lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/ > ZkControllerTest.java > lucene/dev/branches/branch_4x/solr/example/ (props changed) > lucene/dev/branches/branch_4x/solr/licenses/ (props changed) > lucene/dev/branches/branch_4x/solr/licenses/httpclient-LICENSE-ASL.txt > (props changed) > lucene/dev/branches/branch_4x/solr/licenses/httpclient-NOTICE.txt > (props changed) > lucene/dev/branches/branch_4x/solr/licenses/httpcore-LICENSE-ASL.txt > (props changed) > lucene/dev/branches/branch_4x/solr/licenses/httpcore-NOTICE.txt > (props changed) > lucene/dev/branches/branch_4x/solr/licenses/httpmime-LICENSE-ASL.txt > (props changed) > lucene/dev/branches/branch_4x/solr/licenses/httpmime-NOTICE.txt > (props changed) > lucene/dev/branches/branch_4x/solr/scripts/ (props changed) > lucene/dev/branches/branch_4x/solr/site/ (props changed) > lucene/dev/branches/branch_4x/solr/solrj/ (props changed) > > lucene/dev/branches/branch_4x/solr/solrj/src/java/org/apache/solr/comm > on/cloud/SolrZkClient.java > lucene/dev/branches/branch_4x/solr/test-framework/ (props changed) > lucene/dev/branches/branch_4x/solr/testlogging.properties (props > changed) > lucene/dev/branches/branch_4x/solr/webapp/ (props changed) > > Modified: lucene/dev/branches/branch_4x/solr/build.xml > URL: > http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/build.x > ml?rev=1424762&r1=1424761&r2=1424762&view=diff > ========================================================== > ==================== > --- lucene/dev/branches/branch_4x/solr/build.xml (original) > +++ lucene/dev/branches/branch_4x/solr/build.xml Thu Dec 20 23:43:47 > +++ 2012 > @@ -282,6 +282,8 @@ > > <!-- Clean targets --> > <target name="clean" description="Cleans compiled files and other > temporary artifacts."> > + <!-- need to fix up the perms before we try to delete --> > + <force-test-file-perms build.dir="build" perms="u+w" /> > <delete dir="build" /> > <delete dir="dist" /> > <delete dir="package" /> > > Modified: lucene/dev/branches/branch_4x/solr/common-build.xml > URL: > http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/comm > on-build.xml?rev=1424762&r1=1424761&r2=1424762&view=diff > ========================================================== > ==================== > --- lucene/dev/branches/branch_4x/solr/common-build.xml (original) > +++ lucene/dev/branches/branch_4x/solr/common-build.xml Thu Dec 20 > +++ 23:43:47 2012 > @@ -109,6 +109,19 @@ > > <path id="test.classpath" refid="solr.test.base.classpath"/> > > + <macrodef name="force-test-file-perms"> > + <attribute name="build.dir" /> > + <attribute name="perms" /> > + <sequential> > + <chmod perm="@{perms}" type="both"> > + <fileset dir="@{build.dir}" erroronmissingdir="false"> > + <include name="**/test-files" /> > + <include name="**/test-files/**" /> > + </fileset> > + </chmod> > + </sequential> > + </macrodef> > + > <macrodef name="solr-contrib-uptodate"> > <attribute name="name"/> > <attribute name="property" default="@{name}.uptodate"/> @@ -381,6 > +394,8 @@ > <sync todir="${build.dir}/test-files"> > <fileset dir="${tests.userdir}"/> > </sync> > + <!-- don't let tests muck with this --> > + <force-test-file-perms build.dir="${build.dir}" perms="ugo-w" /> > </target> > > <!-- Solr test-framework targets --> > @@ -433,6 +448,14 @@ > <contrib-crawl target="add-to-war"/> > </target> > > + <target name="clean" > + description="Removes contents of build and dist directories" > + depends="-make-test-files-writable, common.clean" /> <target > + name="-make-test-files-writable"> > + <force-test-file-perms build.dir="${build.dir}" perms="u+w" /> > + </target> > + > + > <!-- hack for now to disable *all* Solr tests on Jenkins when > "tests.disable- > solr" property is set --> > <target name="test" unless="tests.disable-solr"> > <antcall target="common.test" inheritrefs="true" inheritall="true"/> > > Modified: > lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/ > ZkController.java > URL: > http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/sr > c/java/org/apache/solr/cloud/ZkController.java?rev=1424762&r1=1424761&r > 2=1424762&view=diff > ========================================================== > ==================== > --- > lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/ > ZkController.java (original) > +++ > lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/clo > +++ ud/ZkController.java Thu Dec 20 23:43:47 2012 > @@ -142,17 +142,12 @@ public final class ZkController { > TimeoutException, IOException { > if (cc == null) throw new IllegalArgumentException("CoreContainer cannot > be null."); > this.cc = cc; > - if (localHostContext.startsWith("/")) { > - // be forgiving and strip this off > - // this allows us to support users specifying hostContext="/" in > - // solr.xml to indicate the root context, instead of hostContext="" > - // which means the default of "solr" > - localHostContext = localHostContext.substring(1); > - } > - if (localHostContext.endsWith("/")) { > - // be extra nice > - localHostContext = > localHostContext.substring(0,localHostContext.length()-1); > - } > + > + // be forgiving and strip this off leading/trailing slashes > + // this allows us to support users specifying hostContext="/" in > + // solr.xml to indicate the root context, instead of hostContext="" > + // which means the default of "solr" > + localHostContext = trimLeadingAndTrailingSlashes(localHostContext); > > updateShardHandler = new > UpdateShardHandler(distribUpdateConnTimeout, distribUpdateSoTimeout); > > @@ -1313,9 +1308,9 @@ public final class ZkController { > /** > * Returns the nodeName that should be used based on the specified > properties. > * > - * @param hostName - must not be the empty string > - * @param hostPort - must consist only of digits, must not be the empty > string > - * @param hostContext - should not begin or end with a slash, may be the > empty string to denote the root context > + * @param hostName - must not be null or the empty string > + * @param hostPort - must consist only of digits, must not be null or the > empty string > + * @param hostContext - should not begin or end with a slash > + (leading/trailin slashes will be ignored), must not be null, may be > + the empty string to denote the root context > * @lucene.experimental > * @see SolrZkClient#getBaseUrlForNodeName > */ > @@ -1324,9 +1319,27 @@ public final class ZkController { > final String hostContext) { > try { > return hostName + ':' + hostPort + '_' + > - URLEncoder.encode(hostContext, "UTF-8"); > + URLEncoder.encode(trimLeadingAndTrailingSlashes(hostContext), > + "UTF-8"); > } catch (UnsupportedEncodingException e) { > throw new IllegalStateException("JVM Does not seem to support UTF-8", > e); > } > } > + > + /** > + * utilitiy method fro trimming and leading and/or trailing slashes from > + * it's input. May return the empty string. May return null if and only > + * if the input is null. > + */ > + private static String trimLeadingAndTrailingSlashes(final String in) { > + if (null == in) return in; > + > + String out = in; > + if (out.startsWith("/")) { > + out = out.substring(1); > + } > + if (out.endsWith("/")) { > + out = out.substring(0,out.length()-1); > + } > + return out; > + } > } > > Modified: > lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/ > ZkControllerTest.java > URL: > http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/sr > c/test/org/apache/solr/cloud/ZkControllerTest.java?rev=1424762&r1=14247 > 61&r2=1424762&view=diff > ========================================================== > ==================== > --- > lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/ > ZkControllerTest.java (original) > +++ lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/clo > +++ ud/ZkControllerTest.java Thu Dec 20 23:43:47 2012 > @@ -53,10 +53,22 @@ public class ZkControllerTest extends So > // nodeName from parts > assertEquals("localhost:8888_solr", > ZkController.generateNodeName("localhost", "8888", "solr")); > - assertEquals("localhost:8888_", // root context > + assertEquals("localhost:8888_solr", > + ZkController.generateNodeName("localhost", "8888", > "/solr")); > + assertEquals("localhost:8888_solr", > + ZkController.generateNodeName("localhost", "8888", > "/solr/")); > + // root context > + assertEquals("localhost:8888_", > ZkController.generateNodeName("localhost", "8888", "")); > + assertEquals("localhost:8888_", > + ZkController.generateNodeName("localhost", "8888", "/")); > + // subdir > assertEquals("foo-bar:77_solr%2Fsub_dir", > ZkController.generateNodeName("foo-bar", "77", > "solr/sub_dir")); > + assertEquals("foo-bar:77_solr%2Fsub_dir", > + ZkController.generateNodeName("foo-bar", "77", > "/solr/sub_dir")); > + assertEquals("foo-bar:77_solr%2Fsub_dir", > + ZkController.generateNodeName("foo-bar", "77", > + "/solr/sub_dir/")); > > // setup a SolrZkClient to do some getBaseUrlForNodeName testing > String zkDir = dataDir.getAbsolutePath() + File.separator @@ -75,27 > +87,41 > @@ public class ZkControllerTest extends So > // getBaseUrlForNodeName > assertEquals("http://zzz.xxx:1234/solr", > zkClient.getBaseUrlForNodeName("zzz.xxx:1234_solr")); > - assertEquals("http://xxx:99/", > + assertEquals("http://xxx:99", > zkClient.getBaseUrlForNodeName("xxx:99_")); > assertEquals("http://foo-bar.baz.org:9999/some_dir", > zkClient.getBaseUrlForNodeName("foo- > bar.baz.org:9999_some_dir")); > assertEquals("http://foo-bar.baz.org:9999/solr/sub_dir", > zkClient.getBaseUrlForNodeName("foo- > bar.baz.org:9999_solr%2Fsub_dir")); > > - > // generateNodeName + getBaseUrlForNodeName > assertEquals("http://foo:9876/solr", > zkClient.getBaseUrlForNodeName > (ZkController.generateNodeName("foo","9876","solr"))); > + assertEquals("http://foo:9876/solr", > + zkClient.getBaseUrlForNodeName > + (ZkController.generateNodeName("foo","9876","/solr"))); > + assertEquals("http://foo:9876/solr", > + zkClient.getBaseUrlForNodeName > + > + (ZkController.generateNodeName("foo","9876","/solr/"))); > assertEquals("http://foo.bar.com:9876/solr/sub_dir", > zkClient.getBaseUrlForNodeName > > (ZkController.generateNodeName("foo.bar.com","9876","solr/sub_dir"))); > - assertEquals("http://foo-bar:9876/", > + assertEquals("http://foo.bar.com:9876/solr/sub_dir", > + zkClient.getBaseUrlForNodeName > + > (ZkController.generateNodeName("foo.bar.com","9876","/solr/sub_dir/"))); > + assertEquals("http://foo-bar:9876", > zkClient.getBaseUrlForNodeName > (ZkController.generateNodeName("foo-bar","9876",""))); > + assertEquals("http://foo-bar:9876", > + zkClient.getBaseUrlForNodeName > + > + (ZkController.generateNodeName("foo-bar","9876","/"))); > assertEquals("http://foo-bar.com:80/some_dir", > zkClient.getBaseUrlForNodeName > (ZkController.generateNodeName("foo- > bar.com","80","some_dir"))); > + assertEquals("http://foo-bar.com:80/some_dir", > + zkClient.getBaseUrlForNodeName > + > + (ZkController.generateNodeName("foo-bar.com","80","/some_dir"))); > } finally { > zkClient.close(); > } > > Modified: > lucene/dev/branches/branch_4x/solr/solrj/src/java/org/apache/solr/comm > on/cloud/SolrZkClient.java > URL: > http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/solrj/sr > c/java/org/apache/solr/common/cloud/SolrZkClient.java?rev=1424762&r1=1 > 424761&r2=1424762&view=diff > ========================================================== > ==================== > --- > lucene/dev/branches/branch_4x/solr/solrj/src/java/org/apache/solr/comm > on/cloud/SolrZkClient.java (original) > +++ lucene/dev/branches/branch_4x/solr/solrj/src/java/org/apache/solr/co > +++ mmon/cloud/SolrZkClient.java Thu Dec 20 23:43:47 2012 > @@ -484,7 +484,7 @@ public class SolrZkClient { > try { > final String path = URLDecoder.decode(nodeName.substring(1+_offset), > "UTF-8"); > - return "http://" + hostAndPort + "/" + path; > + return "http://" + hostAndPort + (path.isEmpty() ? "" : ("/" + > + path)); > } catch (UnsupportedEncodingException e) { > throw new IllegalStateException("JVM Does not seem to support UTF-8", > e); > } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
