Commit Graph

2449 Commits

Author SHA1 Message Date
Igor Motov d92f573404 Optimize restore source JSON serialization
Don't print "restore_source":  null if restore source is null, omit entire line instead
2013-12-21 22:12:12 -05:00
Boaz Leskes be27ed3a25 Added unit tests for ClusterIndexHealth and ClusterHealthResponse
Relates to #4528
2013-12-20 22:00:24 +01:00
Alexander Reelsen 0bef2c66a9 Reverting back to 0.90.7 config/templates loading behaviour
Closes #4511
2013-12-20 14:58:46 +01:00
Boaz Leskes bbffeb1b39 Counting shards was wrong if one of the indices was in the RED status
Closes #4528
2013-12-20 13:17:18 +01:00
Adrien Grand a7cfae4e7a Stricter parsing of aggregations.
- Only one aggregation type is allowed per aggregation definition.
 - Return an error in the parsers when an unknown field is encountered.

Close #4464
2013-12-20 09:51:25 +01:00
Shay Banon 5bf4e74647 Failed search on a shard tries a local replica on a network thread
When a search on a shard to a remove node fails, and then replica exists on the local node, then the execution of the search is done on the network thread. This is problematic since we need to execute it on the actual search thread pool, but can also explain #4519, where the get happens on the network thread and it waits to send the get request till the network thread we use is freed (deadlock...)
fixes #4526

note, re-enable the geo shape fetch test, this fix should solve it as well
2013-12-19 22:19:20 +01:00
Shay Banon 0c1c2dc671 Allow to enable / disable bloom filter loading on an index
Allow to have a new index level setting index.codec.bloom.load (default to true), that can control if the boom filters will be loaded or not. This is an updateable setting, that can be updated on a live index using the update settings API.

Note though, when this setting is updated, a fresh Lucene index will be reopened, causing associate caches to be dropped potentially.

closes #4525

