Hmm..what do you mean by "the administrator explicitly set B or C to the 
default value"?

I'm not sure how the administrator can "play" around with default values? Or 
Did you mean, if a new version (release?) of trafficserver changed the default 
value for a setting?

If it is the latter (changing default across releases), shouldn't our normal 
guidelines/warnings about compatibility across releases (generally, backward 
compatible across minor version updates, possibly not backward compatible 
across major updates) handle the consequences? 



> On Nov 21, 2016, at 1:22 PM, Alan Carroll 
> <solidwallofc...@yahoo-inc.com.INVALID> wrote:
> 
> The use case is providing backwards compatibility. Suppose a plugin uses 
> config value A. A newer version, in order to support additional features, 
> uses values B and C. It would be nice to be able to detect that neither B nor 
> C were explicitly set by the administrator in records.config and therefore 
> the plugin should fall back and use A. It is also required to *not* fall back 
> to A if the administrator explicitly set B or C to the default value. 
> Therefore checking the retrieved value against the default value is 
> insufficient. One might use a bogus default value then, but now there's a 
> problem if none of A,B, or C was set.
> 
> 
> 
>    On Monday, November 21, 2016 3:02 PM, Sudheer Vinukonda 
> <sudheervinuko...@yahoo.com.INVALID> wrote:
> 
> 
> I'm curious to know the use case, if any, in where one'd care if a "default" 
> value for a setting came from the source code or from records.config. 
> 
> Consequently, I wonder if it is sufficient to know that a given setting has a 
> "default" value or a non-default value.
> 
> It might also be helpful if you can enumerate the possible combinations of 
> values and the corresponding source/explicit value that they mean.
> 
> - Sudheer
> 
>> On Nov 21, 2016, at 12:52 PM, Alan Carroll 
>> <solidwallofc...@yahoo-inc.com.INVALID> wrote:
>> 
>> No, they behave very differently. If you have a config variable in 
>> RecordsConfig.cc and it's not mentioned in records.config you get 
>> REC_SOURCE_DEFAULT. If you have a plugin created config variable that is not 
>> in records.config you get REC_SOURCE_EXPLICIT. In both cases if the value is 
>> in records.config you get REC_SOURCE_EXPLICIT. So for a built in it is 
>> detectable if the value is in records.config, but not detectable for a 
>> plugin created variable. 
>> 
>>     On Monday, November 21, 2016 2:34 PM, James Peach <jpe...@apache.org> 
>> wrote:
>> 
>> 
>> 
>>> On Nov 21, 2016, at 11:50 AM, Alan Carroll 
>>> <solidwallofc...@yahoo-inc.com.INVALID> wrote:
>>> 
>>> No, the source is REC_SOURCE_EXPLICIT even if the variable is not mentioned 
>>> in records.config. How else can a plugin tell if a config variable it 
>>> creates has a value in records.config?
>> 
>> I think I’m confused about what you are proposing then. It sounds like 
>> configuration records used by plugins behave just like configuration records 
>> used by traffic_server. Is that the case? If so, it sounds like correct 
>> behavior to me. If not, what is the problem that you are addressing here?
>> 
>>>   
>>> 
>>>     On Monday, November 21, 2016 12:21 PM, James Peach <jpe...@apache.org> 
>>> wrote:
>>> 
>>> 
>>> 
>>>> On Nov 21, 2016, at 9:14 AM, Alan Carroll 
>>>> <solidwallofc...@yahoo-inc.com.INVALID> wrote:
>>>> 
>>>> REC_SOURCE_EXPLICIT - see TSMgmtStringCreate in InkAPI.cc (around line 
>>>> 8896). That is the same value as setting the value in a configuration file.
>>> 
>>> That sounds correct to me. The value was set in a configuration file and is 
>>> being consumed by a plugin.
>>> 
>>>>     On Monday, November 21, 2016 10:29 AM, James Peach <jpe...@apache.org> 
>>>> wrote:
>>>> 
>>>> 
>>>> 
>>>>> On Nov 21, 2016, at 7:20 AM, Alan Carroll 
>>>>> <solidwallofc...@yahoo-inc.com.INVALID> wrote:
>>>>> 
>>>>> The config variable sourcing data was originally put in to be able to 
>>>>> detect that a variable was set even if that setting was the same as the 
>>>>> default (otherwise this is impossible to reliably determine). I am 
>>>>> working with a plugin that defines its own config records but as far as I 
>>>>> can tell (1) the source value for a plugin configured record default is 
>>>>> the same as for an explicitly set value and (2) the source information is 
>>>>> not available via the plugin API.
>>>> 
>>>> What is the source when you specify a record in records.config, then 
>>>> register it from a plugin?
>>>> 
>>>>> I would like to fix both of these.
>>>>> First, add a "PLUGIN" value to RecSourceT to indicate the value is set as 
>>>>> a default by the plugin and use EXPLICIT only for values from 
>>>>> configuration files or explicit value setting API calls.
>>>>> Second,
>>>>> * Move or copy the RecSourceT define to apidef.h.in.* Add 
>>>>> TSMgmtSourceGet(const char*) to return the RecSourceT value for a 
>>>>> configuration variable.
>>>>> 
>>>> 
>>>> 
>>> 
>>> 
>> 
>> 
> 
> 

Reply via email to