If you'd like to contribute a patch to Impala, but aren't sure what you
want to work on, you can look at Impala's newbie issues:
https://issues.apache.org/jira/issues/?filter=12341668. You can find
detailed instructions on submitting patches at
https://cwiki.apache.org/confluence/display/IMPALA/Contributing+to+Impala.
This is a walkthrough of a ticket a new contributor could take on, with
hopefully enough detail to get you going but not so much to take away the
fun.

How can we fix https://issues.apache.org/jira/browse/IMPALA-5610, "Warn if
deprecated flags are set"?

First, set up your development environment. Then, double-check that the bug
works the way you think it does by starting your impala cluster with a
deprecated flag:

bin/start-impala-cluster.py
--impalad_args="--enable_partitioned_hash_join=false"

This succeeds, even though

$ git grep enable_partitioned_hash_join
be/src/exec/exec-node.cc:DEFINE_bool_hidden(enable_partitioned_hash_join,
true, "Deprecated - has no effect");

OK, so this is a deprecated flag - we shouldn't be able to start Impala
with it. How can we warn if it is not default? Take a look at
be/src/service/impalad-main.cc. There you will see a number of LOG(WARNING)
messages if FLAGS_ENABLE_RM, another deprecated flag is set. That seems as
good a place as any to start.

Impala's runtime flags are defined with gflags:
https://gflags.github.io/gflags/. Some good patterns to look for that
indicate deprecated flags are "deprecated" and "_hidden".

To get started easy, try fixing just one flag at first, then get your patch
through code review and committed into the master branch by an Impala
committer. Once you have that experience under your belt, the next patch
can tackle more flags.

If you find yourself repeating the same pattern for many flags, consider
how you might reduce the boilerplate associated with that by refactoring
the code to use functions, classes, or even macros (if necessary) to
prevent having to repeat yourself.

Good luck, and have fun!

Reply via email to