Commit Graph

4834 Commits

Author SHA1 Message Date
javanna 00fc54c2ae Internal: made original indices optional for broadcast delete and delete by query shard requests
Shard requests like broadcast delete and delete by query, that needs to be executed on primary and all replicas, get read and written out to the transport on the same node. That means that if we add some field version checks are not enough to maintain bw comp since a newer node that holds the primary might receive the request from an older node, that didn't provide the field. Yet, when writing the request out again to a newer node that holds the replica, we do try and serialize the field although it's missing. The newer fields just needs to be set to optional in these cases, in addition to the version checks.

Re-enabled testDeleteByQuery and testDeleteRoutingRequired bw comp tests since this was the cause of their failures.

Closes #7406
2014-08-23 17:01:33 +02:00
Simon Willnauer 5f188d29fa [TEST] use CFS consistently to not trigger single segment merge without force flag 2014-08-23 16:41:46 +02:00
Boaz Leskes 06fb9ff761 [Tests] verifyThreadNames should account for new threads of shared cluster
The verifyThreadNames starts a node and checks that all new threads on the JVM are properly named. The current test uses the name of the new node which sometimes fails because our shared cluster spawns a new thread which is properly named but for not for the new name.

The commits relaxes the requirement of the test and on verify the threads are properly named (but not necessarily of the new node)
2014-08-23 14:45:08 +02:00
Simon Willnauer 45f062792c [TEST] use a default host name if localAddress is not available
Closes #7409
2014-08-23 13:47:11 +02:00
Simon Willnauer 805f042293 Add toString() method to Segment.java for debugging purposes 2014-08-23 11:17:14 +02:00
Simon Willnauer fdf1998f39 [ENGINE] Force optimize was not passed to shard request
The force flag to trigger optimiz calls of a single segment for upgrading
etc. was never passed on to the shard request.

Closes #7404
2014-08-22 15:39:04 +02:00
Alex Ksikes e78694ae82 More Like This Query: defaults to all possible fields for items
Items with no specified field now defaults to all the possible fields from the
document source. Previously, we had required 'fields' to be specified either
as a top level parameter or for each item. The default behavior is now similar
to the MLT API.

Closes #7382
2014-08-22 15:07:22 +02:00
Adrien Grand a1a9aadab5 [DOCS] Document the contracts of the RootMapper API.
Close #7400
2014-08-22 14:44:28 +02:00
javanna f4168a6382 Internal: move index templates api back to indices category and make put template and create index implement IndicesRequest
Closes #7378
2014-08-22 10:18:36 +02:00
javanna 9a14b3ce6f [TEST] copied delete bw comp tests to usual intergration tests
Added AwaitsFix to testDeletebyQuery and testDeleteRoutingRequired while checking if they fail as usual integration tests.
2014-08-22 10:12:17 +02:00
Martijn van Groningen 0196377190 [TEST] Muted tests 2014-08-22 09:45:56 +02:00
Simon Willnauer 3b51342515 Use empty BytesRef if we read from <= 1.4.0 2014-08-21 22:13:06 +02:00
Shay Banon ffcc78ca04 Add back string op type to IndexRequest
This was removed by accident I think, and it breaks backward comp. on the Java API in minor 1.3 version
closes #7387
2014-08-21 12:04:09 -07:00
Igor Motov 80887e8113 [TEST] Trigger random flushes while snapshot is created 2014-08-21 12:48:38 -04:00
Simon Willnauer 058a02b7aa [STORE] Improve recovery / snapshot restoring file identity handling
This commit changes the way how files are selected for retransmission
on recovery / restore. Today this happens on a per-file basis where the
rather weak checksum and the file length in bytes is compared to check if
a file is identical. This is prone to fail in the case of a checksum collision
which can happen under certain circumstances.
The changes in this commit move the identity comparsion to a per-commit / per-segment
level where files are only treated as identical iff all the other files in the
commit / segment are the same. This "all or nothing" strategy is reducing the chance for
a collision dramatically since we also use a strong hash to identify commits / segments
based on the content of the ".si" / "segments.N" file.

