This repository contains the default track specifications for the Elasticsearch benchmarking tool Rally.
Tracks are used to describe benchmarks in Rally. For each track, the README.md file documents the data used, explains its parameters and provides an example document.
Note
You can also create your own track to ensure your benchmarks will be as realistic as possible.
Refer to the official Rally docs for more details.
If you want to contribute a track, please ensure that it works against the main version of Elasticsearch (i.e. submit PRs against the master branch). We can then check whether it's feasible to backport the track to earlier Elasticsearch versions.
Note
See all details in the contributor guidelines.
Backporting ensures that tracks do not work only for the latest main version of Elasticsearch but also for older versions, so it is important. As part of contributing to this repository, a reminder will periodically notify you that backport is pending.
In order to backport your PR, at least one vX.Y label has to be added.
- Please supply all the labels that correspond to both current and past elasticsearch versions you expect this PR to work with, but choose only from all the available ones.
- If the PR being merged is using functionality from future Elasticsearch versions, please wait for the creation of new Elasticsearch
vX.Yversion branch. In such case, it would be useful if you kept the 'backport pending' label attached to the PR, so the backport reminder can periodically notify you.
When adding a vX.Y label, the creation of a new PR is triggered unless there are merge conflicts. Its status is reported through a comment and in case it is successfully created, you get a link to the PR opened against the target version branch. This new PR has a backport label and expects a review. When approved, it will be automatically merged.
Merge conflicts need to be resolved manually. There are two ways to manually create a backport PR
- Create a rally-tracks fork, and clone it locally.
- Pull and checkout to the intended version branch.
- Create a new local branch from this version branch.
- Cherry-pick the commit from the PR that will be backported.
- Resolve merge conflicts, commit locally and push to fork.
- Open a PR against the target branch, add
backportlabel manually. - Request a review and merge.
- Repeat for other version branches.
- Go to the Backport tool documentation and follow the guidelines to install it in your local
rally-tracksdirectory. Note that you have to add your personal access secret token locally in~/.backport/config.jsonwith the specified repository access. At the end of this step, you should be able to executebackportcommand inside rally-tracks repo. - cd in your local
rally-tracksrepository and executebackport --pr <merged_pr_number>. This will open an interactive dialog where you are required to selected branches to backport to. You can only select the version branches that have merge conflicts. After selecting the branches, backport tool will mention some directory in a messagePlease fix the conflicts in /home/<user>/.backport/repositories/elastic/rally-tracksand you will have to go and resolve those conflicts manually for all of the selected branches. If it is not easy to tackle multiple branches in a single sweep, repeat this procedure for each target version branch separately. - After resolving the merge conflicts you can execute
backport --pr <merged_pr_number>which this time it will be successful. PRs will be opened against the target version branches and they will be ready for approval and merge.
- CI is essential to this procedure. Whenever you commit something in a backport PR, check the test results.
- In case of conflicts, git blame is a wonderful tool to understand what changes need to be included in a version branch before backporting your PR. You can always check the history of the files you touch between the target backport branch and master version branch.
- Sometimes it is necessary to remove individual operations from a track that are not supported by earlier versions. This graceful fallback is a compromise to allow to run a subset of the track on older versions of Elasticsearch too.
For wrapping up ensure the following:
- Your merged PR has all the correct version labels.
- Every related backport PR has the
backportlabel. - Every related backport PR is merged to the correct version branches.
Finally, remove the backport pending label from your PR.
There is no single license for this repository. Licenses are chosen per track. They are typically licensed under the same terms as the source data. See the README files of each track for more details.