Github user mattf-horton commented on a diff in the pull request:

    https://github.com/apache/incubator-metron/pull/334#discussion_r86208152
  
    --- Diff: 
metron-analytics/metron-profiler-client/src/main/java/org/apache/metron/profiler/client/stellar/GetProfile.java
 ---
    @@ -226,14 +262,23 @@ private ColumnBuilder getColumnBuilder(Map<String, 
Object> global) {
        * @param global The global configuration.
        */
       private RowKeyBuilder getRowKeyBuilder(Map<String, Object> global) {
    -    /*
    -     * WARNING: the row key builder is not currently configurable.  by 
invoking
    -     * the default constructor below, this defaults to generating keys 
using a
    -     * period duration of 15 minutes. this function will NOT be able to 
read
    -     * profiles created by a profiler running with any other period 
duration, but
    -     * 15 minutes.
    -     */
    -    return new SaltyRowKeyBuilder();
    +
    +    // how long is the profile period?
    +    String configuredDuration = (String) 
global.getOrDefault(PROFILER_PERIOD, PROFILER_PERIOD_DEFAULT);
    +    long duration = Long.parseLong(configuredDuration);
    +    LOG.debug("profiler client: {}={}", PROFILER_PERIOD, duration);
    +
    +    // which units are used to define the profile period?
    +    String configuredUnits = (String) 
global.getOrDefault(PROFILER_PERIOD_UNITS, PROFILER_PERIOD_UNITS_DEFAULT);
    +    TimeUnit units = TimeUnit.valueOf(configuredUnits);
    +    LOG.debug("profiler client: {}={}", PROFILER_PERIOD_UNITS, units);
    +
    +    // what is the salt divisor?
    +    String configuredSaltDivisor = (String) 
global.getOrDefault(PROFILER_SALT_DIVISOR, PROFILER_SALT_DIVISOR_DEFAULT);
    +    int saltDivisor = Integer.parseInt(configuredSaltDivisor);
    +    LOG.debug("profiler client: {}={}", PROFILER_SALT_DIVISOR, 
saltDivisor);
    +
    +    return new SaltyRowKeyBuilder(saltDivisor, duration, units);
    --- End diff --
    
    Right.  Because of that we can't just generalize the PROFILE_GET argument 
list to include this.  I'm thinking a PROFILE_GET_CONF that has a single string 
arg before "groups", consisting of a comma-separated list of key=value pairs, 
each overriding the global client parameter of the same name.  
    
    PROFILE_GET_CONF has the whole implementation, essentially same as current 
but with each of your new parameters possibly coming from the override string 
instead of from the global config.  PROFILE_GET becomes a stub, invoking 
PROFILE_GET_CONF with an empty override string.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---

Reply via email to