Closes #7351
2014-08-21 18:00:41 +02:00
Simon Willnauer 4c1bc3ae4f [STORE] Remove unnecessary deduplication 2014-08-21 17:50:04 +02:00
Simon Willnauer 4d3f761d3d [STORE] Ignore segments.gen on metadata snapshots
The segments.gen file is optional and might even change while we
read it. It's safer to just ignore that file in the snapshot instead.
2014-08-21 17:50:04 +02:00
Shay Banon 4af1a29057 [TEST] filter out keep alive timer thread name
Keep-Alive-Timer is an internal Java thread that might be started, make sure to filter it out
2014-08-21 08:40:43 -07:00
Shay Banon 39a64cf4dd [TEST] only reset clients on nightly tests
resetting the clients on each test (in after test) makes the tests running, especially in network mode, much slower, since transport client needs to be created each time when randmized to be used. Also, on OSX, the excessive connections causes bind exceptions eventually which makes running the network tests much harder on it.
closes #7329
2014-08-21 07:34:26 -07:00
Britta Weber ab9e33e38d _ttl: Report conflict when trying to disable _ttl
_ttl could never be disabled once it was enabled.
But when trying to, no conflict was reported.

relates to #777 and #7293

closes #7316
2014-08-21 16:16:08 +02:00
Simon Willnauer 99ef3408fb [STORE] Allow to get metadata from arbitrary commit points
Today we always use the latest commit point to return the metadata from
the store. This might cause problems for snapshot and restore since in
contrast to recovery it won't prevent concurrent flushes (lucene commits).
This can lead to all kinds of interesting effects if we are snapshotting
while flushing. This change uses the IndexCommit to open the metadata snapshot
from the store which is consistent with what we snapshot.

Closes #7376
2014-08-21 16:09:12 +02:00
Colin Goodheart-Smithe 8550b9e84b Aggregations: Fixes pre and post offset serialisation for histogram aggs
Changes the serialisation of pre and post offset to use Long instead of VLong so that negative values are supported.  This actually only showed up in the case where minDocCount=0 as the rounding is only serialised in this case.

Closes #7312
2014-08-21 14:19:53 +01:00
javanna f956920acc Internal: make sure that multi_search request hands over its context and headers to its corresponding search requests
Closes #7374
2014-08-21 15:09:27 +02:00
javanna b6cdaff30c Internal: make sure that multi_percolate request hands over its context and headers to its corresponding shard requests
Closes #7371
2014-08-21 13:45:11 +02:00
Martijn van Groningen 9dd3597f1f [TEST] Sort by the _id field instead of _uid field and also assert the sort value. 2014-08-21 13:30:09 +02:00
javanna c89f941ffa [TEST] added debug lines to bw comp testDeleteByQuery and testDeleteRoutingRequired 2014-08-21 13:11:05 +02:00
Alex Ksikes f1a6b4e9fe More Like This Query: Switch to using the multi-termvectors API
The term vector API can now generate term vectors on the fly, if the terms are
not already stored in the index. This commit exploits this new functionality
for the MLT query. Now the terms are directly retrieved using multi-
termvectors API, instead of generating them from the texts retrieved using the
multi-get API.

Closes #7014
2014-08-21 12:18:21 +02:00
Simon Willnauer c4bed91262 [PARSER] Clarify XContentParser/Builder interface for binary vs. utf8 values
Today we have very confusing naming since some methods names claim to
read binary but in fact read utf-16 and convert to utf-8 under the hood.
This commit clarifies the interfaces and adds additional documentation.

Closes #7367
2014-08-21 11:46:50 +02:00
Adrien Grand b5b1960a2b Internal: Remove CacheRecycler.
The main consumer of this API was the faceting module. Now that it's gone,
let's remove CacheRecycler as well.

