lucene-solr-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jeremy Hinegardner <jer...@hinegardner.org>
Subject Re: problem using solr 1.4 multicore with shareSchema=true
Date Wed, 28 Oct 2009 04:02:17 GMT
I just tested your patch, it works for me.  I vote for getting this in on the
1.4 release :-)

enjoy,

-jeremy

On Wed, Oct 28, 2009 at 09:15:03AM +0530, Noble Paul ?????????????????????  ??????????????????
wrote:
> I've opened an issue https://issues.apache.org/jira/browse/SOLR-1527
> 
> 2009/10/28 Noble Paul ?????????????????????  ?????????????????? <noble.paul@corp.aol.com>:
> > hi,
> > Looks like a bug. open an issue.
> >
> >
> > On Wed, Oct 28, 2009 at 4:04 AM, Jeremy Hinegardner
> > <jeremy@hinegardner.org> wrote:
> >> Hi all,
> >>
> >> I was trying to use the new 'shareSchema=true' feature in solr 1.4 and
> >> it appears as though this will only happen in one configuration. I'd like
> >> someone to confirm this for me and then we can file a bug on it.
> >>
> >> This all happens in CoreContainer.create().
> >>
> >> When you have shareSchema=true in solr.xml then an instance variable
> >> indexSchemaCache is created in the CoreContainer instance.
> >>
> >> This snippet is from CoreContainer.create
> >>
> >> ?? ?? ??if (indexSchemaCache != null){
> >> ?? ?? ?? ?? //schema sharing is enabled. so check if it already is loaded
> >>
> >> [1] ?? ?? ??File schemFile = new File(solrLoader.getInstanceDir() + "conf" +
File.separator + dcore.getSchemaName());
> >> ?? ?? ?? ?? if(schemFile. exists()){
> >> [2] ?? ?? ?? ?? String key = schemFile.getAbsolutePath()+":"+new SimpleDateFormat("yyyyMMddhhmmss").format(new
Date(schemFile.lastModified()));
> >>
> >> ?? ?? ?? ?? ??schema = indexSchemaCache.get(key);
> >> ?? ?? ?? ?? ??if(schema == null){
> >> ?? ?? ?? ?? ?? ??log.info("creating new schema object for core: " + dcore.name);
> >> ?? ?? ?? ?? ?? ??schema = new IndexSchema(config, dcore.getSchemaName(), null);
> >> ?? ?? ?? ?? ?? ??indexSchemaCache.put(key,schema);
> >> ?? ?? ?? ?? ??} else {
> >> ?? ?? ?? ?? ?? ??log.info("re-using schema object for core: " + dcore.name);
> >> ?? ?? ?? ?? ??}
> >> ?? ?? ?? ??}
> >> ?? ?? ??}
> >> ?? ?? ??if(schema == null){
> >> ?? ?? ?? ??schema = new IndexSchema(config, dcore.getSchemaName(), null);
> >> ?? ?? ??}
> >>
> >> A couple of points:
> >>
> >> [1] dcore.getSchemaName() is the value that is in the 'schema'
> >> ?? ??<core /> element in the solr.xml. ??This means that the this MUST
> >> ?? ??be relative to the core-instance-dir/conf directory. ??Putting an
> >> ?? ??absolute path in the xml means that schemFile.exists() will always
> >> ?? ??return false. ??That is, if I put in
> >>
> >> ?? ?? ??<core name="core0" schema="/opt/search/solr/conf/multicore-common-schema.xml"
/>
> >>
> >> ?? ??then schemFile will have a path of:
> >>
> >> ?? ?? ??/path/to/core0/instanceDir/conf/opt/search/solr/conf/multicore-common-schema.xml
> >>
> >> ?? ??Which never exists.
> >>
> >> [2] If you do use a relative path to the schema.xml file, then the key will
always be
> >> ?? ??unique, since each schemFile is relative to a core's instanceDir, the core
name is
> >> ?? ??in the path and schemFile.getAbsolutePathe() will always be unique for
every core.
> >>
> >> The result of this is, if I wanted to use shareSchema, it looks like the
> >> only way for that to happen, is if two cores are using the same instanceDir
> >> but different dataDir.
> >>
> >> I tried a test with this solr.xml in the example multicore configurae, and this
> >> appears to be the only way to reuse the schema instance, and to me this has
a
> >> bit of a smell:
> >>
> >> ??<solr persistent="false">
> >> ?? ??<cores adminPath="/admin/cores" shareSchema="true" >
> >> ?? ?? ??<core name="core0" instanceDir="mcore" schema="schema-common.xml"
dataDir="core0/data" />
> >> ?? ?? ??<core name="core1" instanceDir="mcore" schema="schema-common.xml"
dataDir="core1/data" />
> >> ?? ??</cores>
> >> ??</solr>
> >>
> >> In my initial playing with this feature, I assumed that just putting in
> >> the full path to a common schema.xml file would do the trick. ??That is
> >> evidently not the way it works.
> >>
> >> What is the way that shareSchema=true is supposed to work?
> >>
> >> enjoy,
> >>
> >> -jeremy
> >>
> >> --
> >> ========================================================================
> >> ??Jeremy Hinegardner ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??jeremy@hinegardner.org
> >>
> >>
> >
> >
> >
> > --
> > -----------------------------------------------------
> > Noble Paul | Principal Engineer| AOL | http://aol.com
> >
> 
> 
> 
> -- 
> -----------------------------------------------------
> Noble Paul | Principal Engineer| AOL | http://aol.com

-- 
========================================================================
 Jeremy Hinegardner                              jeremy@hinegardner.org 


Mime
View raw message