
To execute a query we do: 1. get a batch of results from the index (the batch size is the user-provided limit + 1, +1 so that we can populate the _more_changes field on the last result) 2. post-filter these results, e.g. filter out results that are not visible to the calling user 3a. If we have enough matching results, return them. 3b. if we have lesser matching results than the limit, get the next batch of results from the index and continue with 2. The new test verifies that the results that are returned to the user are correct if they were computed from the results of multiple paged index queries. Issue 10936 describes a problem where duplicate results are returned if the results are computed from multiple paged index queries. The observed behaviour is that in this case the start index for getting the next batch of results in 3b. is off by 1 for each further batch. This means the second batch contains the last result of the first batch, the third batch contains the last 2 results of the second batch, the fourth batch contains the last 3 results of the third batch etc. Since the test cannot reproduce this issue it means this is working fine with the Lucene index backend, and likely the index backend implementation that is used by Google interprets the passed in start index wrongly. Issue 10936 is about a project query, but the paginating code is generic and is used for all kind of queries, hence we can test this also by a change query. Bug: Issue 10936 Signed-off-by: Edwin Kempin <ekempin@google.com> Change-Id: I61d4813ff5fbca657754df9173a784e1d98bf92f
Gerrit Code Review
Gerrit is a code review and project management tool for Git based projects.
Objective
Gerrit makes reviews easier by showing changes in a side-by-side display, and allowing inline comments to be added by any reviewer.
Gerrit simplifies Git based project maintainership by permitting any authorized user to submit changes to the master Git repository, rather than requiring all approved changes to be merged in by hand by the project maintainer.
Documentation
For information about how to install and use Gerrit, refer to the documentation.
Source
Our canonical Git repository is located on googlesource.com. There is a mirror of the repository on Github.
Reporting bugs
Please report bugs on the issue tracker.
Contribute
Gerrit is the work of hundreds of contributors. We appreciate your help!
Please read the contribution guidelines.
Note that we do not accept Pull Requests via the Github mirror.
Getting in contact
The Developer Mailing list is repo-discuss on Google Groups.
License
Gerrit is provided under the Apache License 2.0.
Build
Install Bazel and run the following:
git clone --recurse-submodules https://gerrit.googlesource.com/gerrit
cd gerrit && bazel build release
Install binary packages (Deb/Rpm)
The instruction how to configure GerritForge/BinTray repositories is here
On Debian/Ubuntu run:
apt-get update & apt-get install gerrit=<version>-<release>
NOTE: release is a counter that starts with 1 and indicates the number of packages that have been released with the same version of the software.
On CentOS/RedHat run:
yum clean all && yum install gerrit-<version>[-<release>]
On Fedora run:
dnf clean all && dnf install gerrit-<version>[-<release>]
Use pre-built Gerrit images on Docker
Docker images of Gerrit are available on DockerHub
To run a CentOS 7 based Gerrit image:
docker run -p 8080:8080 gerritforge/gerrit-centos7[:version]
To run a Ubuntu 15.04 based Gerrit image:
docker run -p 8080:8080 gerritforge/gerrit-ubuntu15.04[:version]
NOTE: release is optional. Last released package of the version is installed if the release number is omitted.