Note, this change also disables the returning lucene ram usage stats, due to a bug in Lucene, relates to #4512
2013-12-19 21:32:14 +01:00
Simon Willnauer 80ed3d05bc Use a List of shards per shard ID rather than a set.
The shards in the set are mutated after they are added to the
set such that the hashcode doesn't fit anymore. For this reason
this used an identity hashset before but the downside of this is
that the iteration order is not deterministic. We can just use a list
since shard removal is a very rare action and the size of the list is
very small such that iteration is fast.
2013-12-19 19:55:29 +01:00
Shay Banon a92907c47e fix bloom filter posting format to get the fpp from the correct settings 2013-12-19 14:35:38 +01:00
Shay Banon 46d191c8d4 try and extract store directory also if its wrapped in a compound dir 2013-12-19 14:21:27 +01:00
Igor Motov 8c1073bb6e Update snapshot list when snapshot is deleted 2013-12-18 20:34:05 -05:00
Igor Motov aafd4ddfbd Add ability to specify base directory on the repository level
This change is needed to support multiple repositories per S3 bucket
2013-12-18 20:34:05 -05:00
Shay Banon 95ca06cf09 Add the memory used on segment/segments stats
The memory used for the Lucene index (term dict, bloom filter, ...) can now be reported per segment using the segments API, and on the segments flag on node/indices stats
closes #4512
2013-12-18 22:21:53 +01:00
Shay Banon 0a016716ed fix computation of ram bytes used in bloom filter posting format 2013-12-18 22:01:59 +01:00
Simon Willnauer 7969a719f7 s/he/it 2013-12-18 21:46:43 +01:00
Martijn van Groningen e7e1667a26 Make parsing strict for `geo_shape` query & filter and stricter for `common` query.
Closes #4508
2013-12-18 17:56:38 +01:00
Shay Banon bb4d3f55c0 Fix compilation on Java 8 + tests that rely on ordering
Note, we still have tests failing because of mvel compilation bugs, see more here: http://jira.codehaus.org/browse/MVEL-299
closes #4510
2013-12-18 17:52:19 +01:00
Simon Willnauer 9d8ab56c9b Add [0.90.8] release 2013-12-18 17:30:28 +01:00
Simon Willnauer d8dee92f98 Make BalancedAllocationDecider assignments deterministic
a previous change introduces an identity hashset that has non-deterministic
iteration order which kill the reproducibility of our unittests if they fail.
This patch adds back deterministic allocations.
2013-12-18 16:10:28 +01:00
Boaz Leskes 17e7d01753 Move XContent Rendering and Cluster Health Status calculations to ClusterHealthResponse 2013-12-18 15:24:01 +01:00
Shay Banon d5192ecd31 use the computed data structure to optimize the awareness allocation decider 2013-12-18 14:29:41 +01:00
Shay Banon 5827170d42 use the computed data structure to optimize the same shard allocation decider 2013-12-18 14:08:59 +01:00
Shay Banon f5d217c08e On node join, evict existing node(s) with the same transport address
Make sure to evict an existing node with the same transport address as a new node that joins. This can happen for example when there is a bug in a cluster state event handler, which causes the "old" node to not be evicted, or a load on the master node that will take time for the "old" node leaving to be processed.
closes #4503
2013-12-18 12:21:59 +01:00
Boaz Leskes 3c5106ae98 Added cluster health status to the Cluster Stats API
Relates to #4460
2013-12-18 12:03:49 +01:00
Simon Willnauer 314499cee0 Use existing datastructures from RoutingNodes to elect unassigned primaries
Currently we trying to find a replica for a primary that is allocated by
running through all shards in the cluster while RoutingNodes already has
a datastructure keyed by shard ID for this. We should lookup this
directly rather than using linear probing. This improves shard allocation performance
by 5x.
2013-12-18 11:48:21 +01:00
Shay Banon f0356b2126 Don't delete local shard data when its allocated on a node that doesn't exists
This is an extreme case, exposed by a bug we had in our allocation in local gateway, causing a cluster state that doesn't include a node in the nodes list, but still has the shard in the routing table pointing at the non existent node. Then, when a node on the same box comes back, it will cause the local shard data to be deleted because it thinks its fully allocated on other nodes.
fixes #4502
2013-12-18 11:37:00 +01:00
Boaz Leskes b865047125 Removed exception handling in InternalIndexShard.docStats() & storeStats()
This is already caught at another level, see #4203
2013-12-18 11:10:35 +01:00
Boaz Leskes 5475ccf738 Move XContent rendering of ClusterIndexHealth to the class itself 2013-12-18 11:00:52 +01:00
Alexander Reelsen 8dce82d64d Removed exception handling in InternalIndexShard.completionStats()
This is already caught at another level, see #4203
2013-12-18 10:52:23 +01:00
Martijn van Groningen 40ec7116d8 Removed unnecessary get call 2013-12-17 22:45:05 +01:00
Boaz Leskes ae09f85c9e removed a left over debug log 2013-12-17 16:29:02 +01:00
Boaz Leskes 33bb2ecfa8 Added a time stamp to the cluster stats response
Making it consistent with NodeStats
2013-12-17 16:06:52 +01:00
Shay Banon 3fed65e486 reuse shard identifier if possible 2013-12-17 15:35:01 +01:00
Alexander Reelsen 59cedea010 Fix parsing of file based template loading
We support three different settings in templates

* "settings" : { "index" : { "number_of_shards" : 12 } }
* "settings" : { "index.number_of_shards" : 12 }
* "settings" : { "number_of_shards" : 12 }

The latter one was not supported by the fix in #4235

This commit fixes this issue and uses randomized testing to test any of the three cases above when running integration tests.

