[hibernate-commits] [hibernate/hibernate-search] 8a08df: HSEARCH-2764 Allow null roots when simply getting ...

GitHub noreply at github.com
Wed Aug 9 08:09:54 EDT 2017


  Branch: refs/heads/master
  Home:   https://github.com/hibernate/hibernate-search
  Commit: 8a08df532c74171550264d2f1b016c7e4413051e
      https://github.com/hibernate/hibernate-search/commit/8a08df532c74171550264d2f1b016c7e4413051e
  Author: Yoann Rodière <yoann at hibernate.org>
  Date:   2017-08-03 (Thu, 03 Aug 2017)

  Changed paths:
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/gson/impl/RootJsonAccessor.java

  Log Message:
  -----------
  HSEARCH-2764 Allow null roots when simply getting a value from Json

We already return an Optional, so callers already have to deal with
missing values. Better return a missing value than throw an
AssertionFailure...

This will make error handling for bulk works easier, since we won't have
to care about null responses anymore (it may happen in unit tests when
mocks are incorrectly configured in particular).


  Commit: 92e368081c02e4ceca7dc0b050b3e8040188f79e
      https://github.com/hibernate/hibernate-search/commit/92e368081c02e4ceca7dc0b050b3e8040188f79e
  Author: Yoann Rodière <yoann at hibernate.org>
  Date:   2017-08-03 (Thu, 03 Aug 2017)

  Changed paths:
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/client/impl/DefaultElasticsearchClient.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/client/impl/ElasticsearchClient.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/dialect/impl/DefaultElasticsearchDialectFactory.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/logging/impl/Log.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/work/impl/BulkWork.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/work/impl/DefaultElasticsearchRequestSuccessAssessor.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/work/impl/ES2DeleteByQueryWork.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/work/impl/ElasticsearchRequestSuccessAssessor.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/work/impl/SimpleElasticsearchWork.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/work/impl/WaitForIndexStatusWork.java
    M elasticsearch/src/test/java/org/hibernate/search/elasticsearch/test/DefaultElasticsearchClientFactoryTest.java
    M elasticsearch/src/test/java/org/hibernate/search/elasticsearch/test/DefaultElasticsearchDialectFactoryTest.java

  Log Message:
  -----------
  HSEARCH-2764 Only include request/response in ElasticsearchWork wrapping exceptions

This will make it much easier to handle exceptions in CompletableFutures
in the next commits.

Granted, this makes the exception traces longer, but to be fair it only
*adds* to the traces, so users won't have to scroll more unless they
want to know more.


  Commit: ffa77a24b7f1bd8c259b68156438e23b6c8e5ef5
      https://github.com/hibernate/hibernate-search/commit/ffa77a24b7f1bd8c259b68156438e23b6c8e5ef5
  Author: Yoann Rodière <yoann at hibernate.org>
  Date:   2017-08-03 (Thu, 03 Aug 2017)

  Changed paths:
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/client/impl/DefaultElasticsearchClient.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/client/impl/DefaultElasticsearchClientFactory.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/client/impl/ElasticsearchClient.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/dialect/impl/DefaultElasticsearchDialectFactory.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/ElasticsearchWorkProcessor.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/work/impl/BulkWork.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/work/impl/ES2DeleteByQueryWork.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/work/impl/ES5DeleteByQueryWork.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/work/impl/ES5FlushWork.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/work/impl/ElasticsearchWork.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/work/impl/IndexWork.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/work/impl/SearchWork.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/work/impl/SimpleElasticsearchWork.java
    M elasticsearch/src/test/java/org/hibernate/search/elasticsearch/test/DefaultElasticsearchClientFactoryTest.java
    M elasticsearch/src/test/java/org/hibernate/search/elasticsearch/test/DefaultElasticsearchDialectFactoryTest.java
    M elasticsearch/src/test/java/org/hibernate/search/elasticsearch/test/ElasticsearchIndexWorkProcessorErrorHandlingTest.java
    A engine/src/main/java/org/hibernate/search/util/impl/Futures.java
    A engine/src/main/java/org/hibernate/search/util/impl/Throwables.java
    M integrationtest/elasticsearch/src/test/java/org/hibernate/search/elasticsearch/test/ElasticsearchIndexStatusCheckIT.java
    M integrationtest/elasticsearch/src/test/java/org/hibernate/search/elasticsearch/testutil/TestElasticsearchClient.java
    M integrationtest/performance/engine-elasticsearch/src/main/java/org/hibernate/search/engineperformance/elasticsearch/stub/BlackholeElasticsearchClient.java

  Log Message:
  -----------
  HSEARCH-2764 Use CompletableFuture in ElasticsearchWorks

