Hi Jeff,

I guess you are :)

Personally, whenever I download and try a new project *in development environment* I always just want to get it up and running without having to fiddle with configurations. Of course, I do a bit of reading the docs, before trying it out, but I like to have the install and run to be straightforward without having to change/add configurations. Having sensible defaults helps in development environments and in getting started. IMO, this param belongs to that category.

-Jaikiran

On Thursday 29 January 2015 08:00 PM, Jeff Holoman wrote:
Maybe I'm in the minority here, but I actually don't think there should be a default for this param and you should be required to explicitly set this.

On Thu, Jan 29, 2015 at 5:43 AM, Jay Kreps <boredandr...@gmail.com <mailto:boredandr...@gmail.com>> wrote:



    > On Jan. 29, 2015, 6:50 a.m., Gwen Shapira wrote:
    > > We added --override option to KafkaServer that allows overriding 
default configuration from
    commandline.
    > > I believe that just changing the shell script to include
    --override log.dir=${KAFKA_HOME}/data
    > > may be enough?
    > >
    > > overriding configuration from server.properties in code can be
    very unintuitive.
    >
    > Jaikiran Pai wrote:
    >     That sounds a good idea. I wasn't aware of the --override
    option. I'll give that a try and if it works then the change will
    be limited to just the scripts.
    >
    > Jaikiran Pai wrote:
    >     Hi Gwen,
    >
    >     I had a look at the JIRA
    https://issues.apache.org/jira/browse/KAFKA-1654 which added
    support for --override and also the purpose of that option. From
    what I see it won't be useful in this case, because in this
    current task, we don't want to override a value that has been
    explicitly set (via server.properties for example). Instead we
    want to handle a case where no explicit value is specified for the
    data log directory and in such cases default it to a path which
    resides under the Kafka install directory.
    >
    >     If we use the --override option in our (startup) scripts to
    set log.dir=${KAFKA_HOME}/data, we will end up forcing this value
    as the log.dir even when the user has intentionally specified a
    different path for the data logs.
    >
    >     Let me know if I misunderstood your suggestion.
    >
    > Jay Kreps wrote:
    >     I think you are right that --override won't work but maybe
    this is still a good suggestion?
    >
    >     Something seems odd about force overriding the working
    directory of the process just to set the log directory.
    >
    >     Another option might be to add --default. This would work
    like --override but would provide a default value only if none is
    specified. I think this might be possible because the
    java.util.Properties we use for config supports a hierarchy of
    defaults. E.g. you can say new Properties(defaultProperties). Not
    sure if this is better or worse.
    >
    >     Thoughts?
    >
    > Jaikiran Pai wrote:
    >     Hi Jay,
    >
    >     > Another option might be to add --default. This would work
    like --override but would provide a default value only if none is
    specified. I think this might be possible because the
    java.util.Properties we use for config supports a hierarchy of
    defaults. E.g. you can say new Properties(defaultProperties). Not
    sure if this is better or worse.
    >
    >     I think --default sounds like a good idea which could help
    us use it for other properties too (if we need to). It does look
    better than the current change that I have done, because the Java
    code then doesn't have to worry about how that default value is
    sourced. We can then just update the scripts to set up the default
    for the log.dir appropriately.
    >
    >     I can work towards adding support for it and will update
    this patch once it's ready.
    >
    >     As for:
    >
    >     > Something seems odd about force overriding the working
    directory of the process just to set the log directory.
    >
    >     Sorry, I don't understand what you meant there. Is it
    something about the change that was done to the scripts?

    I guess what I mean is: is there any other reason you might care
    about the working directory of the process? If so we probably
    don't want to force it to be the Kafka directory. If not it may
    actually be fine and in that case I think having relative paths
    work is nice. I don't personally know the answer to this, what is
    "good practice" for a server process?


    - Jay


    -----------------------------------------------------------
    This is an automatically generated e-mail. To reply, visit:
    https://reviews.apache.org/r/30403/#review70168
    -----------------------------------------------------------


    On Jan. 29, 2015, 6:24 a.m., Jaikiran Pai wrote:
    >
    > -----------------------------------------------------------
    > This is an automatically generated e-mail. To reply, visit:
    > https://reviews.apache.org/r/30403/
    > -----------------------------------------------------------
    >
    > (Updated Jan. 29, 2015, 6:24 a.m.)
    >
    >
    > Review request for kafka.
    >
    >
    > Bugs: KAFKA-1906
    > https://issues.apache.org/jira/browse/KAFKA-1906
    >
    >
    > Repository: kafka
    >
    >
    > Description
    > -------
    >
    > KAFKA-1906 Default the Kafka data log directory to
    $KAFKA_HOME/data/kafka-logs directory, where KAFKA_HOME is the
    Kafka installation directory
    >
    >
    > Diffs
    > -----
    >
    >   bin/kafka-run-class.sh 881f578a8f5c796fe23415b978c1ad35869af76e
    >   bin/windows/kafka-run-class.bat
    9df3d2b45236b4f06d55a89c84afcf0ab9f5d0f2
    >   config/server.properties 1614260b71a658b405bb24157c8f12b1f1031aa5
    >  core/src/main/scala/kafka/server/KafkaConfig.scala
    6d74983472249eac808d361344c58cc2858ec971
    >  core/src/test/scala/unit/kafka/server/KafkaConfigTest.scala
    82dce80d553957d8b5776a9e140c346d4e07f766
    >
    > Diff: https://reviews.apache.org/r/30403/diff/
    >
    >
    > Testing
    > -------
    >
    > The change here involves updating the Kafka scripts (for Windows
    and * nix) to infer and setup KAFKA_HOME environment variable.
    This value is then used by the KafkaConfig to decide what path to
    default to for the Kafka data logs, in the absence of any
    explicitly set log.dirs (or log.dir) properties.
    >
    > Care has been taken to ensure that other mechanism which might
    presently be bypassing the Kafka scripts, will still continue to
    function, since in the absence of KAFKA_HOME environment property
    value, we fall back to /tmp/kafka-logs (the present default) as
    the default data log directory
    >
    > Existing tests have been run to ensure that this change
    maintains backward compatibility (i.e. doesn't fail when
    KAFKA_HOME isn't available/set) and 2 new test methods have been
    added to the KafkaConfigTest to ensure that this change works.
    >
    > Although the change has been made to both .sh and .bat files, to
    support this, I haven't actually tested this change on a Windows
    OS and would appreciate if someone can test this there and let me
    know if they run into any issues.
    >
    >
    > Thanks,
    >
    > Jaikiran Pai
    >
    >




--
Jeff Holoman
Systems Engineer
678-612-9519



Reply via email to