* Refactoring GatedAutoCloseable to AutoCloseableRefCounted
This is a part of the process of merging our feature branch - feature/segment-replication - back into main by re-PRing our changes from the feature branch.
GatedAutoCloseable currently wraps a subclass of RefCounted. Segment replication adds another subclass, but this also wraps RefCounted. Both subclasses have the same shutdown hook - decRef. This change makes the superclass less generic to increase code convergence.
The breakdown of the plan to merge segment-replication to main is detailed in #2355
Segment replication design proposal - #2229
Signed-off-by: Kartik Ganesh <gkart@amazon.com>
* Minor refactoring in RecoveryState
This change makes two minor updates to RecoveryState -
1. The readRecoveryState API is removed because it can be replaced by an invocation of the constructor
2. The class members of the Timer inner class are changed to private, and accesses are only through the public APIs
Signed-off-by: Kartik Ganesh <gkart@amazon.com>
* Update RecoveryTargetTests to test Timer subclasses deterministically
This change removes the use of RandomBoolean in testing the Timer classes and creates a dedicated unit test for each. The common test logic is shared via a private method.
Signed-off-by: Kartik Ganesh <gkart@amazon.com>
* Move the RecoveryState.Timer class to a top-level class
This will eventually be reused across both replication use-cases - peer recovery and segment replication.
Signed-off-by: Kartik Ganesh <gkart@amazon.com>
* Further update of timer tests in RecoveryTargetTests
Removes a non-deterministic code path around stopping the timer, and avoids assertThat (deprecated)
Signed-off-by: Kartik Ganesh <gkart@amazon.com>
* Rename to ReplicationTimer
Signed-off-by: Kartik Ganesh <gkart@amazon.com>
* Remove RecoveryTargetTests assert on a running timer
Trying to serialize and deserialize a running Timer instance, and then checking for equality leads to flaky test failures when the ser/deser takes time.
Signed-off-by: Kartik Ganesh <gkart@amazon.com>
AllFieldMapper was deprecated in legacy 6x. The remaining references are
removed, along with the field mapper and corresponding tests.
Signed-off-by: Nicholas Walter Knize <nknize@apache.org>
This reverts commit 6a2a33d187.
During the process of deprecating REST API request parameter master_timeout and adding alternative parameter cluster_manager_timeout, I made High-Level-Rest-Client tests allow deprecation warning temporarily, by changing the argument of `setStrictDeprecationMode()` to false when building `RestClient` for tests, in the above commit / PR https://github.com/opensearch-project/OpenSearch/pull/2702,
This PR sets the High-Level-Rest-Client tests back to treating warning header as a failure.
Signed-off-by: Tianli Feng <ftianli@amazon.com>
The REST API request parameter "master_timeout" will be deprecated in server version 3.0, and removed in 4.0. The alternative parameter "cluster_manager_timeout" is added in server 2.0 .
With the change in this commit, High-Level-Rest-Client will not be compatible with OpenSearch server 1.x (and below).
- Use parameter `cluster_manager_timeout` instead of `master_timeout` in High-Level-Rest-Client `RequestConverters` class for building REST requests
- Modify corresponding unit tests
- Change lots of "master timeout" in internal method and class names.
Signed-off-by: Tianli Feng <ftianli@amazon.com>
This change introduces a github workflow so that we can build and push snapshots of lucene.
The RepositoriesSetupPlugin is also updated with a url from where these snapshots can be retrieved.
Signed-off-by: Marc Handalian <handalm@amazon.com>
* Adding @reta to OpenSearch maintainers.
Signed-off-by: dblock <dblock@amazon.com>
* Update Andrew Ross github id
Signed-off-by: Nicholas Walter Knize <nknize@apache.org>
Co-authored-by: Nick Knize <nknize@apache.org>
* Adding a null pointer check to fix index_prefix query
Signed-off-by: Vacha Shah <vachshah@amazon.com>
* Adding test
Signed-off-by: Vacha Shah <vachshah@amazon.com>
- Deprecate the request parameter `master_timeout` that used in Ingest APIs and Script APIs which have got the parameter.
- Add alternative new request parameter `cluster_manager_timeout`.
- Add unit tests.
Signed-off-by: Tianli Feng <ftianli@amazon.com>
This change refactors an earlier change to impose a reg-ex size limit on the include/exclude string. Instead of accepting an IndexSettings instance, the class now accepts a integer limit value. This is necessary because the IncludeExclude class is used outside the core codebase, whose use-cases may be unaware of indices and their settings. To ensure that a limit is always imposed, a default limit is defined in the class.
(cherry picked from commit ba1966853e728b153e42be59ba449420e79b09ee)
Signed-off-by: Kartik Ganesh <gkart@amazon.com>
Co-authored-by: Kartik Ganesh <gkart@amazon.com>
* Deprecate the request parameter `master_timeout` that used in Snapshot APIs which have got the parameter.
* Add alternative new request parameter `cluster_manager_timeout`.
* Add unit tests.
Signed-off-by: Tianli Feng <ftianli@amazon.com>
- Deprecate the request parameter `master_timeout` that used in Index Template APIs which have got the parameter.
(The other Index APIs are addressed in PR https://github.com/opensearch-project/OpenSearch/pull/2660)
- Add alternative new request parameter `cluster_manager_timeout`.
- Add unit tests.
Signed-off-by: Tianli Feng <ftianli@amazon.com>
* Upgrade to Apache Commons Logging 1.2
Signed-off-by: Yoann Rodière <yoann@hibernate.org>
* Clarify that Apache HTTP/commons-* dependencies are not just for tests
Signed-off-by: Yoann Rodière <yoann@hibernate.org>
* Updates to the large string reg-ex check
Removed the null-case for IndexSettings since this only occurs in tests. The tests now use a dummy Index Setting.
This change also fixes a bug with the base case handling of max regex length in the check.
Signed-off-by: Kartik Ganesh <gkart@amazon.com>
* Bugfix to guard against stack overflow errors caused by very large reg-ex input
This change fixes a code path that did not properly impose the index-level max_regex_length limit. Therefore, it was possibly to provide ar arbitrarily large string as the include/exclude reg-ex value under search aggregations. This exposed the underlying node to crashes from a StackOverflowError, due to how the Lucene RegExp class processes strings using stack frames.
Signed-off-by: Kartik Ganesh <gkart@amazon.com>
* Adding integration tests for large string RegEx
Signed-off-by: Kartik Ganesh <gkart@amazon.com>
* Spotless
Signed-off-by: Kartik Ganesh <gkart@amazon.com>