Close #7366
2014-08-21 11:21:04 +02:00
javanna 269a6dfb40 [TEST] bw comp testMultiGet should wait for yellow, not for green 2014-08-21 11:14:48 +02:00
javanna 5709a11d23 [TEST] fixed concurrency issue in IndicesRequestTests 2014-08-21 10:43:58 +02:00
Adrien Grand ea96359d82 Facets: Removal from master.
Close #7337
2014-08-21 10:34:39 +02:00
Adrien Grand ded30e95de Aggregations: Remove the logic to optionally sort/dedup values on the fly.
These options are not used anymore. Instead numeric values can now contain dups
and it is the responsibility of the aggregation to deal with it (eg. terms).
And otherwise all values sources are now sorted, which is the contract of the
interfaces that they implement.

Close #7276
2014-08-21 10:25:50 +02:00
Alex Ksikes 62ef4a30dc Term vector API: return 'found: false' for docs between index and refresh
Closes #7121
2014-08-21 09:58:49 +02:00
Igor Motov 150df5f1c5 [TEST] Improve robustness of restoreIndexWithMissingShards test 2014-08-20 21:11:04 -04:00
Shay Banon 9dc4f3861a Query Cache: Add hit and miss count
closes #7355
2014-08-20 14:39:16 -07:00
Shay Banon 2f3a041070 NPE in ShardStats when routing entry is not set yet on IndexShard
closes #7356
2014-08-20 12:48:52 -07:00
javanna abdbfe768b Internal: adjusted internal requests visibility from public to package private (redo)
was just reverted by mistake in the failed attempt of isolating the change and taking it out of #7319
2014-08-20 21:12:37 +02:00
javanna 441c1c8268 Internal: make sure that all shard level requests hold the original indices
A request that relates to indices (`IndicesRequest` or `CompositeIndicesRequest`) might be converted to some other internal request(s) (e.g. shard level request) that get distributed over the cluster. Those requests contain the concrete index they refer to, but it is not known which indices (or aliases or expressions) the original request related to.

This commit makes sure that the original indices are available as part of the shard level requests and makes them implement `IndicesRequest` as well.

Also every internal request should be created passing in the original request, so that the original headers, together with the eventual original indices and options, get copied to it. Corrected some places where this information was lost.

NOTE: As for the bulk api and other multi items api (e.g. multi_get), their shard level requests won't keep around the whole set of original indices, but only the ones that related to the bulk items sent to each shard, the important bit is that we keep the original names though, not only the concrete ones.

Closes #7319
2014-08-20 21:05:01 +02:00
Colin Goodheart-Smithe 0234b5b9b4 fix to compile issue caused by scripted metric aggregation change 2014-08-20 19:25:57 +01:00
Colin Goodheart-Smithe 7f943f0296 Aggregations: Scriptable Metrics Aggregation
A metrics aggregation which runs specified scripts at the init, collect, combine, and reduce phases

Closes #5923
2014-08-20 18:17:27 +01:00
Shay Banon 3a52296358 Warmer (search) to support query cache
allow for search based warmer to support query cache flag on the search request, and use the index level query caching flag if set.
closes #7326
2014-08-20 09:31:29 -07:00
Colin Goodheart-Smithe f7ae4d9d86 Geo: fixes circle radius calculation
This change fixes the creation circle shapes o it calculates it correctly instead of essentially using the diameter as the radius.  The radius has to be converted into degrees but calculating the ratio of the desired radius to the circumference of the earth and then multiplying it by 360 (number of degrees around the earths circumference).  This issue here was that it was only multiplied by 180 making the result out by a factor of 2.  Also made the test for circles actually check to make sure it has the correct centre and radius.

