9203 Commits

Author SHA1 Message Date
David Turner
e6da564eb1
Handle case where the hole vertex is south of the containing polygon(s) (#27685)
Normally the hole is assigned to the component of the first edge to the south
of one of its vertices, but if the chosen hole vertex is south of everything
then the binary search returns -1 yielding an ArrayIndexOutOfBoundsException.
Instead, assign the vertex to the component of the first edge to its north.
Subsequent validation catches the fact that the hole is outside its component.

Fixes #25933
2017-12-18 08:50:40 +00:00
Jason Tedor
75c0cd0672
Move range field mapper back to core
This commit moves the range field mapper back to core so that we can
remove the compile-time dependency of percolator on mapper-extras which
compilcates dependency management for the percolator client JAR, and
modules should not be intertwined like this anyway.

Relates #27854
2017-12-17 14:27:10 -05:00
Jason Tedor
fade828c50
Fix publication of elasticsearch-cli to Maven
This commit addresses the publication of the elasticsearch-cli to
Maven. For now for simplicity we publish this to Maven so that it is
available as a transitive dependency for any artifacts that depend on
the core elasticsearch artifact. It is possible that in the future we
can simply exclude this dependency but for now this is the safest and
simplest approach that can happen in a patch release.

Relates #27853
2017-12-17 11:51:18 -05:00
Nhat Nguyen
4f62b51c87
Use lastSyncedGlobalCheckpoint in deletion policy (#27826)
Today we use the in-memory global checkpoint from SequenceNumbersService
to clean up unneeded commit points, however the latest global checkpoint
may haven't fsynced to the disk yet. If the translog checkpoint fsync
failed and we already use a higher global checkpoint to clean up commit
points, then we may have removed a safe commit which we try to keep for
recovery.

This commit updates the deletion policy using lastSyncedGlobalCheckpoint
from Translog rather the in memory global checkpoint.

Relates #27606
2017-12-16 11:03:31 -05:00
kel
f5e0932c8d Add version support for inner hits in field collapsing (#27822) (#27833)
Add version support for inner hits in field collapsing
2017-12-15 18:00:40 +01:00
Jason Tedor
7945848dd6 Register HTTP read timeout setting
This commit registers the HTTP read timeout setting so that it can
actually be set.
2017-12-15 10:56:00 -05:00
Simon Willnauer
481d98b8d5
Remove operationThreaded from Java API (#27836)
This option is completely unused. Some places set it but we never read
the value neither respect it.
2017-12-15 15:20:55 +01:00
Colin Goodheart-Smithe
c93cc1bb8f
Fix ByteSizeValue serialisation test 2017-12-15 12:10:10 +00:00
Simon Willnauer
d941c64edb
Optimize version map for append-only indexing (#27752)
Today we still maintain a version map even if we only index append-only
or in other words, documents with auto-generated IDs. We can instead maintain
an un-safe version map that will be swapped to a safe version map only if necessary
once we see the first document that requires access to the version map. For instance:
 * a auto-generated id retry
 * any kind of deletes
 * a document with a foreign ID (non-autogenerated

In these cases we forcefully refresh then internal reader and start maintaining
a version map until such a safe map wasn't necessary for two refresh cycles.
Indices / shards that never see an autogenerated ID document will always meintain a version
map and in the case of a delete / retry in a pure append-only index the version map will be
de-optimized for a short amount of time until we know it's safe again to swap back. This
will also minimize the requried refeshes.

Closes #19813
2017-12-15 12:13:10 +01:00
Simon Willnauer
1e5d3787e5 [TEST] Don't start thread before checking for pending refresh
If we start the thread too early it registers a refresh listener and
that causes out assertion to fail if there is a zero timeout.
Closes #27769
2017-12-15 09:28:50 +01:00
Christoph Büscher
54b1fed5b3 Corrected ByteSizeValue bwc serialization version after backport to 6.x 2017-12-15 08:56:59 +01:00
Adrien Grand
1b660821a2
Allow _doc as a type. (#27816)
Allowing `_doc` as a type will enable users to make the transition to 7.0
smoother since the index APIs will be `PUT index/_doc/id` and `POST index/_doc`.
This also moves most of the documentation to `_doc` as a type name.

Closes #27750
Closes #27751
2017-12-14 17:47:53 +01:00
Colin Goodheart-Smithe
579d1fea57
Fixes ByteSizeValue to serialise correctly (#27702)
* Fixes ByteSizeValue to serialise correctly

This fix makes a few fixes to ByteSizeValue to make it possible to perform round-trip serialisation:
* Changes wire serialisation to use Zlong methods instead of VLong methods. This is needed because the value `-1` is accepted but previously if `-1` is supplied it cannot be serialised using the wire protocol.
* Limits the supplied size to be no more than Long.MAX_VALUE when converted to bytes. Previously values greater than Long.MAX_VALUE bytes were accepted but would be silently interpreted as Long.MAX_VALUE bytes rather than erroring so the user had no idea the value was not being used the way they had intended. I consider this a bug and so fine to include this bug fix in a minor version but I am open to other points of view.
* Adds a `getStringRep()` method that can be used when serialising the value to JSON. This will print the bytes value if the size is positive, `”0”` if the size is `0` and `”-1”` if the size is `-1`.
* Adds logic to detect fractional values when parsing from a String and emits a deprecation warning in this case.
* Modifies hashCode and equals methods to work with long values rather than doubles so they don’t run into precision problems when dealing with large values. Previous to this change the equals method would not detect small differences in the values (e.g. 1-1000 bytes ranges) if the actual values where very large (e.g. PBs). This was due to the values being in the order of 10^18 but doubles only maintaining a precision of ~10^15.

Closes #27568

* Fix bytes settings default value to not use fractional values

* Fixes test

* Addresses review comments

* Modifies parsing to preserve unit

This should be bwc since in the case that the input is fractional it reverts back to the old method of parsing it to the bytes value.

* Addresses more review comments

* Fixes tests

* Temporarily changes version check to 7.0.0

This will be changed to 6.2 when the fix has been backported
2017-12-14 12:17:17 +00:00
Daniel Mitterdorfer
0c5086af58 Add unreleased v6.1.1 version 2017-12-14 09:22:09 +01:00
Nhat Nguyen
5bc2f390a5
Use CountedBitSet in LocalCheckpointTracker (#27793)
The CountedBitSet can automatically release its internal bitsets when
all bits are set to reduce memory usage. This structure can work well
for sequence numbers as these numbers are likely to form contiguous
ranges. This commit replaces FixedBitSet by CountedBitSet in
LocalCheckpointTracker.
2017-12-13 11:10:57 -05:00
Tanguy Leroux
b69923f112
Remove some unused code (#27792)
This commit removes some unused code.
2017-12-13 16:45:55 +01:00
Boaz Leskes
247efa86bf remove stale comment in IndexShard 2017-12-13 14:52:05 +01:00
Nhat Nguyen
55738ac1b9 TEST: Update translog gen of the last commit
The test testWithRandomException was not updated accordingly to the
latest translog policy. Method setTranslogGenerationOfLastCommit should
be called before whenever setMinTranslogGenerationForRecovery is called.

Relates #27606
2017-12-12 20:59:16 -05:00
Nhat Nguyen
57fc705d5e
Keep commits and translog up to the global checkpoint (#27606)
We need to keep index commits and translog operations up to the current 
global checkpoint to allow us to throw away unsafe operations and
increase the operation-based recovery chance. This is achieved by a new
index deletion policy.

Relates #10708
2017-12-12 19:20:08 -05:00
Tanguy Leroux
a1ed347110
Fail restore when the shard allocations max retries count is reached (#27493)
This commit changes the RestoreService so that it now fails the snapshot 
restore if one of the shards to restore has failed to be allocated. It also adds
a new RestoreInProgressAllocationDecider that forbids such shards to be 
allocated again. This way, when a restore is impossible or failed too many 
times, the user is forced to take a manual action (like deleting the index 
which failed shards) in order to try to restore it again.

This behaviour has been implemented because when the allocation of a 
shard has been retried too many times, the MaxRetryDecider is engaged 
to prevent any future allocation of the failed shard. If it happens while 
restoring a snapshot, the restore hanged and was never completed because 
it stayed around waiting for the shards to be assigned (and that won't happen).
It also blocked future attempts to restore the snapshot again. With this commit,
the restore does not hang and is marked as failed, leaving failed shards 
around for investigation.

This is the second part of the #26865 issue.

Closes #26865
2017-12-12 09:51:18 +01:00
Boaz Leskes
cfc3b2d344 remove InternalEngine.compareOpToLuceneDocBasedOnVersions as it is unused
relates #27720
2017-12-12 09:38:54 +01:00
Tanguy Leroux
f27cb96a64
Use AmazonS3.doesObjectExist() method in S3BlobContainer (#27723)
This pull request changes the S3BlobContainer.blobExists() method implementation 
to make it use the AmazonS3.doesObjectExist() method instead of 
AmazonS3.getObjectMetadata(). The AmazonS3 implementation takes care of 
catching any thrown AmazonS3Exception and compares its response code with 404, 
returning false (object does not exist) or lets the exception be propagated.
2017-12-12 09:30:36 +01:00
Jason Tedor
6bc40e4bd3
No longer unidle shard during recovery
Previously we would unidle a primary shard during recovery in case the
recovery target would miss a background global checkpoint sync. However,
the background global checkpoint syncs are no longer tied to the primary
shard falling idle and so this unidling is no longer needed.

Relates #27757
2017-12-11 13:26:27 -05:00
Simon Willnauer
ebb93db010
Remove pre 6.0.0 support from InternalEngine (#27720)
This removes special casing for documents without a sequence ID.
This code is complex enough with seq IDs we should clean up things
when we can and we don't support 5.x indexing in 7.x anymore
2017-12-11 16:39:06 +01:00
Jason Tedor
22e294ce6d
Fix performance of RoutingNodes#assertShardStats
The performance of this method is abysmal, it leads to the
balanced/unbalanced cluster tests taking twenty seconds! The reason for
the performance issue is a quadruple-nested for loop. The inner
double-nested loop is partitioning shards by shard ID in disguise, so we
simply extract this into computing a partition of shards by shard ID
once. Now balanced/unbalanced cluster test does not take twenty seconds
to run.

Relates #27747
2017-12-11 10:18:06 -05:00
Jim Ferenczi
b35c459c96 [TESTS] Fix expectations for GeoShapeQueryBuilderTests#testWrongFieldType
Relates #27730
2017-12-11 13:31:58 +01:00
olcbean
25c606cf09 Remove deprecated names for string distance algorithms (#27640)
#27409 deprecated the incorrectly-spelled `levenstein` in favour of `levenshtein`.
#27526 deprecated the inconsistent `jarowinkler` in favour of `jaro_winkler`.

These changes were merged into 6.2, and this change removes them entirely in 7.0.
2017-12-11 12:16:04 +00:00
Robin Neatherway
85dd1880fc Fix some type checks that were always false (#27706)
* CustomFieldQuery: removed a redundant type check that was 
already done higher up in the same if/else chain.
* PrioritizedEsThreadPoolExecutor: removed a check that was 
simply a duplicate of one earlier one and would never have been true.
2017-12-11 11:28:03 +01:00
Christoph Büscher
87313e12ba
Use typeName() to check field type in GeoShapeQueryBuilder (#27730)
The current code contains an instanceOf check and a comment that this should
eventually be changed to something else. The typeName() should return a unique
name for the field type in question (geo_shape) so it can be used instead.
2017-12-11 11:03:13 +01:00
Jason Tedor
87f7b9c0f9 Speed up rejected execution contains node name test
This commit addresses slowness in the test that a rejected execution
contains the node name. The slowness came from setting the count on a
countdown latch too high (two in the case of the search thread pool)
where there would never be a second countdown on the latch. This means
that when then test node is shutting down, closing the node would have
to wait a full ten seconds before forcefully terminating the thread
pool. This commit fixes the issue so that the node can close
immediately, shaving ten seconds off the run time of the test.

Relates #27663
2017-12-10 13:04:22 -05:00
Jason Tedor
8c8b1dc2cf Fix index with unknown setting test
This commit fixes the test of an index with an unknown setting. The
problem here is that we were manipulating the index state on disk, but a
cluster state update could arrive between us manipulating the index
state on disk and us restarting the node, leading to the index state
that we just intentionally broke being fixed. As such, after restart,
the index state would not be in the state that we expected it to be in
and the test would fail. To address this, we hook into the restart and
break the index state immediately before the node is started again.

Relates #26995
2017-12-09 09:12:40 -05:00
Tim Brooks
d1acb7697b
Remove internal channel tracking in transports (#27711)
This commit attempts to continue unifying the logic between different
transport implementations. As transports call a `TcpTransport` callback
when a new channel is accepted, there is no need to internally track
channels accepted. Instead there is a set of accepted channels in
`TcpTransport`. This set is used for metrics and shutting down channels.
2017-12-08 16:56:53 -07:00
olcbean
f50f99ef11 Improve error msg when a field name contains only white spaces (#27709)
* Explicitly check if a field name contains only
white spaces

* "white spaces" changed to "whitespace"
2017-12-08 13:46:56 -07:00
Jason Tedor
b66a0721da
Do not open indices with broken settings
Today we are lenient and we open an index if it has broken
settings. This can happen if a user installs a plugin that registers an
index setting, creates an index with that setting, stop their node,
removes the plugin, and then restarts the node. In this case, the index
will have a setting that we do not recognize yet we open the index
anyway. This leniency is dangerous so this commit removes it. Note that
we still are lenient on upgrades and we should really reconsider this in
a follow-up.

Relates #26995
2017-12-08 14:33:05 -05:00
Jason Tedor
cbba37c17d Set ACK timeout on indices service test
Setting a timeout here speeds the test up significantly since we do not
need to wait up the default of 30 seconds for shards to start, we only
need an ACK that the index was opened.
2017-12-08 14:02:53 -05:00
Tim Brooks
d82c40d35c
Implement byte array reusage in NioTransport (#27696)
This is related to #27563. This commit modifies the
InboundChannelBuffer to support releasable byte pages. These byte
pages are provided by the PageCacheRecycler. The PageCacheRecycler
must be passed to the Transport with this change.
2017-12-08 10:39:30 -07:00
Jason Tedor
5c9415a4d3
Cleanup split strings by comma method
We have some methods Strings#splitStringByCommaToArray and
Strings#splitStringByCommaToSet. It is not obvious that the former
leaves whitespace and the latter trims it. We also have
Strings#tokenizeToStringArray which tokenizes a string to an array, and
trims whitespace. It seems the right thing to do here is to rename
Strings#splitStringByCommaToSet to Strings#tokenizeByCommaToSet so that
its name is aligned with another method that tokenizes by a delimiter
and trims whitespace. We also cleanup the code here, removing an
unneeded splitting by delimiter to set method.

Relates #27715
2017-12-08 12:17:12 -05:00
Jason Tedor
8b49b3f8af Remove unused import from AliasResolveRoutingIT
This commit removes an unused import from AliasResolveRoutingIT.java
that was left behind from development.
2017-12-08 11:50:24 -05:00
Tim Brooks
ad8a571677
Add read timeouts to http module (#27713)
We currently do not have any server-side read timeouts implemented in
elasticsearch. This commit adds a read timeout setting that defaults to
30 seconds. If after 30 seconds a read has not occurred, the channel
will be closed. A timeout of value of 0 will disable the timeout.
2017-12-08 09:32:09 -07:00
Jason Tedor
ec5e540174
Fix routing with leading or trailing whitespace
The problem here is that splitting was using a method that intentionally
trims whitespace (the method is really meant to be used for splitting
parameters where whitespace should be trimmed like list
settings). However, for routing values whitespace should not be trimmed
because we allow routing with leading and trailing spaces. This commit
switches the parsing of these routing values to a method that does not
trim whitespace.

Relates #27712
2017-12-08 11:23:24 -05:00
Simon Willnauer
8f104cc08c [TEST] Now actually wait for merges
Relates to #27651
2017-12-08 12:35:02 +01:00
Simon Willnauer
952c859f52 Test out of order delivery of append only index and retry with an intermediate delete 2017-12-08 12:28:27 +01:00
Christoph Büscher
816878bd4d
[Tests] Add test for GeoShapeFieldType#setStrategyName (#27703) 2017-12-08 10:11:57 +01:00
Nhat Nguyen
6efee323e0
Remove unused *Commit* classes (#27714)
These classes are not used anywhere.
2017-12-07 21:42:11 -05:00
Lee Hinman
cca54b811d [TEST] Wait for merging to complete before testing breaker
It's possible that a merge may be ongoing when we check the breaker and segment
stats' memory usage, this causes the test to fail. Instead, we should wait for
merging to complete.

Resolves #27651
2017-12-07 11:57:22 -07:00
olcbean
bcc33f391f Add Open Index API to the high level REST client (#27574)
Add _open to the high level REST client

Relates to #27205
2017-12-07 18:16:03 +01:00
Christoph Büscher
b83e14858a Correcting some minor typos in comments 2017-12-07 16:39:23 +01:00
Yannick Welsch
5a53798f83 Add unreleased v5.6.6 version 2017-12-07 14:59:57 +01:00
Robin Neatherway
057efea893 Correct two equality checks on incomparable types (#27688) 2017-12-07 14:18:11 +01:00
Yannick Welsch
69dd667f5e Add unreleased v6.0.2 version 2017-12-07 11:54:22 +01:00