Use errors output field to determine _bulk API failure

Elastic search _bulk API's response HTTP status code 200 does not imply
that the request was successful. Instead, depend on 'errors' boolean
from response body [1]. Also add tests to illustrate this behaviour.

[1] https://www.elastic.co/guide/en/elasticsearch/reference/7.8/docs-bulk.html#bulk-api-response-body

Change-Id: I6b76398d64efc15803b9a1b30e4d88ae4b1bdb2a
10 files changed
tree: d32a09bc8e3ccd27a63d477575d0f7cce6d0060f
  1. src/
  2. BUILD
  3. external_plugin_deps.bzl
  4. Jenkinsfile
  5. LICENSE
  6. README.md
README.md

Index backend for Gerrit, based on ElasticSearch

Indexing backend libModule for Gerrit Code Review based on ElasticSearch.

This module was original part of Gerrit core and then extracted into a separate component from v3.5.0-rc3 as part of Change-Id: Ib7b5167ce.

How to build

This libModule is built like a Gerrit in-tree plugin, using Bazelisk. See the build instructions for more details.

Setup

  • Install index-elasticsearch module

Install the index-elasticsearch.jar into the $GERRIT_SITE/lib directory.

Add the index-elasticsearch module to $GERRIT_SITE/etc/gerrit.config as follows:

[gerrit]
  installIndexModule = com.google.gerrit.elasticsearch.ElasticIndexModule

When installing the module on Gerrit replicas, use following example:

[gerrit]
  installIndexModule = com.google.gerrit.elasticsearch.ReplicaElasticIndexModule

For further information and supported options, refer to config documentation.

Integration test

Gerrit acceptance tests allow the execution with an alternate implementation of the indexing backend using the GERRIT_INDEX_MODULE environment variable.

bazel test --test_env=GERRIT_INDEX_MODULE=com.google.gerrit.elasticsearch.ElasticIndexModule //...