Closes #7301
2014-08-20 16:23:21 +01:00
uboness e2311d5da4 opened up getting the template name from DeleteIndexTemplateRequest 2014-08-20 07:11:15 -07:00
javanna 61da463dd0 Internal: adjusted internal requests visibility from public to package private 2014-08-20 12:11:57 +02:00
javanna 3450e82855 [TEST] UnicastBackwardsCompatibilityTest should not copy internal node settings to external nodes
Recent test failures triggered by #7289 were caused by this, simply because internal node settings (transport type key) that are not supported by the external older nodes were copied to them by mistake.
2014-08-20 12:01:41 +02:00
Alexander Reelsen 357ab3a9d8 Test: Prevent use of transport client when testing changed transports
This makes sure, that the transport client is not used, as it would use
a different than the configured local transport mechanism in this test.
2014-08-20 08:46:03 +02:00
Igor Motov 45ca7771ee Snapshot checksum verification
Adds automatic verification of all files that are being snapshotted. Closes #5593
2014-08-19 20:58:43 -04:00
Igor Motov 0e5332f86c Fix NPE in SnapshotsService on node shutdown
Fixes #6506
2014-08-19 18:48:39 -04:00
Alexander Reelsen 247ff7d801 Transport: Refactor guice startup
* Removed & refactored unused module code
* Allowed to set transports programmatically
* Allow to set the source of the changed transport

Note: The current implementation breaks BWC as you need to specify a concrete
transport now instead of a module if you want to use a different
Transport or HttpServerTransport

Closes #7289
2014-08-19 18:03:06 +02:00
javanna 7aa2d11cdd Internal: auto create index to keep around headers and context of the request that caused it
Closes #7331
2014-08-19 17:04:13 +02:00
javanna a279f2e8c6 Internal: made it possible to disable the main transport handler in TransportShardSingleOperationAction
TransportShardSingleOperationAction is currently subclassed by different transport actions. Some of them are internal only, meaning that their execution will take place only in the same node where their parent execution took place. That means that their main transport handler doesn't need to be registered, the only transport handler that's needed is the shard level one.

Added `isSubAction` method (defaults to false) to the parent class that tells whether the action is a main one or a subaction, used to decide whether we need to register the main transport handler.

Closes #7285
2014-08-19 17:04:13 +02:00
Martijn van Groningen 9c63abde04 [TEST] Added more assertions 2014-08-19 16:34:54 +02:00
Adrien Grand 0f63e0a8da Aggregations: Merge LongTermsAggregator and DoubleTermsAggregator.
These two aggregators basically do exactly the same thing, they just interpret
bytes differently. This refactoring found an (unreleased) bug in the long terms
aggregator which didn't work correctly with duplicate values.

Close #7279
2014-08-19 15:33:05 +02:00
mikemccand d2ac95d93c Core: DistributorDirectory shouldn't search for directory when reading existing file
This was causing too much work e.g. when pulling node stats or when
opening a new reader, because the least_used distributor would
unnecessarily check free disk space on all path.data entires every
time we try to open a file for reading or check its length.

Closes #7306

Closes #7323
2014-08-19 08:56:06 -04:00
javanna 8458138b8c Internal: get request while percolating existing documents to keep around headers and context of the original percolate request
Closes #7333
2014-08-19 14:32:42 +02:00
javanna b1f532eb85 Internal: changed index templates api category from indices to cluster 2014-08-19 13:43:36 +02:00
Martijn van Groningen 383e64bd5c Aggregations: Add `children` bucket aggregator that is able to map buckets between parent types and child types using the already builtin parent/child support.
Closes #6936
2014-08-19 12:40:51 +02:00
David Pilato 122c2b7a12 Cli: parsing multiple times throws `AlreadySelectedException`
This issue has been fixed in commons-cli:1.3 project which sadly has not been released yet.
See https://issues.apache.org/jira/browse/CLI-183

This patch builds another list of options with no selected groups by default.

When commons-cli:1.3 will be released, we need to remove this patch.