Closes #4411
2013-12-17 14:34:56 +01:00
Shay Banon be860c8004 take into account field mapped analyzers in simple_query_string
need to use the correct analyzer here, that will automatically choose the correct analyzer per field
2013-12-17 14:34:20 +01:00
Simon Willnauer a4f97bed9d Randomize AllocationDecider order in tests 2013-12-17 13:55:43 +01:00
Simon Willnauer 79ab05cdcf Improve allocation of unassigned shards with early termination
When we allocate unassigned shards we can terminate early for some
shards like if we already tried to allocate a replica we don't need
to try the same replica if the first one got rejected. We also
can check if certain nodes can't allocate any primaries or shrads
at all and take those nodes out of the picture for the current round
since it will not change in the current round.
2013-12-17 13:55:43 +01:00
Boaz Leskes 2b6214cff7 Added Cluster Stats API
Closes #4460
2013-12-17 13:14:46 +01:00
Boaz Leskes 9fb361cea1 Move index health calculations to ClusterIndexHealth so it can be reused. 2013-12-17 11:31:22 +01:00
Adrien Grand 33599d9a34 Compressed geo-point field data.
This commit allows to trade precision for memory when storing geo points.
This new field data impl accepts a `precision` parameter that controls the
maximum expected error for storing coordinates. This option can be updated on
a live index with the PUT mapping API.

Default precision is 1cm, which requires 8 bytes per geo-point (50% memory
saving compared to using 2 doubles).

Close #4386
2013-12-17 11:29:48 +01:00
Shay Banon a1ee68a145 fix usage of deprecated netty header method 2013-12-17 10:59:27 +01:00
Shay Banon 809e870b8d introduce a native int/long open immutable map, and use it in in routing table 2013-12-16 20:33:38 +01:00
Martijn van Groningen 23d2b1ea7b Renamed top level `filter` to `post_filter`.
Closes #4119
2013-12-16 17:10:14 +01:00
Lee Hinman db431b7cb3 Remove the `field` and `text` queries.
The `text` query was replaced by the `match` query and has been
deprecated for quite a while.

The `field` query should be replaced by a `query_string` query with
the `default_field` specified.

Fixes #4033
2013-12-16 08:59:36 -07:00
Simon Willnauer 3e321972cc Throw IAE if suggest results return differently sized results.
If the term suggester is used the results are merged depending on
the number of terms produced by the tokenizer / tokenfilter. If a
term suggester is executed across multiple indices that share the
same field but with different analysis chains we can't merge the
result anymore sicne tokens are our of order or have a different size.

This commit throws ESIllegalArgumentException if the number of entries
are not the same across all results.

Closes #3196
2013-12-16 15:31:44 +01:00
Luca Cavanna 173a91bb46 Added new IndicesLifecycle.Listener method that allows to listen for any IndexShardState internal change.
Closes #4413
2013-12-16 15:00:15 +01:00
Adrien Grand 4e7ce4ee02 Make field data changes immediately taken into account and add the ability to disallow field data loading.
This commit changes field data configuration updates so that they are
immediately taken into account for loading new segments. The way it works
is that field data configuration is now cached separately from the field
data cache, meaning that it is now possible to clear the field data
configuration from IndexFieldDataService while the cache will stay around. On
the next time that Elasticsearch will reload field data configuration, it will
check if there is already a cache entry, and reuse it if it exists.

To disable field data loading, all that is required is to change the field
data format to "none" (supported by all field data types) using the update
mapping API. Elasticsearch will then refuse to load field data on any new
segment, but field data which has been loaded on the previous segments will
remain available. So you need to clear the field data cache in order to
reclaim memory (otherwise memory will be reclaimed slower, as segments get
merged).

Close #4430
Close #4431
2013-12-16 14:34:33 +01:00
Simon Willnauer 8d321530de Reset source shards to `started` if canceling relocation.
Currently we miss to reset the source shards status to ACTIVE if we cancel
a relocation. If the shard is RELOCATING we need to reset to state ACTIVE.

Closes #4457
2013-12-16 11:52:16 +01:00
Simon Willnauer 30c6f2fa23 Improve RoutingNodes API
Currently the RoutingNodes API allows modification of it's internal state outside of the class.
This commit improves the APIs of `RoutingNode` and `RoutingNode` to change internal state
only within the classes itself.

Closes #4458
2013-12-16 11:50:45 +01:00
Sebastian Geidies 6af80d5017 Optimizes performance of AllocationDecider execution. Instead of using loops over all ShardRoutings, do accounting in RoutingNodes.
Speeds up recalculating cluster state on large clusters.
2013-12-16 11:35:45 +01:00