This is the first step toward making asynchronous requests more
"reactive".


  Commit: 0aa11d92d06b18810b669431a79f0411701dd904
      https://github.com/hibernate/hibernate-search/commit/0aa11d92d06b18810b669431a79f0411701dd904
  Author: Yoann Rodière <yoann at hibernate.org>
  Date:   2017-08-03 (Thu, 03 Aug 2017)

  Changed paths:
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/ElasticsearchWorkProcessor.java
    A elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/SequenceAbortedException.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/SequentialWorkExecutionContext.java
    M engine/src/main/java/org/hibernate/search/util/impl/Futures.java

  Log Message:
  -----------
  HSEARCH-2764 Use CompletableFuture for orchestration in ElasticsearchWorkProcessor

But still execute works sequentially for now.


  Commit: 683fefe8fd36e0925984de72d922cabaa8433f5d
      https://github.com/hibernate/hibernate-search/commit/683fefe8fd36e0925984de72d922cabaa8433f5d
  Author: Yoann Rodière <yoann at hibernate.org>
  Date:   2017-08-03 (Thu, 03 Aug 2017)

  Changed paths:
    A elasticsearch/src/main/java/org/hibernate/search/elasticsearch/logging/impl/ElasticsearchJsonObjectFormatter.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/logging/impl/Log.java
    A elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/ContextualErrorHandler.java
    A elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/DefaultContextualErrorHandler.java
    A elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/DefaultElasticsearchWorkBulker.java
    A elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/DefaultElasticsearchWorkSequenceBuilder.java
    A elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/ElasticsearchWorkBulker.java
    A elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/ElasticsearchWorkExecutor.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/ElasticsearchWorkProcessor.java
    A elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/ElasticsearchWorkSequenceBuilder.java
    A elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/MutableElasticsearchWorkAggregator.java
    R elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/SequenceAbortedException.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/SequentialWorkExecutionContext.java
    R elasticsearch/src/main/java/org/hibernate/search/elasticsearch/work/impl/BulkRequestFailedException.java
    A elasticsearch/src/main/java/org/hibernate/search/elasticsearch/work/impl/BulkResult.java
    A elasticsearch/src/main/java/org/hibernate/search/elasticsearch/work/impl/BulkResultItemExtractor.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/work/impl/BulkWork.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/work/impl/BulkableElasticsearchWork.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/work/impl/DefaultElasticsearchRequestSuccessAssessor.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/work/impl/DeleteWork.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/work/impl/ES2DeleteByQueryWork.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/work/impl/ElasticsearchRequestSuccessAssessor.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/work/impl/ElasticsearchWork.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/work/impl/ElasticsearchWorkExecutionContext.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/work/impl/IndexWork.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/work/impl/SimpleBulkableElasticsearchWork.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/work/impl/SimpleElasticsearchWork.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/work/impl/WaitForIndexStatusWork.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/work/impl/builder/BulkWorkBuilder.java
    A elasticsearch/src/test/java/org/hibernate/search/elasticsearch/processor/impl/DefaultContextualErrorHandlerTest.java
    A elasticsearch/src/test/java/org/hibernate/search/elasticsearch/processor/impl/DefaultElasticsearchWorkBulkerTest.java
    A elasticsearch/src/test/java/org/hibernate/search/elasticsearch/processor/impl/DefaultElasticsearchWorkSequenceBuilderTest.java
    R elasticsearch/src/test/java/org/hibernate/search/elasticsearch/test/ElasticsearchIndexWorkProcessorErrorHandlingTest.java
    M engine/src/main/java/org/hibernate/search/exception/impl/ErrorContextBuilder.java
    M engine/src/main/java/org/hibernate/search/util/impl/Futures.java
    M engine/src/main/java/org/hibernate/search/util/impl/Throwables.java
    A testing/src/main/java/org/hibernate/search/test/util/FutureAssert.java

  Log Message:
  -----------
  HSEARCH-2764 Introduce ElasticsearchWorkBulker and ElasticsearchWorkSequenceBuilder

