Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Go to Run --> Edit Configurations.
  2. Select Defaults --> JUnit
  3. Add LD_LIBRARY_PATH with the value of $IMPALA_HOME/be/build/latest/service.
  4. Run all JUnit tests.

...

  1. Go to Run --> Attach to Local Processes.


    If you see an error "ptrace: Operation not permitted" then follow the instructions here to allow ptracing of non-child processes.
  2. Set a breakpoint.
  3. Execute a command in Impala shell.
  4. Start debugging.

...


Impala Shell Development using CLion

...

  1. Go to Run --> Attach to Local Processes.

  2. Set a breakpoint.
  3. Execute a command in Impala shell.
  4. Start debugging.

Use PyCharm to Run/Debug impala_shell.py

Need to set Environment Variables like what $IMPALA_HOME/bin/impala-python did:

        1. bash -x $IMPALA_HOME/bin/impala-python

        2. Copy PYTHONPATH and paste it to Environment Variables in Run/Debug Configurations

Image Added

      3. Environment Variables

Image Added    

     4. Run/Debug Configurations

Image Added

      5. Setting break point and debug 

Using clang-format in IntelliJ and CLion

You can use the ClangFormatIJ plugin to run clang-format in IntelliJ and CLion

WIP: Using IntelliJ and CLion on Mac

The above content requires that you can bootstrap your system successfully. You may encounter many problems in MacOS, i.e. there are no pre-built toolchain for Mac and the toolchain may not be compilable on Mac.

However, you can still use IntelliJ and CLion on Mac for coding as long as you have compiled Impala successfully in a Ubuntu environment. If you have a Ubuntu machine, go and compile Impala in it first (link). If you don't have a Ubuntu machine, you can compile Impala in Docker.

Steps

  • After you compile Impala successfully in your Ubuntu environment, package these folders in $IMPALA_HOME: be/generated-sources, fe/generated-sources, toolchain. E.g. make a tar file for them. (Transferring lots of small files between file systems will be time consuming)
  • Transfer those tar files back to your MacOS laptop and unpack them in your $IMPALA_HOME. Now the contents of $IMPALA_HOME in your MacOS laptop should be the same as your Ubuntu environment. (Maybe you can use rsync as well. But be aware of those compilation outputs and cmake cache files. Don't need to copy them)
  • Apply this patch in your MacOS env: dev_env_for_Mac.patch (Command: git apply $somewhere/dev_env_for_Mac.patch). The patch comments out the dependency of LLVM (TODO: resolve this in IMPALA-8229) and fix some stale versions and java paths.
  • Then source $IMPALA_HOME/bin/impala-config.sh and launch CLion/IntelliJ in your terminal. E.g. 

    Code Block
    cd $IMPALA_HOME
    source bin/impala-config.sh
    /Applications/CLion.app/Contents/MacOS/clion    # or /Applications/IntelliJ\ IDEA.app/Contents/MacOS/idea


  • There're some conflicts for CLion and IntelliJ to work in the same folder, e.g. they both overwrite others' iml files. It's recommended that making dedicated Impala dir for them.
  • If all go well, your CLion/IntelliJ will still have some errors but they can build index successfully. So you should be able to navigating in the code base, e.g. finding definitions, finding usages, showing call hierarchy, etc.

Tips for development on Mac

  • Let's say you have two directories, impala-be and impala-fe, for CLion and IntelliJ respectively. You can make C++/Python changes in CLion, and Java changes in IntelliJ.
  • After you make some changes, use git-diff to generate a patch, e.g. use "git diff > be-tmp.patch"  in impala-be dir. Then send the patch files to your Ubuntu environment and apply them by git-apply, e.g. use "git apply be-tmp.patch".
  • You can't use local debugging in Mac since there still some errors to be resolve in CLion/IntelliJ (IMPALA-8229). However, you can enjoy debugging by logs (smile). See more tips here for how to add useful logs while debugging.