OK, not quite sure if this would work, but....

In each core.properties file, put in a line similar to what Chris suggested:
properties=${env}/custom.properties

You might be able to now define your sys var like
-Drelative_or_absolute_path_to_dev_custom.proerties file.
or
-Drelative_or_absolute_path_to_prod_custom.proerties file.
on Solr startup. Then in the custom.properties file you have whatever
you need to define to make the prod/dev distinction you need.

WARNING: I'm not entirely sure that relative pathing works here, which
just means I haven't tried it.

Best,
Erick

On Wed, Aug 20, 2014 at 3:11 PM, Ryan Josal <ry...@pointinside.com> wrote:
> Thanks Erick, that mirrors my thoughts exactly.  If core.properties had
> property expansion it would work for this, but I agree with not supporting
> that for the complexities it introduces, and I'm not sure it's the right way
> to solve it anyway.  So, it doesn't really handle my problem.
>
> I think because the properties file I want to load is not actually related
> to any core, it makes it easier to solve.  So if solr.xml is no longer
> rewritten then it seems like a global properties file could safely be
> specified there using property expansion.  Or maybe there is some way to
> write some code that could get executed before schema and solrconfig are
> parsed, although I'm not sure how that would work given how you need
> solrconfig to load the libraries and define plugins.
>
> Ryan
>
>
> On 08/20/2014 01:07 PM, Erick Erickson wrote:
>>
>> Hmmm, I was going to make a code change to do this, but Chris
>> Hostetter saved me from the madness that ensues. Here's his comment on
>> the JIRA that I did open (but then closed), does this handle your
>> problem?
>>
>> I don't think we want to make the name of core.properties be variable
>> ... that way leads to madness and confusion.
>>
>> the request on the user list was about being able to dynamically load
>> a property file with diff values between dev & production like you
>> could do in the old style solr.xml – that doesn't mean core.properties
>> needs to have a configurable name, it just means there needs to be a
>> configurable way to load properties.
>>
>> we already have a properties option which can be specified in
>> core.properties to point to an additional external file that should
>> also be loaded ... if variable substitution was in play when parsing
>> core.properties then you could have something like
>> properties=custom.${env}.properties in core.properties ... but
>> introducing variable substitution into thecore.properties (which solr
>> both reads & writes based on CoreAdmin calls) brings back the host of
>> complexities involved when we had persistence of solr.xml as a
>> feature, with the questions about persisting the original values with
>> variables in them, vs the values after evaluating variables.
>>
>> Best,
>> Erick
>>
>> On Wed, Aug 20, 2014 at 11:36 AM, Ryan Josal <ry...@pointinside.com>
>> wrote:
>>>
>>> Hi all, I have a question about dynamically loading a core properties
>>> file
>>> with the new core discovery method of defining cores.  The concept is
>>> that I
>>> can have a dev.properties file and a prod.properties file, and specify
>>> which
>>> one to load with -Dsolr.env=dev.  This way I can have one file which
>>> specifies a bunch of runtime properties like external servers a plugin
>>> might
>>> use, etc.
>>>
>>> Previously I was able to do this in solr.xml because it can do system
>>> property substitution when defining which properties file to use for a
>>> core.
>>>
>>> Now I'm not sure how to do this with core discovery, since the core is
>>> discovered based on this file, and now the file needs to contain things
>>> that
>>> are specific to that core, like name, which previously were defined in
>>> the
>>> xml definition.
>>>
>>> Is there a way I can plugin some code that gets run before any schema or
>>> solrconfigs are parsed?  That way I could write a property loader that
>>> adds
>>> properties from ${solr.env}.properties to the JVM system properties.
>>>
>>> Thanks!
>>> Ryan
>
>

Reply via email to