Those two classes encapsulate the logic of bulking and building a
sequence of works, making it easier to orchestrate works in many
different ways (see the following commits).

Also, compared the the previous way of executing works, this fixes the
following issues:

 1. In async mode, a failure will now only affect the changeset of the
    failing work, subsequent changesets will execute normally.
    And (that's the hard part) bulks can still span multiple changesets:
    each changeset will only be affected by failures from its own
    bulked works.
 2. The stack traces of failures in bulked works are now much more
    similar to failures in non-bulked works.
 3. That's just a side-effect, but bulked works can now return a result,
    though for now the result is ignored. This mainly means that
    if one day we need to inspect the result of bulked works
    (for statistics, in particular), it will be that much easier.
 4. We now have thorough unit tests for work bulking and sequencing.


  Commit: 36e5b65713635112e86b83ab219b7b4dc4c7a27b
      https://github.com/hibernate/hibernate-search/commit/36e5b65713635112e86b83ab219b7b4dc4c7a27b
  Author: Yoann Rodière <yoann at hibernate.org>
  Date:   2017-08-03 (Thu, 03 Aug 2017)

  Changed paths:
    A elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/BatchingSharedElasticsearchWorkOrchestrator.java
    A elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/ElasticsearchWorkOrchestrator.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/ElasticsearchWorkProcessor.java
    A elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/FlushableElasticsearchWorkOrchestrator.java
    A elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/SerialChangesetsElasticsearchWorkOrchestrator.java
    A elasticsearch/src/test/java/org/hibernate/search/elasticsearch/processor/impl/SerialChangesetsElasticsearchWorkOrchestratorTest.java
    M engine/src/main/java/org/hibernate/search/util/impl/Futures.java

  Log Message:
  -----------
  HSEARCH-2764 Introduce ElasticsearchWorkOrchestrator to better manage inter-work dependency when running asynchronously

This will allow more flexibility in work orchestration in the following
commits.


  Commit: 6714c133e3838a8b35930a9d90b211bb9d4a4657
      https://github.com/hibernate/hibernate-search/commit/6714c133e3838a8b35930a9d90b211bb9d4a4657
  Author: Yoann Rodière <yoann at hibernate.org>
  Date:   2017-08-03 (Thu, 03 Aug 2017)

  Changed paths:
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/BatchingSharedElasticsearchWorkOrchestrator.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/ElasticsearchWorkProcessor.java

  Log Message:
  -----------
  HSEARCH-2764 Avoid a very rare race condition in async work processing

If, between the end of the processing loop and the call to
processingScheduled.set( false ) at the end of processing, another
thread somehow managed to submit a changeset and call awaitCompletion(),
then this thread ended up not waiting for its changeset, but only for
the previous ones.

This commit fixes the issue by avoiding the use of multiple instances of
CountDownLatch, and instead relying on Phaser so that we can safely
change what waiting threads are waiting for (i.e. we can just say
"oh sorry, you were waiting for the previous runnable, but another one
needs to be ran before I let you go"). Also part of the solution is
systematically checking whether a new processing runnable must be
scheduled before arriving at the phaser.


  Commit: 0625df3caedafaa71fb665664d9955f56d19fda5
      https://github.com/hibernate/hibernate-search/commit/0625df3caedafaa71fb665664d9955f56d19fda5
  Author: Yoann Rodière <yoann at hibernate.org>
  Date:   2017-08-03 (Thu, 03 Aug 2017)

  Changed paths:
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/ElasticsearchWorkProcessor.java
    A elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/IsolatedSharedElasticsearchWorkOrchestrator.java

  Log Message:
  -----------
  HSEARCH-2764 Use an orchestrator for synchronous safe processing


  Commit: d5aa35fc12976e9e5f9e2016929b134463ea9780
      https://github.com/hibernate/hibernate-search/commit/d5aa35fc12976e9e5f9e2016929b134463ea9780
  Author: Yoann Rodière <yoann at hibernate.org>
  Date:   2017-08-03 (Thu, 03 Aug 2017)

  Changed paths:
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/impl/ElasticsearchIndexManager.java
    A elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/BarrierElasticsearchWorkOrchestrator.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/BatchingSharedElasticsearchWorkOrchestrator.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/ElasticsearchWorkProcessor.java
    A elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/ParallelChangesetsElasticsearchWorkOrchestrator.java
    A elasticsearch/src/test/java/org/hibernate/search/elasticsearch/processor/impl/ParallelChangesetsElasticsearchWorkOrchestratorTest.java

  Log Message:
  -----------
  HSEARCH-2764 Add a parallel orchestrator for streamed work

This could lead to better performance with large Elasticsearch
connection pools when works affect multiple indexes.


  Commit: 9d46d3f8b8f803dd8502f44681e56ddf2d95d97c
      https://github.com/hibernate/hibernate-search/commit/9d46d3f8b8f803dd8502f44681e56ddf2d95d97c
  Author: Yoann Rodière <yoann at hibernate.org>
  Date:   2017-08-03 (Thu, 03 Aug 2017)

  Changed paths:
    A elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/BufferingElasticsearchWorkExecutionContext.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/DefaultElasticsearchWorkSequenceBuilder.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/ElasticsearchWorkProcessor.java
    A elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/FlushableElasticsearchWorkExecutionContext.java
    A elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/ImmutableElasticsearchWorkExecutionContext.java
    R elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/ParallelWorkExecutionContext.java
    R elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/SequentialWorkExecutionContext.java
    M elasticsearch/src/test/java/org/hibernate/search/elasticsearch/processor/impl/DefaultElasticsearchWorkSequenceBuilderTest.java

  Log Message:
  -----------
  HSEARCH-2764 Clarify the purpose of each ElasticsearchWorkExecutionContext impl


  Commit: 5b37a84212ce6098783920f9162ea823c3f2f71b
      https://github.com/hibernate/hibernate-search/commit/5b37a84212ce6098783920f9162ea823c3f2f71b
  Author: Yoann Rodière <yoann at hibernate.org>
  Date:   2017-08-03 (Thu, 03 Aug 2017)

  Changed paths:
    R elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/BufferingElasticsearchWorkExecutionContext.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/ElasticsearchWorkProcessor.java
    A elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/IndexMonitorBufferingElasticsearchWorkExecutionContext.java
    A elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/RefreshingElasticsearchWorkExecutionContext.java

  Log Message:
  -----------
  HSEARCH-2764 Don't refresh indexes for streamed Elasticsearch works

Those works are executed out of order anyway, and the only way for
the client to be sure they've been executed is to perform a flush (which
is followed by a refresh), so there's no point trying to refresh for
every single work.


  Commit: ee9e8d7bcbb74216bde5b521e9d7275cc944bbe7
      https://github.com/hibernate/hibernate-search/commit/ee9e8d7bcbb74216bde5b521e9d7275cc944bbe7
  Author: Yoann Rodière <yoann at hibernate.org>
  Date:   2017-08-03 (Thu, 03 Aug 2017)

  Changed paths:
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/DefaultElasticsearchWorkBulker.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/ElasticsearchWorkProcessor.java
    M elasticsearch/src/test/java/org/hibernate/search/elasticsearch/processor/impl/DefaultElasticsearchWorkBulkerTest.java

  Log Message:
  -----------
  HSEARCH-2764 Set the minim bulk size to 1 for stream work orchestration

For stream works, we only submit single-work changesets, which means
the decision on whether to bulk the work or not will always happen
immediately after each work, when we only have one work to bulk.
Thus if we set the minimum to a value higher than 1, we would always
decide not to start a bulk (because there would always be only one
work to bulk), which would result in terrible performance.


  Commit: fd9b94472a11fea7f432c1a25820978c88041c12
      https://github.com/hibernate/hibernate-search/commit/fd9b94472a11fea7f432c1a25820978c88041c12
  Author: Yoann Rodière <yoann at hibernate.org>
  Date:   2017-08-03 (Thu, 03 Aug 2017)

  Changed paths:
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/BatchingSharedElasticsearchWorkOrchestrator.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/ElasticsearchWorkProcessor.java
    R elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/IsolatedSharedElasticsearchWorkOrchestrator.java

  Log Message:
  -----------
  HSEARCH-2764 Allow synchronous works from different threads to be bulked together

We still don't fix the issue of works being executed out of order,
because that's not our concern in this commit.
Ultimately we may want to have one shared, serial orchestrator per index
manager.


  Commit: 44699df02b898c79ac013debe488afa489a02851
      https://github.com/hibernate/hibernate-search/commit/44699df02b898c79ac013debe488afa489a02851
  Author: Yoann Rodière <yoann at hibernate.org>
  Date:   2017-08-03 (Thu, 03 Aug 2017)

  Changed paths:
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/impl/ElasticsearchIndexManager.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/BarrierElasticsearchWorkOrchestrator.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/ElasticsearchWorkProcessor.java

  Log Message:
  -----------
  HSEARCH-2764 Make Elasticsearch non-stream orchestrators index-specific

The downside is we may not be able to bulk as much as we used to, but
there are a few advantages too:

1. We're finally able to force executing synchronous works in order
(by using one serial orchestrator per index). Note that this may impact
performance negatively, but at least we'll avoid some errors.
2. We can finally disable the 'refresh' in bulk API calls when
'refreshAfterWrite' is disabled for the index. Previously we couldn't,
because this parameter can take a different value for each index
manager.


  Commit: 8ae9cf78b832132f32cb900beebafc907e457de6
      https://github.com/hibernate/hibernate-search/commit/8ae9cf78b832132f32cb900beebafc907e457de6
  Author: Yoann Rodière <yoann at hibernate.org>
  Date:   2017-08-03 (Thu, 03 Aug 2017)

  Changed paths:
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/BatchingSharedElasticsearchWorkOrchestrator.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/ElasticsearchWorkProcessor.java

  Log Message:
  -----------
  HSEARCH-2764 Limit the size of Elasticsearch work queues

If we don't, we run the risk of OutOfMemoryErrors when a huge stream
of works is pushed continuously to the index manager (for instance,
when mass indexing).


  Commit: a15d34af1c765e52d0a206b78df8de5d0bde3ef3
      https://github.com/hibernate/hibernate-search/commit/a15d34af1c765e52d0a206b78df8de5d0bde3ef3
  Author: Yoann Rodière <yoann at hibernate.org>
  Date:   2017-08-03 (Thu, 03 Aug 2017)

  Changed paths:
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/BatchingSharedElasticsearchWorkOrchestrator.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/ElasticsearchWorkProcessor.java

  Log Message:
  -----------
  HSEARCH-2764 Remove the delay in BatchingSharedElasticsearchWorkOrchestrator

There's no need for such a delay:

 * if works are submitted more slowly than they are processed, then
there's no need to try doing more bulking (especially if it means adding
an artificial delay)
 * if works are submitted faster than they are processed, then the queue
should progressively fill up, we'll start doing bulking, and we'll end
up ignoring the delay anyway.


  Commit: 1e8751abfa8b429edc83b6ed82df60a356d4d851
      https://github.com/hibernate/hibernate-search/commit/1e8751abfa8b429edc83b6ed82df60a356d4d851
  Author: Yoann Rodière <yoann at hibernate.org>
  Date:   2017-08-03 (Thu, 03 Aug 2017)

  Changed paths:
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/impl/ElasticsearchIndexManager.java
    M elasticsearch/src/main/java/org/hibernate/search/elasticsearch/processor/impl/ElasticsearchWorkProcessor.java

  Log Message:
  -----------
  HSEARCH-2764 Remove the now useless "sync" parameter when creating non-stream orchestrators


Compare: https://github.com/hibernate/hibernate-search/compare/3a317f283575...1e8751abfa8b


More information about the hibernate-commits mailing list