...
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`.