Closes #7282.
2014-08-19 10:55:41 +02:00
mikemccand 81ced48f99 Core: switch to fixed thread pool by default for management threads
Switch management threads to a fixed thread pool with up to 5 threads, and queue size of 100 by default, after which excess incoming requests are rejected.

Closes #7318

Closes #7320
2014-08-18 15:46:29 -04:00
Martijn van Groningen 95a4e699bf [TEST] Don't invoke RoutingNodes.assertShardStats() via asserts many times in tests, just once on each reroute call. 2014-08-18 19:56:04 +02:00
Robert Muir ae326c4232 Tests: tone down random compression tests
Closes #7314
2014-08-18 10:37:45 -04:00
Britta Weber 9addac8300 function_score: remove explanation of query score from functions
The score is explained already, it should not be again explained per function.

Also, remove explanation from parameter list of ScoreFunction#explainScore()
and leave only the score.

This also removes ExplainableSearchScript which is not used anywhere and
was the only reason to have the Explanation in the parameter anyway.

closes #7245
2014-08-18 16:07:00 +02:00
Colin Goodheart-Smithe b2286915cd Geo: Adds support for GeoJSON GeometryCollection
Closes #2796
2014-08-18 13:55:39 +01:00
Colin Goodheart-Smithe 2c69dc06d1 Mapping: Fixes using nested doc array with strict mapping
Closes #7304
2014-08-18 10:19:29 +01:00
Adrien Grand 436e37cd76 Aggregations: Make the list of buckets for terms and histogram returned as a java.util.List.
The terms and histogram aggregations always have an order. So it would make the
response easier to consume to return the buckets as a list instead of a
collection in order to make it easier to do things like getting the first/last
buckets.

Close #7275
2014-08-18 09:25:32 +02:00
Igor Motov 0156bcbf32 Fix failed engine exception logging 2014-08-16 22:09:13 -04:00
uboness 40c63ad07a Fixed a request headers bug in transport client
Where the configured request headers were not sent with sniffing requests (both node/info & cluster state sniffing)
2014-08-16 03:01:14 +02:00
Igor Motov f4115b84a7 Add more logging for testSnapshotAndRestore backward compatibility test 2014-08-15 19:23:19 -04:00
javanna d0e2d768b8 Java api: fixed inconsistencies in PercolateRequest, added return type for method chaining where missing
Closes #7294
2014-08-15 15:57:14 +02:00
Robert Muir 5c7cefa292 Analysis: Add keep_types for filtering by token type 2014-08-15 09:28:12 -04:00
Colin Goodheart-Smithe f4d75f0212 REST API: Allows all options for expand_wildcards parameter
This change means that the default settings for expand_wildcards are only applied if the expand_wildcards parameter is not specified rather than being set upfront. It also adds the none and all options to the parameter to allow the user to specify no expansion and expansion to all indexes (equivalent to 'open,closed')

