Versions Compared

Key

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

...

Pegasus runs a Github Actions workflow/TravisCI for each of the submitted pull-request. The CI process procedure checks:

  • If your PR title matches conventional commit
  • If your code is well-formatted
  • If your changes can pass all the tests. You can run `./run.sh test` on your local environment.

For more details about how we run Github Actions, please refer to this doc: Github Actions .

In addition to testing-per-PR, we also run daily workflows at https://github.com/pegasus-kv/pegasus-docker that check:

  • If rdsn/pegasus can be built upon various platforms and compilers.
  • If all code is sanitized (address/leak/thread/undefined).

Heap Profiling

By default, Pegasus enables gperftools and utilizes tcmalloc for memory allocation. To analyzing the memory/cpu usage of Pegasus server, you can run pprof against the target server. The Pegasus server will retrieve profiling data via gperftools library and respond via HTTP. 

pprof --svg http://127.0.0.1:34801/pprof/heap > heap.svg

Thrift

Pegasus uses thrift as the serialization tool for RPC data. To modify the RPC structs in Pegasus, or to add a new RPC type, you need to update the corresponding ".thrift" protocol file, and run:

./rdsn/compile_thrift.py # if the thrift is in rdsn

./src/idl/recompile_thrift.sh # if the thrift is in pegasus

We directly manage thrift as one of our third-parties, that is, it requires no separate installation. After running `./run.sh build` it will be automatically installed under `./rdsn/thirdparty/output/bin`.