summaryrefslogtreecommitdiff
path: root/core/src/test/java/org/elasticsearch/action/support
AgeCommit message (Collapse)Author
2017-07-02Cleanup network / transport related settings (#25489)Simon Willnauer
This commit makes the use of the global network settings explicit instead of implicit within NetworkService. It cleans up several places where we fall back to the global settings while we should have used tcp or http ones. In addition this change also removes unnecessary settings classes
2017-07-01Remove allocation id from replica replication response (#25488)Yannick Welsch
The replica replication response object has an extra allocationId field that contains the allocation id of the replica on which the request was executed. As we are sending the allocation id with the actual replica replication request, and check when executing the replica replication action that the allocation id of the replica shard is what we expect, there is no need to communicate back the allocation id as part of the response object.
2017-06-28Update global checkpoint when increasing primary term on replica (#25422)Yannick Welsch
When a replica shard increases its primary term under the mandate of a new primary, it should also update its global checkpoint; this gives us the guarantee that its global checkpoint is at least as high as the new primary and gives a starting point for the primary/replica resync. Relates to #25355, #10708
2017-06-18enable debug logging for testMasterFailoverDuringIndexingWithMappingChangesBoaz Leskes
2017-06-15move assertBusy to use CheckException (#25246)Boaz Leskes
We use assertBusy in many places where the underlying code throw exceptions. Currently we need to wrap those exceptions in a RuntimeException which is ugly.
2017-06-06Expand index expressions against indices only when managing aliases (#23997)olcbean
The index parameter in the update-aliases, put-alias, and delete-alias APIs no longer accepts alias names. Instead, it accepts only index names (or wildcards which will expand to matching indices). Closes #23960
2017-06-02Always Accumulate Transport Exceptions (#25017)Chris Earle
This removes the `accumulateExceptions()` method (and its usage) from `TransportNodesAction` and `TransportTasksAction`, forcing both transport actions to always accumulate exceptions. Without this change, some transport actions, like `TransportNodesStatsAction` would respond in very unexpected ways by returning no response due to some failure, but instead of returning an error the response would simply be empty: no response and no error. This results in a very trappy response structure where users can check for an error, then attempt to blindly use the response when no error is returned.
2017-05-30Handle primary failure handling replica responseJason Tedor
Today if the primary throws an exception while handling the replica response (e.g., because it is already closed while updating the local checkpoint for the replica), or because of a bug that causes an exception to be thrown in the replica operation listener, this exception is caught by the underlying transport handler plumbing and is translated into a response handler failure transport exception that is passed to the onFailure method of the replica operation listener. This causes the primary to turn around and fail the replica which is a disastrous and incorrect outcome as there's nothing wrong with the replica, it is the primary that is broken and deserves a paddlin'. This commit handles this situation by failing the primary. Relates #24926
2017-05-24[TEST] Add test for retrying replica operations with real networkLee Hinman
Related to #24745
2017-05-23Search: Fairer balancing when routing searches by session ID (#24671)markharwood
A user reported uneven balancing of load on nodes handling search requests from Kibana which supplies a session ID in a routing preference. Each shardId was selecting the same node for a given session ID because one data node had all primaries and the other data node held all replicas after cluster startup. This change counteracts the tendency to opt for the same node given the same user-supplied preference by incorporating shard ID in the hash of the preference key. This will help randomise node choices across shards. Closes #24642
2017-05-19Block older operations on primary term transitionJason Tedor
Today a replica learns of a new primary term via a cluster state update and there is not a clean transition between the older primary term and the newer primary term. This commit modifies this situation so that: - a replica shard learns of a new primary term via replication operations executed under the mandate of the new primary - when a replica shard learns of a new primary term, it blocks operations on older terms from reaching the engine, with a clear transition point between the operations on the older term and the operations on the newer term This work paves the way for a primary/replica sync on primary promotion. Future work will also ensure a clean transition point on a promoted primary, and prepare a replica shard for a sync with the promoted primary. Relates #24779
2017-05-17[TEST] Fix TransportReplicationActionTests.testRetryOnReplica for replica ↵Lee Hinman
request (#24745) * [TEST] Fix TransportReplicationActionTests.testRetryOnReplica for replica request We were improperly testing that it was a `ConcreteShardRequest` instead of a `ConcreteReplicaRequest`. This adds that change and also ensures that the checkpoint is retrievable from the request. * Fix line-length
2017-05-16Add a cluster block that allows to delete indices that are read-only (#24678)Simon Willnauer
Today when an index is `read-only` the index is also blocked from being deleted which sometimes is undesired since in-order to make changes to a cluster indices must be deleted to free up space. This is a likely scenario in a hosted environment when disk-space is limited to switch indices read-only but allow deletions to free up space.
2017-05-09Inline global checkpointsJason Tedor
Today we rely on background syncs to relay the global checkpoint under the mandate of the primary to its replicas. This means that the global checkpoint on a replica can lag far behind the primary. The commit moves to inlining global checkpoints with replication requests. When a replication operation is performed, the primary will send the latest global checkpoint inline with the replica requests. This keeps the replicas closer in-sync with the primary. However, consider a replication request that is not followed by another replication request for an indefinite period of time. When the replicas respond to the primary with their local checkpoint, the primary will advance its global checkpoint. During this indefinite period of time, the replicas will not be notified of the advanced global checkpoint. This necessitates a need for another sync. To achieve this, we perform a global checkpoint sync when a shard falls idle. Relates #24513
2017-05-03Add non-dispatching listenable action future (#24412)Tim Brooks
Currently the only implementation of `ListenableActionFuture` requires dispatching listener execution to a thread pool. This commit renames that variant to `DispatchingListenableActionFuture` and converts `AbstractListenableActionFuture` to be a variant that does not require dispatching. That class is now named `PlainListenableActionFuture`.
2017-05-03[TEST] Remove unnecessary usages of ListenableActionFuturejavanna
2017-05-03Java api: ActionRequestBuilder#execute to return a PlainActionFuture (#24415)Luca Cavanna
This change makes the request builder code-path same as `Client#execute`. The request builder used to return a `ListenableActionFuture` when calling execute, which allows to associate listeners with the returned future. For async execution though it is recommended to use the `execute` method that accepts an `ActionListener`, like users would do when using `Client#execute`. Relates to #24412 Relates to #9201
2017-04-26Cross Cluster Search: propagate original indices per cluster (#24328)Luca Cavanna
In case of a Cross Cluster Search, the coordinating node should split the original indices per cluster, and send over to each cluster only its own set of original indices, rather than the set taken from the original search request which contains all the indices. In fact, each remote cluster should not be aware of the indices belonging to other remote clusters.
2017-04-11Remove shadow replicasLee Hinman
Resolves #22024
2017-04-11Add cross-cluster search remote cluster info API (#23969)Simon Willnauer
This commit adds an API to discover information like seed nodes, http addresses and connection status of a configured remote cluster. Closes #23925
2017-04-06Preserve response headers when creating an index (#23950)Jay Modi
This commit preserves the response headers when creating an index and updating settings for an index. Closes #23947
2017-04-05[TEST] make sure that fromXContent doesn't rely on keys ordering (#23901)Luca Cavanna
We shuffle the keys before we parse our responses for the high level client so that we make sure we never rely on keys ordering.
2017-04-04Rename random ASCII helper methodsJason Tedor
This commit renames the random ASCII helper methods in ESTestCase. This is because this method ultimately uses the random ASCII methods from randomized runner, but these methods actually only produce random strings generated from [a-zA-Z]. Relates #23886
2017-03-17Clear the interrupt flag before joiningJason Tedor
This commit changes the method for checking the interrupt status of a thread that is intentionally interrupted during AdapterActionFutureTests#testInteruption. Namely, we want to check and clear the interrupt status before joining on the interrupting thread. If we do not clear the status, when we lose a race where the interrupting thread is not yet finished, an interrupted exception will be thrown when we try to join on it. Clearing the interrupted status on the main thread addresses this issue.
2017-03-17Adapter action future should restore interruptsJason Tedor
When a thread blocking on an adapter action future is interrupted, we throw an illegal state exception. This is documented, but it is rude to not restore the interrupt flag. This commit restores the interrupt flag in this situation, and adds a test. Relates #23618
2017-02-20[Tests] Cleans up DocWriteResponse parsing tests (#23233)Tanguy Leroux
This commit cleans up some parsing tests added from the High Level Rest Client: IndexResponseTests, DeleteResponseTests, UpdateResponseTests, BulkItemResponseTests. These tests are now more uniform with the others test-from-to-XContent tests we have, they now shuffle the XContent fields before parsing, the asserting method for parsed objects does not used a Map<String, Object> anymore, and buggy equals/hasCode methods in ShardInfo and ShardInfo.Failure have been removed.
2017-02-13Expose WriteRequest.RefreshPolicy string representation (#23106)Tanguy Leroux
This commit changes the RefreshPolicy enum so that string representation are exposed. This will help the high level rest client to simply use refreshPolicy.getValue() to get the corresponding parameter value of a given refresh policy.
2017-02-09Relax WaitActiveShardCountIT check of exception messagesBoaz Leskes
So ti wouldn't depend on BulkShardRequest.toString()
2017-02-09fix failing tests for BulkShardRequest.tostringAreek Zillur
2017-02-03Change certain replica failures not to fail the replica shardLee Hinman
This changes the way that replica failures are handled such that not all failures will cause the replica shard to be failed or marked as stale. In some cases such as refresh operations, or global checkpoint syncs, it is "okay" for the operation to fail without the shard being failed (because no data is out of sync). In these cases, instead of failing the shard we should simply fail the operation, and, in the event it is a user-facing operation, return a 5xx response code including the shard-specific failures. This was accomplished by having two forms of the `Replicas` proxy, one that is for non-write operations that does not fail the shard, and one that is for write operations that will fail the shard when an operation fails. Relates to #10708
2017-02-03Upgrade checkstyle to version 7.5Jason Tedor
This commit upgrades the checkstyle configuration from version 5.9 to version 7.5, the latest version as of today. The main enhancement obtained via this upgrade is better detection of redundant modifiers. Relates #22960
2017-02-02Optionally require a valid content type for all rest requests with content ↵Jay Modi
(#22691) This change adds a strict mode for xcontent parsing on the rest layer. The strict mode will be off by default for 5.x and in a separate commit will be enabled by default for 6.0. The strict mode, which can be enabled by setting `http.content_type.required: true` in 5.x, will require that all incoming rest requests have a valid and supported content type header before the request is dispatched. In the non-strict mode, the Content-Type header will be inspected and if it is not present or not valid, we will continue with auto detection of content like we have done previously. The content type header is parsed to the matching XContentType value with the only exception being for plain text requests. This value is then passed on with the content bytes so that we can reduce the number of places where we need to auto-detect the content type. As part of this, many transport requests and builders were updated to provide methods that accepted the XContentType along with the bytes and the methods that would rely on auto-detection have been deprecated. In the non-strict mode, deprecation warnings are issued whenever a request with body doesn't provide the Content-Type header. See #19388
2017-01-24Stop returning "es." internal exception headers as http response headers ↵Luca Cavanna
(#22703) move "es." internal headers to separate metadata set in ElasticsearchException and stop returning them as response headers Closes #17593 * [TEST] remove ESExceptionTests, move its methods to ElasticsearchExceptionTests or ExceptionSerializationTests
2017-01-24Include human readable responses in response parsing tests (#22717)Christoph Büscher
As a follow up to #22649, this changes the resent tests for parsing parts of search responses to randomly set the humanReadable() flag of the XContentBuilder that is used to render the responses. This should help to test that we can parse back thoses classes if the user specifies `?human=true` in the request url.
2017-01-20Index creation and setting update may not return deprecation logging (#22702)Boaz Leskes
Those services validate their setting before submitting an AckedClusterStateUpdateTask to the cluster state service. An acked cluster state may be completed by a networking thread when the last acks as received. As such it needs special care to make sure that thread context headers are handled correctly.
2017-01-19Make boolean conversion strict (#22200)Daniel Mitterdorfer
This PR removes all leniency in the conversion of Strings to booleans: "true" is converted to the boolean value `true`, "false" is converted to the boolean value `false`. Everything else raises an error.
2017-01-18Better error when can't auto create index (#22488)Nik Everett
Changes the error message when `action.auto_create_index` or `index.mapper.dynamic` forbids automatic creation of an index from `no such index` to one of: * `no such index and [action.auto_create_index] is [false]` * `no such index and [index.mapper.dynamic] is [false]` * `no such index and [action.auto_create_index] contains [-<pattern>] which forbids automatic creation of the index` * `no such index and [action.auto_create_index] ([all patterns]) doesn't match` This should make it more clear *why* there is `no such index`. Closes #22435
2017-01-17Fix compilation in eclipseNik Everett
Eclipse needs a bit of extra special help with type parameters in `TransportReplicationActionTests` now.
2017-01-16Replace EngineClosedException with AlreadyClosedExcpetion (#22631)Boaz Leskes
`EngineClosedException` is a ES level exception that is used to indicate that the engine is closed when operation starts. It doesn't really add much value and we can use `AlreadyClosedException` from Lucene (which may already bubble if things go wrong during operations). Having two exception can just add confusion and lead to bugs, like wrong handling of `EngineClosedException` when dealing with document level failures. The latter was exposed by `IndexWithShadowReplicasIT`. This PR also removes the AwaitFix from the `IndexWithShadowReplicasIT` tests (which was what cause this to be discovered). While debugging the source of the issue I found some mismatches in document uid management in the tests. The term that was passed to the engine didn't correspond to the uid in the parsed doc - those are fixed as well.
2017-01-13Merge remote-tracking branch 'zareek/enhancement/use_shard_bulk_for_single_ops'Lee Hinman
2017-01-13Remove setLocalNode from ClusterService and TransportService (#22608)Simon Willnauer
ClusterService and TransportService expect the local discovery node to be set before they are started but this requires manual interaction and is error prone since to work absolutely correct they should share the same instance (same ephemeral ID). TransportService also has 2 modes of operation, mainly realted to transport client vs. internal to a node. This change removes the mode where we don't maintain a local node and uses a dummy local node in the transport client since we don't bind to any port in such a case. Local discovery node instances are now managed by the node itself and only suppliers and factories that allow creation only once are passed to TransportService and ClusterService.
2017-01-11Merge branch 'master' into enhancement/use_shard_bulk_for_single_opsLee Hinman
2017-01-10Add fromxcontent methods to index response (#22229)Tanguy Leroux
This commit adds the parsing fromXContent() methods to the IndexResponse class. The method is based on a ObjectParser because it is easier to use when parsing parent abstract classes like DocWriteResponse. It also changes the ReplicationResponse.ShardInfo so that it now implements ToXContentObject. This way, the ShardInfo.fromXContent() method can be used by the IndexResponse's ObjectParser.
2017-01-09Merge branch 'master' into enhancement/use_shard_bulk_for_single_opsLee Hinman
2017-01-06Close and flush refresh listeners on shard closeNik Everett
Right now closing a shard looks like it strands refresh listeners, causing tests like `delete/50_refresh/refresh=wait_for waits until changes are visible in search` to fail. Here is a build that fails: https://elasticsearch-ci.elastic.co/job/elastic+elasticsearch+multi_cluster_search+multijob-darwin-compatibility/4/console This attempts to fix the problem by implements `Closeable` on `RefreshListeners` and rejecting listeners when closed. More importantly the act of closing the instance flushes all pending listeners so we shouldn't have any stranded listeners on close. Because it was needed for testing, this also adds the number of pending listeners to the `CommonStats` object and all API to which that flows: `_cat/nodes`, `_cat/indices`, `_cat/shards`, and `_nodes/stats`.
2017-01-06introduce ToXContentObject interfacejavanna
`ToXContentObject` extends `ToXContent` without adding new methods to it, while allowing to mark classes that output complete xcontent objects to distinguish them from classes that require starting and ending an anonymous object externally. Ideally ToXContent would be renamed to ToXContentFragment, but that would be a huge change in our codebase, hence we simply document the fact that toXContent outputs fragments with no guarantees that the output is valid per se without an external ancestor. Relates to #16347
2016-12-26Fix LineLength issues.Adrien Grand
2016-12-26Fix mutate function to always actually modify the failure object.Adrien Grand
2016-12-21Merge branch 'master' into enhancement/use_shard_bulk_for_single_opsAreek Zillur
2016-12-20Introduce XContentParser#namedObject (#22003)Nik Everett
Introduces `XContentParser#namedObject which works a little like `StreamInput#readNamedWriteable`: on startup components register parsers under names and a superclass. At runtime we look up the parser and call it to parse the object. Right now the parsers take a context object they use to help with the parsing but I hope to be able to eliminate the need for this context as most what it is used for at this point is to move around parser registries which should be replaced by this method eventually. I make no effort to do so in this PR because it is big enough already. This is meant to the a start down a road that allows us to remove classes like `QueryParseContext`, `AggregatorParsers`, `IndicesQueriesRegistry`, and `ParseFieldRegistry`. The goal here is to reduce the amount of plumbing required to allow parsing pluggable things. With this you don't have to pass registries all over the place. Instead you must pass a super registry to fewer places and use it to wrap the reader. This is the same tradeoff that we use for NamedWriteable and it allows much, much simpler binary serialization. We think we want that same thing for xcontent serialization. The only parsing actually converted to this method is parsing `ScoreFunctions` inside of `FunctionScoreQuery`. I chose this because it is relatively self contained.