OK, I put up a very preliminary patch attached to the bug if you want to try it out that addresses the extra junk being put in the <core> tag. Doesn't address the instanceDir issue since I haven't reproduced it yet.
Erick On Tue, Jun 18, 2013 at 8:46 AM, Erick Erickson <erickerick...@gmail.com> wrote: > Whoa! What's this junk? > qt="/admin/cores" wt="javabin" version="2 > > That shouldn't be being preserved, and the instancedir should be! > > So I'm guessing you're using SolrJ to create the core, but I just > reproduced the problem (at least the 'wt="json" ') bit from the > browser and even from one of my internal tests when I added > extra parameters. > > That said, instanceDir is being preserved in my test, so I'm not > seeing everything you're seeing, could you cut/paste your > create code? I'll see if I can set up a test case for SolrJ to catch > this too. > > See SOLR-4935 > > Thanks for reporting! > > On Mon, Jun 17, 2013 at 5:39 PM, Al Wold <alw...@alwold.com> wrote: >> Hi Erick, >> I tried out your changes from the branch_4x branch. It looks good in terms >> of preserving the zkHost, but I'm running into an exception because it isn't >> persisting the instanceDir attribute on the <core> element. >> >> I've got a few other things I need to take care of, but as soon as I have >> time I'll dig in and see if I can figure out what's going on, and see what >> changed to make this not work. >> >> Here are details on what the files looked like before/after CREATE call: >> >> original solr.xml: >> >> <?xml version="1.0" encoding="UTF-8" ?> >> <solr persistent="true" sharedLib="lib" zkHost="10.116.249.136:2181"> >> <!-- this 8080 might need to change in production --> >> <cores adminPath="/admin/cores" zkClientTimeout="20000" hostPort="8080" >> hostContext="/"/> >> </solr> >> >> here's what was produced with 4.3 branch + a quick mod to preserve zkHost: >> >> <?xml version="1.0" encoding="UTF-8" ?> >> <solr persistent="true" zkHost="10.116.249.136:2181" sharedLib="lib"> >> <cores adminPath="/admin/cores" zkClientTimeout="20000" hostPort="8080" >> hostContext="/"> >> <core loadOnStartup="true" shard="shard1" >> instanceDir="directory_shard1_replica1/" transient="false" >> name="directory_shard1_replica1" collection="directory"/> >> <core loadOnStartup="true" shard="shard2" >> instanceDir="directory_shard2_replica1/" transient="false" >> name="directory_shard2_replica1" collection="directory"/> >> </cores> >> </solr> >> >> here's what was produced with branch_4x 4.4-SNAPSHOT: >> >> <?xml version="1.0" encoding="UTF-8" ?> >> <solr persistent="true" zkHost="10.116.249.136:2181" sharedLib="lib"> >> <cores adminPath="/admin/cores" zkClientTimeout="20000" >> distribUpdateSoTimeout="0" distribUpdateConnTimeout="0" hostPort="8080" >> hostContext="/"> >> <core shard="shard1" numShards="2" name="directory_shard1_replica2" >> collection="directory" qt="/admin/cores" wt="javabin" version="2"/> >> <core shard="shard2" numShards="2" name="directory_shard2_replica2" >> collection="directory" qt="/admin/cores" wt="javabin" version="2"/> >> </cores> >> </solr> >> >> and here's the error from solr.log after restarting after the CREATE: >> >> 2013-06-17 21:37:07,083 1874 [pool-2-thread-1] ERROR >> org.apache.solr.core.CoreContainer - null:java.lang.NullPointerException: >> Missing required 'instanceDir' >> at >> org.apache.solr.core.CoreDescriptor.doInit(CoreDescriptor.java:133) >> at org.apache.solr.core.CoreDescriptor.<init>(CoreDescriptor.java:87) >> at org.apache.solr.core.CoreContainer.load(CoreContainer.java:365) >> at org.apache.solr.core.CoreContainer.load(CoreContainer.java:221) >> at >> org.apache.solr.core.CoreContainer$Initializer.initialize(CoreContainer.java:190) >> at >> org.apache.solr.servlet.SolrDispatchFilter.init(SolrDispatchFilter.java:124) >> at >> org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:277) >> at >> org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:258) >> at >> org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:382) >> at >> org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:103) >> at >> org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4638) >> at >> org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5294) >> at >> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) >> at >> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:895) >> at >> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:871) >> at >> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615) >> at >> org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1099) >> at >> org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1621) >> at >> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) >> at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) >> at java.util.concurrent.FutureTask.run(FutureTask.java:166) >> at >> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) >> at >> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) >> at java.lang.Thread.run(Thread.java:679) >> >> >> On Jun 16, 2013, at 5:38 AM, Erick Erickson wrote: >> >>> Al: >>> >>> As it happens, I hope sometime today to put up a patch for SOLR-4910 >>> that should harden up many things in persisting solr.xml, I'll be sure >>> to include this. It's kind of a pain to create an automated test for >>> this, so I'll give it a whirl manually. >>> >>> As you say, most of this is going away in 5.0, but it needs to work for 4.x. >>> >>> And when I get the patch up, if you could give it a "real world" try >>> it'd be great! >>> >>> Thanks, >>> Erick >>> >>> On Fri, Jun 14, 2013 at 6:15 PM, Al Wold <alw...@alwold.com> wrote: >>>> Hi, >>>> I'm working on setting up a solr cloud test environment, and the target >>>> environment I need to put it in has multiple webapps per tomcat instance. >>>> With that in mind, I wanted/had to avoid putting any configs in system >>>> properties. I tried putting the zkHost in solr.xml, like this: >>>> >>>>> <?xml version="1.0" encoding="UTF-8" ?> >>>>> <solr persistent="true" sharedLib="lib" zkHost="10.116.249.136:2181"> >>>>> <!-- this 8080 might need to change in production --> >>>>> <cores adminPath="/admin/cores" zkClientTimeout="20000" hostPort="8080" >>>>> hostContext="/"/> >>>>> </solr> >>>> >>>> Everything works fine when I first start things up, create collections, >>>> upload docs, search, etc. Creating the collection, however, modifies the >>>> solr.xml file, and doesn't keep the zkHost setting: >>>> >>>>> <?xml version="1.0" encoding="UTF-8" ?> >>>>> <solr persistent="true" sharedLib="lib"> >>>>> <cores adminPath="/admin/cores" zkClientTimeout="20000" hostPort="8080" >>>>> hostContext="/"> >>>>> <core loadOnStartup="true" shard="shard2" >>>>> instanceDir="directory_shard2_replica1/" transient="false" >>>>> name="directory_shard2_replica1" collection="directory"/> >>>>> <core loadOnStartup="true" shard="shard1" >>>>> instanceDir="directory_shard1_replica1/" transient="false" >>>>> name="directory_shard1_replica1" collection="directory"/> >>>>> </cores> >>>>> </solr> >>>> >>>> >>>> With that in mind, once I restart tomcat, it no longer knows it's supposed >>>> to be talking to zookeeper, so it looks for local configs and blows up. >>>> >>>> I traced this back to the code in CoreContainer.java, in the method >>>> persistFile(), where it seems to contain no code to write out the zkHost >>>> when it updates solr.xml. I upped the logging on my solr instance to >>>> verify this code is executing, so I'm pretty sure it's the right spot. >>>> >>>> Is anyone else using zkHost in their solr.xml successfully? I can't see >>>> how it would work given this problem. >>>> >>>> Does this seem like a bug? If so, I can probably file a report and submit >>>> a patch. It seems like this problem may become a non-issue in 5.0, based >>>> on comments in the code and some of the discussion in JIRA, but I'm not >>>> sure how far off that is. >>>> >>>> Thanks! >>>> >>>> -Al Wold >>>> >>