Closes #7258
2014-08-15 12:50:11 +01:00
Britta Weber d6312178ad [TEST] remove unneeded explain(true)
closes #7248
2014-08-14 15:59:21 +02:00
Britta Weber 9bebccba0c function_score: fix explanation, [ was missing 2014-08-14 15:59:19 +02:00
Adrien Grand feefc41127 [TESTS] Make DisabledFieldDataFormatTests less evil. 2014-08-14 15:26:15 +02:00
Adrien Grand a4f974dcaa Internal: Add some @Nullable annotations and fix related compilation warnings.
Added @Nullable to:
 - IndicesService.indexService
 - IndexService.shard
 - IndexService.shardInjector

This change doesn't try to do anything smart but just makes sure that a
*MissingException is thrown instead of a NullPointerException when the requested
object doesn't exist.

Close #7251
2014-08-14 14:55:52 +02:00
javanna 084793fca7 Internal: fixed wrong version check s/onOrBefore/before in TransportShardSingleOperationAction
relates to #7223
2014-08-14 14:19:37 +02:00
uboness f4a7793f89 Introduced a new elasticsearch exception family that can hold headers
- These heades will be copied as response header on the rest response
2014-08-14 12:34:38 +02:00
Colin Goodheart-Smithe 7602b13a58 Geo: Improved error handling in geo_distance
geo_distance filter now throws a parse exception if no distance parameter is supplied

Close #7260
2014-08-14 10:25:01 +01:00
Alexander Reelsen 6023a3a1a1 Plugins: Add executable flag to every file in bin/ after install
The PluginManager does not preserve permissions on install. This patch
sets the executable flag on every file in bin/ on plugin install.

Closes #7177
2014-08-14 10:53:08 +02:00
javanna 4d05d1d7b0 Internal: adjusted BroadcastShardOperationResponse subclasses visibility
Also replaced int,String pair with ShardId that holds the same info and serializes it the same way.
Replaced shardId and index getters in BroadcastOperationRequest with a single ShardId getter.

Closes #7255
2014-08-13 17:38:18 +02:00
Ryan Ernst 98063ba244 Add [1.3.3] and [1.2.5] version constants. 2014-08-13 08:03:52 -07:00
Lee Hinman fe86eddecb Forbid index names over 100 characters in length
Fixes #4417
2014-08-13 14:51:21 +02:00
Lee Hinman 4dc060527c Add GroovyCollections to the sandbox whitelist
Also clarify in the docs that changing the whitelist/blacklist settings
replace the list, they don't add to it.

Fixes #7089
Fixes #7088
2014-08-13 14:47:49 +02:00
Thomas Peuss 089658a36f A content decompressor that throws a human readable message when
compression is disabled and the user sends compressed content.
2014-08-13 12:25:11 +02:00
javanna ba8df3b5ba Update api & Indices stats: fixed version checks for no-op updates which got in after 1.3 was released
Also added basic bw comp test for indices stats api.

Relates to #6822
2014-08-13 11:45:09 +02:00
David Pilato 90dfb350e0 Tests: move plugin dir to plugins dir
We should be consistent in our naming for classes and resources.
2014-08-13 11:42:05 +02:00
David Pilato 02a90f3684 Fix: VerboseProgress(PrintWriter) does not set the writer 2014-08-13 11:37:05 +02:00
David Pilato 655282a2c6 Remove `numeric_range` filter
As done with #4034, `numeric_range` filter has been deprecated since 1.0.0.

Closes #7108.
2014-08-13 10:19:45 +02:00
javanna 270b109e65 Internal: adjusted visibility to package private for BroadcastShardOperationRequest subclasses and their constructors
Also replaced the String,int pair for index and shard_id with ShardId object that holds the same info and serialized it the same way too.

Closes #7235
2014-08-13 09:51:51 +02:00
Colin Goodheart-Smithe cd4aea841a Geo: fixes computation of geohash neighbours
The geohash grid it 8 cells wide and 4 cells tall. GeoHashUtils.neighbor(String,int,int.int) set the limit of the number of cells in y to < 3 rather than <= 3 resulting in it either not finding all neighbours or incorrectly searching for a neighbour in a different parent cell.

Closes #7226
2014-08-13 08:38:44 +01:00
Colin Goodheart-Smithe 2906d3e6dc Core: Store index creation time in index metadata
This change stores the index creation time in the index metadata when an index is created.  The creation time cannot be changed but can be set as part of the create index request to allow for correct creation times for historical data.

Closes #7119
2014-08-12 21:34:50 +01:00
mikemccand 8e35e921f7 Java client API: CreateIndexRequestBuilder.addMapping throws IllegalStateException if you add same type more than once
Previously, it would silently overwrite the previous mapping, which was trappy.

Closes #7231

Closes #7243
2014-08-12 14:32:38 -04:00
Alexander Reelsen e689a0ad71 Test: Allow CliTool to write out stacktraces
In order to have the possibility of debugging on the command line, the user
now can either set the es.cli.debug system property
which results in stack traces being written to to the terminal.

Closes #7222
2014-08-12 17:43:36 +02:00
David Pilato 9e6868733c Query DSL: Cache range filter on date field by default
A range filter on a date field with a numeric `from`/`to` value is **not** cached by default:

    DELETE /test

    PUT /test/t/1
    {
      "date": "2014-01-01"
    }

    GET /_validate/query?explain
    {
      "query": {
        "filtered": {
          "filter": {
            "range": {
              "date": {
                "from": 0
              }
            }
          }
        }
      }
    }

Returns:

    "explanation": "ConstantScore(no_cache(date:[0 TO *]))"

This patch fixes as well not caching `from`/`to` when using `now` value not rounded.
Previously, a query like:

    GET /_validate/query?explain
    {
      "query": {
        "filtered": {
          "filter": {
            "range": {
              "date": {
                "from": "now"
                "to": "now/d+1"
              }
            }
          }
        }
      }
    }

was cached.

Also, this patch does not cache anymore `now` even if the user asked for caching it.
As it won't be cached at all by definition.

Added as well tests for all possible combinations.

Closes #7114.
2014-08-12 15:27:02 +02:00
David Pilato b72f44b93a [Test] fix plugins: `bin` and `config` only plugins do not install correctly
Related to #7152.
2014-08-12 14:59:22 +02:00
David Pilato 14a028d62c plugins: `bin` and `config` only plugins do not install correctly
When installing a bin only plugin, it is identified as a site plugin.

A current workaround would be to create in the zip file another empty dir. So if you have:

* `bin/myfile.sh`
* `empty/empty.txt`

the `bin` content will be extracted as expected.

Closes #7152.
2014-08-12 14:40:51 +02:00
javanna 0ec7aa4492 [TEST] don't use multiple names (e.g. aliases) pointing to the same concrete index when using indexRandom
indexRandom will try to delete bogus documents multiple times since they get tracked by indexOrAlias/id, and after the actual deletion any other attempt throws error and fails the test
2014-08-12 14:34:11 +02:00
javanna 5d987ad5e2 Internal: changed every single index operation to not replace the index within the original request
An anti-pattern that we have in our code, noticeable for java API users, is that we modify incoming requests by replacing the index or alias with the concrete index. This way not only the request has changed, but all following communications that use that request will lose the information on whether the original request was performed against an alias or an index.

Refactored the following base classes: `TransportShardReplicationOperationAction`, `TransportShardSingleOperationAction`, `TransportSingleCustomOperationAction`, `TransportInstanceSingleOperationAction` and all subclasses by introduced an InternalRequest object that contains the original request plus additional info (e.g. the concrete index). This internal request doesn't get sent over the transport but rebuilt on each node on demand (not different to what currently happens anyway, as concrete index gets set on each node). When the request becomes a shard level request, instead of using the only int shardId we serialize the ShardId that contains both concrete index name (which might then differ ffrom the original one within the request) and shard id.

Using this pattern we can move get, multi_get, explain, analyze, term_vector, multi_term_vector, index, delete, update, bulk to not replace the index name with the concrete one within the request. The index name within the original request will stay the same.

Made it also clearer within the different transport actions when the index needs to be resolved and when that's not needed (e.g. shard level request), by exposing `resolveIndex` method. Moved check block methods to parent classes as their content was always the same on every subclass.

Improved existing tests by randomly introducing the use of an alias, and verifying that the responses always contain the concrete index name and not the original one, as that's the expected behaviour.

Added backwards compatibility tests to make sure that the change is applied in a backwards compatible manner.

Closes #7223
2014-08-12 13:25:23 +02:00
Colin Goodheart-Smithe 371d6021e7 Fix for failing BasePolygonBuilder 2014-08-12 11:04:07 +01:00