Bryan, maybe it's time to stick this in JIRA? http://wiki.apache.org/solr/HowToContribute
Thanks, Otis -- Sematext -- http://sematext.com/ -- Lucene - Solr - Nutch ----- Original Message ---- > From: Bryan Talbot <btal...@aeriagames.com> > To: solr-user@lucene.apache.org > Sent: Wednesday, May 13, 2009 10:11:21 PM > Subject: Re: Replication master+slave > > I think the patch I included earlier covers solr core, but it looks like at > least some other extensions (DIH) create and use their own XML parser. So, > if > this functionality is to extend to all XML files, those will need similar > patches. > > Here's one for DIH: > > --- src/main/java/org/apache/solr/handler/dataimport/DataImporter.java > (revision 774137) > +++ src/main/java/org/apache/solr/handler/dataimport/DataImporter.java > (working > copy) > @@ -148,8 +148,10 @@ > void loadDataConfig(String configFile) { > > try { > - DocumentBuilder builder = DocumentBuilderFactory.newInstance() > - .newDocumentBuilder(); > + DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); > + dbf.setNamespaceAware(true); > + dbf.setXIncludeAware(true); > + DocumentBuilder builder = dbf.newDocumentBuilder(); > Document document = builder.parse(new InputSource(new StringReader( > configFile))); > > > > The only down side I can see to this is it doesn't offer very expressive > conditional inclusion: the file is included if it's present otherwise > fallback > inclusions can be used. It's also specific to XML files and obviously won't > work for other types of configuration files. However, it is simple and > effective. > > > -Bryan > > > > > On May 13, 2009, at May 13, 6:36 PM, Otis Gospodnetic wrote: > > > > > Coincidentally, from > http://www.cloudera.com/blog/2009/05/07/what%E2%80%99s-new-in-hadoop-core-020/ > : > > > > "Hadoop configuration files now support XInclude elements for including > portions of another configuration file (HADOOP-4944). This mechanism allows > you > to make configuration files more modular and reusable." > > > > So "others are doing it, too". > > > > Otis > > -- > > Sematext -- http://sematext.com/ -- Lucene - Solr - Nutch > > > > > > > > ----- Original Message ---- > >> From: Bryan Talbot > >> To: solr-user@lucene.apache.org > >> Sent: Wednesday, May 13, 2009 11:26:41 AM > >> Subject: Re: Replication master+slave > >> > >> I see that Nobel's final comment in SOLR-1154 is that config files need to > >> be > >> able to include snippets from external files. In my limited testing, a > simple > >> patch to enable XInclude support seems to work. > >> > >> > >> > >> --- src/java/org/apache/solr/core/Config.java (revision 774137) > >> +++ src/java/org/apache/solr/core/Config.java (working copy) > >> @@ -100,8 +100,10 @@ > >> if (lis == null) { > >> lis = loader.openConfig(name); > >> } > >> - javax.xml.parsers.DocumentBuilder builder = > >> DocumentBuilderFactory.newInstance().newDocumentBuilder(); > >> - doc = builder.parse(lis); > >> + javax.xml.parsers.DocumentBuilderFactory dbf = > >> DocumentBuilderFactory.newInstance(); > >> + dbf.setNamespaceAware(true); > >> + dbf.setXIncludeAware(true); > >> + doc = dbf.newDocumentBuilder().parse(lis); > >> > >> DOMUtil.substituteProperties(doc, loader.getCoreProperties()); > >> } catch (ParserConfigurationException e) { > >> > >> > >> > >> This allows a clause like this to include the contents of replication.xml > >> if > it > >> exists. If it's not found an exception will be thrown. > >> > >> > >> > >> href="http://localhost:8983/solr/corename/admin/file/?file=replication.xml" > >> xmlns:xi="http://www.w3.org/2001/XInclude"> > >> > >> > >> > >> If the file is optional and no exception should be thrown if the file is > >> missing, simply include a fallback action: in this case the fallback is > >> empty > >> and does nothing. > >> > >> > >> > >> href="http://localhost:8983/solr/forum_en/admin/file/?file=replication.xml" > >> xmlns:xi="http://www.w3.org/2001/XInclude"> > >> > >> > >> > >> > >> -Bryan > >> > >> > >> > >> > >> On May 12, 2009, at May 12, 8:05 PM, Jian Han Guo wrote: > >> > >>> I was looking at the same problem, and had a discussion with Noble. You > >>> can > >>> use a hack to achieve what you want, see > >>> > >>> https://issues.apache.org/jira/browse/SOLR-1154 > >>> > >>> Thanks, > >>> > >>> Jianhan > >>> > >>> > >>> On Tue, May 12, 2009 at 5:13 PM, Bryan Talbot wrote: > >>> > >>>> So how are people managing solrconfig.xml files which are largely the > >>>> same > >>>> other than differences for replication? > >>>> > >>>> I don't think it's a "good thing" to maintain two copies of the same file > >>>> and I'd like to avoid that. Maybe enabling the XInclude feature in > >>>> DocumentBuilders would make it possible to modularize configuration > >>>> files > to > >>>> make this possible? > >>>> > >>>> > >>>> > >> > http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/parsers/DocumentBuilderFactory.html#setXIncludeAware(boolean) > >>>> > >>>> > >>>> -Bryan > >>>> > >>>> > >>>> > >>>> > >>>> > >>>> On May 12, 2009, at May 12, 11:43 AM, Shalin Shekhar Mangar wrote: > >>>> > >>>> On Tue, May 12, 2009 at 10:42 PM, Bryan Talbot > >>>>>> wrote: > >>>>> > >>>>> For replication in 1.4, the wiki at > >>>>>> http://wiki.apache.org/solr/SolrReplication says that a node can be > >>>>>> both > >>>>>> the master and a slave: > >>>>>> > >>>>>> A node can act as both master and slave. In that case both the master > >>>>>> and > >>>>>> slave configuration lists need to be present inside the > >>>>>> ReplicationHandler > >>>>>> requestHandler in the solrconfig.xml. > >>>>>> > >>>>>> What does this mean? Does the core then poll itself for updates? > >>>>>> > >>>>> > >>>>> > >>>>> No. This type of configuration is meant for "repeaters". Suppose there > >>>>> are > >>>>> slaves in multiple data-centers (say data center A and B). There is > >>>>> always > >>>>> a > >>>>> single master (say in A). One of the slaves in B is used as a master for > >>>>> the > >>>>> other slaves in B. Therefore, this one slave in B is both a master as > >>>>> well > >>>>> as the slave. > >>>>> > >>>>> > >>>>> > >>>>>> I'd like to have a single set of configuration files that are shared by > >>>>>> masters and slaves and avoid duplicating configuration details in > >>>>>> multiple > >>>>>> files (one for master and one for slave) to ease management and > >>>>>> failover. > >>>>>> Is this possible? > >>>>>> > >>>>>> > >>>>> You wouldn't want the master to be a slave. So I guess you'd need to > >>>>> have > >>>>> a > >>>>> separate file. Also, it needs to be a separate file so that the slave > >>>>> does > >>>>> not become a master when the solrconfig.xml is replicated. > >>>>> > >>>>> > >>>>> > >>>>>> When I attempt to setup a multi server master-slave configuration and > >>>>>> include both master and slave replication configuration options, I into > >>>>>> some > >>>>>> problems. I'm running a nightly build from May 7. > >>>>>> > >>>>>> > >>>>> Not sure what happened. Is that the url for this solr (meaning same solr > >>>>> url > >>>>> is master and slave of itself)? If yes, that is not a valid > >>>>> configuration. > >>>>> > >>>>> -- > >>>>> Regards, > >>>>> Shalin Shekhar Mangar. > >>>>> > >>>> > >>>> > >