Commit Graph

693 Commits

Author SHA1 Message Date
Adrien Grand 13d790bd4c Merge pull request #12423 from khiraiwa/patch-1
Interval time is different from the doc value.
2015-07-24 14:19:32 +02:00
Martijn van Groningen c781c89e2c ShardUtils#getElasticsearchLeafReader() should use FilterLeafReader#getDelegate() instead of FilterLeafReader#unwrap
If there are multiple levels of filtered leaf readers then with the unwrap() method it immediately returns the most inner leaf reader and thus skipping of over any other filtered leaf reader that may be instance of ElasticsearchLeafReader. By using #getDelegate() method we can check each filter reader layer if it is instance of ElasticsearchLeafReader, so that we never skip over any wrapped filtered leaf reader and lose the shard id.
2015-07-24 13:49:07 +02:00
Boaz Leskes 316d1cb6c0 Core: Adapt IndicesClusterStateService to use allocation ids
Also, as set of utility methods was introduced on ShardRouting to do various types of matching with other shard routings, giving control about what exactly should be matched (same shard id, same allocation id, all but version and shard info etc.). This is useful here, but also prepares the grounds for the change needed in #12387 (making ShardRouting.equals be strict and perform exact equality).

Closes #12397
2015-07-24 13:09:47 +02:00
Shay Banon fc90c2affd Cancel replica recovery on another sync option copy found
When a replica is initializing from the primary, and we find a better node that has full sync id match, it is better to cancel the existing replica allocation and allocate it to the new node with sync id match (eventually)
2015-07-24 12:13:03 +02:00
Jay Modi f8d9de8dca Merge pull request #12419 from jaymode/fix_settings_classloader
Copy the classloader from the original settings when checking for prompts
2015-07-23 13:06:09 -04:00
jaymode 8472775477 copy the classloader from the original settings when checking for prompts
Today, when a user provides settings and specifies a classloader to be used, the classloader gets
dropped when we copy the settings to check for prompt entries. This change copies the classloader
when replacing the prompt placeholders and adds a test to ensure the InternalSettingsPreparer
always retains the classloader.

Closes #12340
2015-07-23 12:53:27 -04:00
Jason Tedor 878301c795 Dump stack traces of all threads on test failure due to AssertionError
Closes #12425
2015-07-23 11:29:43 -04:00
Lee Hinman 18079168e4 Add shadow indicator when using shadow replicas 2015-07-23 09:13:54 -06:00
Robert Muir 4b2bda4195 make java.version mandatory for jvm plugins
JarHell has a low level check, but its more of a best effort one,
only checking if X-Compile-Target-JDK is set in the manifest. This
is the case for all lucene- and elasticsearch- generated jars, but
lets just be explicit for plugins.
2015-07-23 10:58:52 -04:00
khiraiwa 38d973751c Interval time is different from the doc value.
I think the value is 30.
2015-07-23 23:58:42 +09:00
Martijn van Groningen cafc7078e2 Removing TransportSingleCustomOperationAction in favour of TransportSingleShardAction to clean up code.
The TransportSingleCustomOperationAction `prefer_local` option has been removed as it isn't worth the effort.
The TransportSingleShardAction will execute the operation on the receiving node if a concrete list doesn't provide a list of candite shards routings to perform the operation on.
2015-07-23 16:42:10 +02:00
Adrien Grand 164d8c1ce2 Fix fielddata handling for the `_parent` field.
Change #12371 broke fielddata on the `_parent` child for indices created before
2.0. This pull request adds back caching of the `_parent` fielddata for indices
created before 2.0 and cleans some related stuff. For instance
DocumentTypeListener doesn't need to take care of removed mappings anymore since
mappings can't be removed in 2.0.
2015-07-23 14:13:21 +02:00
Martijn van Groningen 948da82f90 parent/child field data is an exception to the rule, because it is based on two fields... 2015-07-23 14:00:03 +02:00
Martijn van Groningen 2d775c34c9 field data: If a field doesn't exist in field info then always return a non cached empty atomic reader. 2015-07-23 14:00:03 +02:00
Robert Muir b0d8d5ed52 Merge pull request #12408 from rmuir/adapt_pluginmanager
Adapt pluginmanager to the new world
2015-07-23 07:16:59 -04:00
Robert Muir ea399065ab improve exception messages 2015-07-23 07:16:24 -04:00
Christoph Büscher 3699119272 Remove unused QueryParseContext argument in MappedFieldType#rangeQuery()
The rangeQuery() method in MappedFieldType and some overwriting subtypes takes
a nullable QueryParseContext argument which is unused and can be deleted.
This is also useful for the current query parsing refactoring, since
we want to avoid passing the context object around unnecessarily.
2015-07-23 12:08:02 +02:00
Boaz Leskes 2d19868dd5 Test: await fix on IndicesShardStoreRequestTests.testCorruptedShards 2015-07-23 12:06:06 +02:00
Britta Weber 382daf26e4 Merge pull request #12386 from brwe/shard-active-test
[Test] make cluster state blocking more reliable in IndicesStoreIntegrationTests.indexCleanup()
2015-07-23 11:26:47 +02:00
Britta Weber d78cd66b51 [Test] make cluster state blocking more reliable in IndicesStoreIntegrationTests.indexCleanup()
IndicesStoreIntegrationTests.indexCleanup() tests if the shard files on disk are actually removed
after relocation. In particular it tests the following:
Whenever a node deletes a shard because it was relocated somewhere else, it first
checks if enough other copies are started somewhere else. The node sends a
ShardActiveRequest to the nodes that should have a copy.
The nodes that receive this request check if the shard is in state STARTED in which case
they respond with true. If they have the shard in POST_RECOVERY they register a cluster state
observer that checks at each update if the shard has moved to STARTED and respond with true when
this happens.

To test that the cluster state observer mechanism actually works, the latter can be triggered by
blocking the cluster state processing when a recover starts and only unblocking it shortly
after the node receives the ShardActiveRequest.

This is more reliable than using random cluster state processing delays
because the random delays make it hard to reason about different timeouts
that can be reached.

closes #11989
2015-07-23 11:26:15 +02:00
Shay Banon 33d2ca13a9 Simplify Replica Allocator
Simplify the codebase of replica allocator and add more unit tests for it
2015-07-23 07:47:39 +02:00
Robert Muir ed1642b968 remove obselete zips 2015-07-22 23:52:34 -04:00
Robert Muir b289af290e fix test to not use zips 2015-07-22 23:38:36 -04:00
Robert Muir 6f9a93f6bd complete jar hell checks 2015-07-22 22:19:44 -04:00
Robert Muir ae624acdc3 Use plugin descriptor file to cleanup pluginmanager logic and improve validation 2015-07-22 21:52:36 -04:00
Lee Hinman a33cfe4b11 Revert "Consistently name Groovy scripts with the same content"
This reverts commit d902012835.

Reverting this temporarily to see if this fixes hitting an assert in the
JDK during Groovy's classloading
2015-07-22 11:15:57 -06:00
Robert Muir 4040f194f5 Refactor pluginservice
Closes #12367

Squashed commit of the following:

commit 9453c411798121aa5439c52e95301f60a022ba5f
Merge: 3511a9c 828d8c7
Author: Robert Muir <rmuir@apache.org>
Date:   Wed Jul 22 08:22:41 2015 -0400

    Merge branch 'master' into refactor_pluginservice

commit 3511a9c616503c447de9f0df9b4e9db3e22abd58
Author: Ryan Ernst <ryan@iernst.net>
Date:   Tue Jul 21 21:50:15 2015 -0700

    Remove duplicated constant

commit 4a9b5b4621b0ef2e74c1e017d9c8cf624dd27713
Author: Ryan Ernst <ryan@iernst.net>
Date:   Tue Jul 21 21:01:57 2015 -0700

    Add check that plugin must specify at least site or jvm

commit 19aef2f0596153a549ef4b7f4483694de41e101b
Author: Ryan Ernst <ryan@iernst.net>
Date:   Tue Jul 21 20:52:58 2015 -0700

    Change plugin "plugin" property to "classname"

commit 07ae396f30ed592b7499a086adca72d3f327fe4c
Author: Robert Muir <rmuir@apache.org>
Date:   Tue Jul 21 23:36:05 2015 -0400

    remove test with no methods

commit 550e73bf3d0f94562f4dde95239409dc5a24ce25
Author: Robert Muir <rmuir@apache.org>
Date:   Tue Jul 21 23:31:58 2015 -0400

    fix loading to use classname

commit 04463aed12046da0da5cac2a24c3ace51a79f799
Author: Robert Muir <rmuir@apache.org>
Date:   Tue Jul 21 23:24:19 2015 -0400

    rename to classname

commit 9f3afadd1caf89448c2eb913757036da48758b2d
Author: Ryan Ernst <ryan@iernst.net>
Date:   Tue Jul 21 20:18:46 2015 -0700

    moved PluginInfo and refactored parsing from properties file

commit df63ccc1b8b7cc64d3e59d23f6c8e827825eba87
Author: Robert Muir <rmuir@apache.org>
Date:   Tue Jul 21 23:08:26 2015 -0400

    fix test

commit c7febd844be358707823186a8c7a2d21e37540c9
Author: Robert Muir <rmuir@apache.org>
Date:   Tue Jul 21 23:03:44 2015 -0400

    remove test

commit 017b3410cf9d2b7fca1b8653e6f1ebe2f2519257
Author: Robert Muir <rmuir@apache.org>
Date:   Tue Jul 21 22:58:31 2015 -0400

    fix test

commit c9922938df48041ad43bbb3ed6746f71bc846629
Merge: ad59af4 01ea89a
Author: Robert Muir <rmuir@apache.org>
Date:   Tue Jul 21 22:37:28 2015 -0400

    Merge branch 'master' into refactor_pluginservice

commit ad59af465e1f1ac58897e63e0c25fcce641148a7
Author: Areek Zillur <areek.zillur@elasticsearch.com>
Date:   Tue Jul 21 19:30:26 2015 -0400

    [TEST] Verify expected number of nodes in cluster before issuing shardStores request

commit f0f5a1e087255215b93656550fbc6bd89b8b3205
Author: Lee Hinman <lee@writequit.org>
Date:   Tue Jul 21 11:27:28 2015 -0600

    Ignore EngineClosedException during translog fysnc

    When performing an operation on a primary, the state is captured and the
    operation is performed on the primary shard. The original request is
    then modified to increment the version of the operation as preparation
    for it to be sent to the replicas.

    If the request first fails on the primary during the translog sync
    (because the Engine is already closed due to shadow primaries closing
    the engine on relocation), then the operation is retried on the new primary
    after being modified for the replica shards. It will then fail due to the
    version being incorrect (the document does not yet exist but the request
    expects a version of "1").

    Order of operations:

    - Request is executed against primary
    - Request is modified (version incremented) so it can be sent to replicas
    - Engine's translog is fsync'd if necessary (failing, and throwing an exception)
    - Modified request is retried against new primary

    This change ignores the exception where the engine is already closed
    when syncing the translog (similar to how we ignore exceptions when
    refreshing the shard if the ?refresh=true flag is used).

commit 4ac68bb1658688550ced0c4f479dee6d8b617777
Author: Shay Banon <kimchy@gmail.com>
Date:   Tue Jul 21 22:37:29 2015 +0200

    Replica allocator unit tests
    First batch of unit tests to verify the behavior of replica allocator

commit 94609fc5943c8d85adc751b553847ab4cebe58a3
Author: Jason Tedor <jason@tedor.me>
Date:   Tue Jul 21 14:04:46 2015 -0400

    Correctly list blobs in Azure storage to prevent snapshot corruption and do not unnecessarily duplicate Lucene segments in Azure Storage

    This commit addresses an issue that was leading to snapshot corruption for snapshots stored as blobs in Azure Storage.

    The underlying issue is that in cases when multiple snapshots of an index were taken and persisted into Azure Storage, snapshots subsequent
    to the first would repeatedly overwrite the snapshot files. This issue does render useless all snapshots except the final snapshot.

    The root cause of this is due to String concatenation involving null. In particular, to list all of the blobs in a snapshot directory in
    Azure the code would use the method listBlobsByPrefix where the prefix is null. In the listBlobsByPrefix method, the path keyPath + prefix
    is constructed. However, per 5.1.11, 5.4 and 15.18.1 of the Java Language Specification, the reference null is first converted to the string
    "null" before performing the concatenation. This leads to no blobs being returned and therefore the snapshot mechanism would operate as if
    it were writing the first snapshot of the index. The fix is simply to check if prefix is null and handle the concatenation accordingly.

    Upon fixing this issue so that subsequent snapshots would no longer overwrite earlier snapshots, it was discovered that the snapshot metadata
    returned by the listBlobsByPrefix method was not sufficient for the snapshot layer to detect whether or not the Lucene segments had already
    been copied to the Azure storage layer in an earlier snapshot. This led the snapshot layer to unnecessarily duplicate these Lucene segments
    in Azure Storage.

    The root cause of this is due to known behavior in the CloudBlobContainer.getBlockBlobReference method in the Azure API. Namely, this method
    does not fetch blob attributes from Azure. As such, the lengths of all the blobs appeared to the snapshot layer to be of length zero and
    therefore they would compare as not equal to any new blobs that the snapshot layer is going to persist. To remediate this, the method
    CloudBlockBlob.downloadAttributes must be invoked. This will fetch the attributes from Azure Storage so that a proper comparison of the
    blobs can be performed.

    Closes elastic/elasticsearch-cloud-azure#51, closes elastic/elasticsearch-cloud-azure#99

commit cf1d481ce5dda0a45805e42f3b2e0e1e5d028b9e
Author: Lee Hinman <lee@writequit.org>
Date:   Mon Jul 20 08:41:55 2015 -0600

    Unit tests for `nodesAndVersions` on shared filesystems

    With the `recover_on_any_node` setting, these unit tests check that the
    correct node list and versions are returned.

commit 3c27cc32395c3624f7c794904d9ea4faf2eccbfb
Author: Robert Muir <rmuir@apache.org>
Date:   Tue Jul 21 14:15:59 2015 -0400

    don't fail junit4 integration tests if there are no tests.

    instead fail the failsafe plugin, which means the external cluster will still get shut down

commit 95d2756c5a8c21a157fa844273fc83dfa3c00aea
Author: Alexander Reelsen <alexander@reelsen.net>
Date:   Tue Jul 21 17:16:53 2015 +0200

    Testing: Fix help displaying tests under windows

    The help files are using a unix based file separator, where as
    the test relies on the help being based on the file system separator.

    This commit fixes the test to remove all `\r` characters before
    comparing strings.

    The test has also been moved into its own CliToolTestCase, as it does
    not need to be an integration test.

commit 944f06ea36bd836f007f8eaade8f571d6140aad9
Author: Clinton Gormley <clint@traveljury.com>
Date:   Tue Jul 21 18:04:52 2015 +0200

    Refactored check_license_and_sha.pl to accept a license dir and package path

    In preparation for the move to building the core zip, tar.gz, rpm, and deb as separate modules, refactored check_license_and_sha.pl to:

    * accept a license dir and path to the package to check on the command line
    * to be able to extract zip, tar.gz, deb, and rpm
    * all packages except rpm will work on Windows

commit 2585431e8dfa5c82a2cc5b304cd03eee9bed7a4c
Author: Chris Earle <pickypg@users.noreply.github.com>
Date:   Tue Jul 21 08:35:28 2015 -0700

    Updating breaking changes

    - field names cannot be mapped with `.` in them
    - fixed asciidoc issue where the list was not recognized as a list

commit de299b9d3f4615b12e2226a1e2eff5a38ecaf15f
Author: Shay Banon <kimchy@gmail.com>
Date:   Tue Jul 21 13:27:52 2015 +0200

    Replace primaryPostAllocated flag and use UnassignedInfo
    There is no need to maintain additional state as to if a primary was allocated post api creation on the index routing table, we hold all this information already in the UnassignedInfo class.
    closes #12374

commit 43080bff40f60bedce5bdbc92df302f73aeb9cae
Author: Alexander Reelsen <alexander@reelsen.net>
Date:   Tue Jul 21 15:45:05 2015 +0200

    PluginManager: Fix bin/plugin calls in scripts/bats test

    The release and smoke test python scripts used to install
    plugins in the old fashion.

    Also the BATS testing suite installed/removed plugins in that
    way. Here the marvel tests have been removed, as marvel currently
    does not work with the master branch.

    In addition documentation has been updated as well, where it was
    still missing.

commit b81ccba48993bc13c7678e6d979fd96998499233
Author: Boaz Leskes <b.leskes@gmail.com>
Date:   Tue Jul 21 11:37:50 2015 +0200

    Discovery: make sure NodeJoinController.ElectionCallback is always called from the update cluster state thread

    This is important for correct handling of the joining thread. This causes assertions to trip in our test runs. See http://build-us-00.elastic.co/job/es_g1gc_master_metal/11653/ as an example

    Closes #12372

commit 331853790bf29e34fb248ebc4c1ba585b44f5cab
Author: Boaz Leskes <b.leskes@gmail.com>
Date:   Tue Jul 21 15:54:36 2015 +0200

    Remove left over no commit from TransportReplicationAction

    It asks to double check thread pool rejection. I did and don't see problems with it.

commit e5724931bbc1603e37faa977af4235507f4811f5
Author: Alexander Reelsen <alexander@reelsen.net>
Date:   Tue Jul 21 15:31:57 2015 +0200

    CliTool: Various PluginManager fixes

    The new plugin manager parser was not called correctly in the scripts.
    In addition the plugin manager now creates a plugins/ directory in case
    it does not exist.

    Also the integration tests called the plugin manager in the deprecated way.

commit 7a815a370f83ff12ffb12717ac2fe62571311279
Author: Alexander Reelsen <alexander@reelsen.net>
Date:   Tue Jul 21 13:54:18 2015 +0200

    CLITool: Port PluginManager to use CLITool

    In order to unify the handling and reuse the CLITool infrastructure
    the plugin manager should make use of this as well.

    This obsolets the -i and --install options but requires the user
    to use `install` as the first argument of the CLI.

    This is basically just a port of the existing functionality, which
    is also the reason why this is not a refactoring of the plugin manager,
    which will come in a separate commit.

commit 7f171eba7b71ac5682a355684b6da703ffbfccc7
Author: Martijn van Groningen <martijn.v.groningen@gmail.com>
Date:   Tue Jul 21 10:44:21 2015 +0200

    Remove custom execute local logic in TransportSingleShardAction and TransportInstanceSingleOperationAction and rely on transport service to execute locally. (forking thread etc.)

    Change TransportInstanceSingleOperationAction to have shardActionHandler to, so we can execute locally without endless spinning.

commit 0f38e3eca6b570f74b552e70b4673f47934442e1
Author: Ryan Ernst <ryan@iernst.net>
Date:   Tue Jul 21 17:36:12 2015 -0700

    More readMetadata tests and pickiness

commit 880b47281bd69bd37807e8252934321b089c9f8e
Author: Ryan Ernst <ryan@iernst.net>
Date:   Tue Jul 21 14:42:09 2015 -0700

    Started unit tests for plugin service

commit cd7c8ddd7b8c4f3457824b493bffb19c156c7899
Author: Robert Muir <rmuir@apache.org>
Date:   Tue Jul 21 07:21:07 2015 -0400

    fix tests

commit 673454f0b14f072f66ed70e32110fae4f7aad642
Author: Robert Muir <rmuir@apache.org>
Date:   Tue Jul 21 06:58:25 2015 -0400

    refactor pluginservice
2015-07-22 10:45:45 -04:00
Adrien Grand f8b741d705 Merge pull request #12371 from jpountz/fix/mapper_fielddata_dependency
Remove the dependecy on IndexFielddataService from MapperService.
2015-07-22 14:37:13 +02:00
Britta Weber 828d8c7754 Merge pull request #12328 from alexclare/issue-12327
Fix malformed query generation
2015-07-22 11:55:41 +02:00
Areek Zillur 01ea89acbf [TEST] Verify expected number of nodes in cluster before issuing shardStores request 2015-07-21 19:30:26 -04:00
Lee Hinman c286cd11cf Ignore EngineClosedException during translog fysnc
When performing an operation on a primary, the state is captured and the
operation is performed on the primary shard. The original request is
then modified to increment the version of the operation as preparation
for it to be sent to the replicas.

If the request first fails on the primary during the translog sync
(because the Engine is already closed due to shadow primaries closing
the engine on relocation), then the operation is retried on the new primary
after being modified for the replica shards. It will then fail due to the
version being incorrect (the document does not yet exist but the request
expects a version of "1").

Order of operations:

- Request is executed against primary
- Request is modified (version incremented) so it can be sent to replicas
- Engine's translog is fsync'd if necessary (failing, and throwing an exception)
- Modified request is retried against new primary

This change ignores the exception where the engine is already closed
when syncing the translog (similar to how we ignore exceptions when
refreshing the shard if the ?refresh=true flag is used).
2015-07-21 15:09:40 -06:00
Shay Banon be3e315248 Replica allocator unit tests
First batch of unit tests to verify the behavior of replica allocator
2015-07-21 22:37:40 +02:00
Lee Hinman b230927dbc Unit tests for `nodesAndVersions` on shared filesystems
With the `recover_on_any_node` setting, these unit tests check that the
correct node list and versions are returned.
2015-07-21 14:17:51 -06:00
Alexander Reelsen 988535eb0d Testing: Fix help displaying tests under windows
The help files are using a unix based file separator, where as
the test relies on the help being based on the file system separator.

This commit fixes the test to remove all `\r` characters before
comparing strings.

The test has also been moved into its own CliToolTestCase, as it does
not need to be an integration test.
2015-07-21 18:53:55 +02:00
Shay Banon cd7096dfc2 Replace primaryPostAllocated flag and use UnassignedInfo
There is no need to maintain additional state as to if a primary was allocated post api creation on the index routing table, we hold all this information already in the UnassignedInfo class.
closes #12374
2015-07-21 17:00:07 +02:00
Alexander Reelsen d3e454780f PluginManager: Fix bin/plugin calls in scripts/bats test
The release and smoke test python scripts used to install
plugins in the old fashion.

Also the BATS testing suite installed/removed plugins in that
way. Here the marvel tests have been removed, as marvel currently
does not work with the master branch.

In addition documentation has been updated as well, where it was
still missing.
2015-07-21 16:17:59 +02:00
Boaz Leskes 5def4193e9 Discovery: make sure NodeJoinController.ElectionCallback is always called from the update cluster state thread
This is important for correct handling of the joining thread. This causes assertions to trip in our test runs. See http://build-us-00.elastic.co/job/es_g1gc_master_metal/11653/ as an example

Closes #12372
2015-07-21 16:11:37 +02:00
Boaz Leskes 7adf9929ba Remove left over no commit from TransportReplicationAction
It asks to double check thread pool rejection. I did and don't see problems with it.
2015-07-21 15:54:36 +02:00
Adrien Grand 3fd7a36f91 Remove the dependecy on IndexFielddataService from MapperService.
This dependency was used in order for mapping updates that change the fielddata
format to take effect immediately. And the way it worked was by clearing the
cache of fielddata instances that were already loaded. However, we do not need
to cache the already loaded (logical) fielddata instances, they are cheap to
regenerate. Note that the fielddata _caches_ are still kept around so that we
don't keep on rebuilding costly (physical) fielddata values.
2015-07-21 15:39:58 +02:00
Alexander Reelsen 999d5ab801 CliTool: Various PluginManager fixes
The new plugin manager parser was not called correctly in the scripts.
In addition the plugin manager now creates a plugins/ directory in case
it does not exist.

Also the integration tests called the plugin manager in the deprecated way.
2015-07-21 15:31:57 +02:00
Alexander Reelsen 2f54b89a23 CLITool: Port PluginManager to use CLITool
In order to unify the handling and reuse the CLITool infrastructure
the plugin manager should make use of this as well.

This obsolets the -i and --install options but requires the user
to use `install` as the first argument of the CLI.

This is basically just a port of the existing functionality, which
is also the reason why this is not a refactoring of the plugin manager,
which will come in a separate commit.
2015-07-21 14:15:39 +02:00
Ruflin 3be98927a0 Fix cidr mask conversion issue for 0.0.0.0/0 and add tests 2015-07-21 13:53:16 +02:00
Martijn van Groningen 0cf9c3268c Remove custom execute local logic in TransportSingleShardAction and TransportInstanceSingleOperationAction and rely on transport service to execute locally. (forking thread etc.)
Change TransportInstanceSingleOperationAction to have shardActionHandler to, so we can execute locally without endless spinning.
2015-07-21 13:45:42 +02:00
Alexander Reelsen 95f56d71bd Logging: Corrected potential confusing log message 2015-07-21 11:30:26 +02:00
Ryan Ernst e52a316609 Test: fix tests referring to _index 2015-07-21 01:24:49 -07:00
Ryan Ernst ededbf0c8b Merge pull request #12352 from rjernst/fix/index-name-in-mapper-service
Remove index name from mapping parser
2015-07-21 00:31:38 -07:00
Ryan Ernst 8cd03cce5e Merge branch 'master' into fix/12329 2015-07-21 00:29:34 -07:00
Boaz Leskes bb1318512b Test: move IndicesShardStoreRequestTests to the right package 2015-07-21 09:01:50 +02:00
Boaz Leskes 29c99ff23d Logging: shard store shouldn't log the entire cluster state under trace, but just its version.
If we want the entire CS, we can put the cluster.service on trace
2015-07-21 08:58:50 +02:00
Ryan Ernst 1c99626b84 Mappings: Remove ability to configure _index
The `_index` field is now a completely virtual field thanks
to #12027. It is no longer necessary to index the actual value
of the index name.

closes #12329
2015-07-20 23:54:35 -07:00
Ryan Ernst abcf269539 Remove old DocumentMapper.parse method 2015-07-20 22:37:44 -07:00
Areek Zillur ae750bca69 [TEST] add missing ensureYellow to IndicesShardStoreRequestTests.testBasic 2015-07-20 23:52:07 -04:00
Ryan Ernst 2ad682e8b4 Mappings: Remove index name from mapping parser
The index name was passed along through many levels of mapping parsing,
just so that it could be used for _index. However, the index name
is really metadata that should exist alongside things like type and
id in SourceToParse.

This change moves index name to SourceToParse, and eliminates it from the
DocumentMapperParser.
2015-07-20 17:50:07 -07:00
Robert Muir 052cf1446f Remove Environment.homeFile()
Today we grant read+write+delete access to any files underneath the home.
But we have to remove this, if we want to have improved security of files
underneath elasticsearch.
2015-07-20 20:27:36 -04:00
Martijn van Groningen 4e2bdb67b7 test: enable get field mapping tests 2015-07-20 23:38:47 +02:00
Areek Zillur e964b0c2ab [TEST] use official API to read cluster state and enable debug logging 2015-07-20 17:12:30 -04:00
Boaz Leskes 66e71da7bd Test: testTimeoutCleanup use assertBusy while checking timer queue 2015-07-20 22:38:53 +02:00
Jason Tedor 34155ff102 Merge pull request #12346 from jasontedor/fix/12345
Use time with nanosecond resolution calculated at the executing node to measure the time that contexts are held open
2015-07-20 15:54:54 -04:00
Boaz Leskes 068fae218f Test: testShardActiveElseWhere shouldn't force cluster state publishing
The test is supposed to fool a node, making it think all it's shards are allocated else where. The test verifies the node doesn't delete its shards. The current test submitted this "fake" CS to the master, causing it to published which in turn caused confusion on other nodes and test failures.

 See http://build-us-00.elastic.co/job/es_core_master_oracle_6/990/testReport/junit/org.elasticsearch.indices.store/IndicesStoreIntegrationTests/testShardActiveElseWhere/
2015-07-20 21:16:16 +02:00
Zachary Tong 9951db9c64 [TEST] Better floating point comparisons 2015-07-20 14:46:24 -04:00
Jason Tedor 3af763eb88 Use time with nanosecond resolution calculated at the executing node to measure the time that contexts are held open
Closes #12345
2015-07-20 12:42:13 -04:00
Martijn van Groningen 4c7bb17521 test: increased logging 2015-07-20 17:35:39 +02:00
Robert Muir cd9d1c617f Merge pull request #12344 from rmuir/2.1.16
Update randomizedtesting to 2.1.16
2015-07-20 11:13:57 -04:00
Robert Muir a0a6299840 Update randomizedtesting to 2.1.16 2015-07-20 11:02:50 -04:00
Shay Banon 32445bbc3a Simplify handling of ignored unassigned shards
Fold ignored unassigned to a UnassignedShards and have simpler handling of them. Also remove the trapy way of adding an ignored unassigned shards today directly to the list, and have dedicated methods for it.

This change also removes the useless moving of unassigned shards to the end, since anyhow we first, sort those unassigned shards, and second, we now have persistent "store exceptions" that should not cause "dead letter" shard allocation.
2015-07-20 15:43:31 +02:00
Shay Banon ca3e0c6d49 Initial Refactor Gateway Allocator
Break it into more manageable code by separating allocation primaries and allocating replicas. Start adding basic unit tests for primary shard allocator.
2015-07-20 14:04:24 +02:00
Boaz Leskes 64750fa8bb Test: firstAllocationFailureTwoNodes used hard coded node reference
The test starts two nodes and two shards and expects the primary shard to be allocated on the first node. Very rarely this is not the case.
2015-07-20 12:23:12 +02:00
Boaz Leskes 916466a9be add await fix firstAllocationFailureTwoNodes 2015-07-20 12:04:37 +02:00
Jason Tedor 964a849016 Merge pull request #12331 from jasontedor/feature/12330
Add scroll stats to cat API
2015-07-20 05:23:04 -04:00
Boaz Leskes e40eee557f ThreadPools: schedule a timeout check after adding command to queue
Our thread pools have support for timeout on a task. To support this, a special background task is schedule to run at timeout. That background task fires and check if the main task is still in the executor queue and then cancels it if needed. Currently we schedule this background task before adding the main task to the queue. If the timeout is very small (in tests we often use numbers like 2 ms)  the background task can fire before the main one is added to the queue causing the timeout to be missed.

See http://build-us-00.elastic.co/job/es_g1gc_master_metal/11780/testReport/junit/org.elasticsearch.cluster/ClusterServiceTests/testTimeoutUpdateTask/

Closes #12319
2015-07-20 10:51:03 +02:00
Boaz Leskes 275848eb9b Allocation: use recently added allocation ids for shard started/failed
On top of that:
 1) A relocation target shards' allocation id is changed to include the allocation id of the source shard under relocatingId (similar to shard routing semantics)
 2) The logic around state change for finalize shard relocation is simplified - one simple start the target shard (we previously had unused logic around relocating state)

Closes #12299
2015-07-20 10:31:31 +02:00
Jason Tedor c4778b8e78 Remove unused imports 2015-07-19 14:12:42 -04:00
Jason Tedor 8637784a2a Add scroll stats to cat API
Adds scroll stats at the node, shard and index levels to the cat API.

Closes #12330
2015-07-19 13:41:46 -04:00
Alexander Clare dcd3a2c560 Test behavior of explicit Modifier.NONE 2015-07-19 11:42:12 -04:00
Alexander Clare 4d201d1415 Fix malformed query generation 2015-07-19 00:49:39 -04:00
Robert Muir 6dc5d402fe Merge branch 'master' into maven_run 2015-07-17 15:00:37 -04:00
Tanguy Leroux 468a2b1167 Update license SHA1 file for Netty 3.10.3.Final 2015-07-17 17:51:08 +02:00
Nicholas Knize bc9a4707db [GEO] Update ShapeBuilder and GeoPolygonQueryParser to accept unclosed GeoJSON
While the GeoJSON spec does say a polygon is represented as an array of LinearRings (where a LinearRing is defined as a 'closed' array of points), the coerce parameter provides users with flexibility to have ES automatically close polygons. This addresses situations like those integrated with twitter (where GeoJSON polygons are not closed) such that our users do not have to write extra code to close the polygon. This code change adds the optional coerce parameter to the GeoShapeFieldMapper.

closes #11131
2015-07-17 10:41:27 -05:00
Adrien Grand c483a221b7 Regenerate 1.6.1 and 1.7.1 backward indices to include the `bool` field. 2015-07-17 15:34:26 +02:00
Jason Tedor e379d20ae6 Merge pull request #12211 from jasontedor/features/12149
Add global search timeout setting
2015-07-17 09:23:16 -04:00
Martijn van Groningen ba16dec342 test: added 1.6.1 and 1.7.0 bwcompat indices 2015-07-17 14:29:19 +02:00
Martijn van Groningen 1fc8b429f3 added 1.7.1 and 1.6.2 versions 2015-07-17 13:00:00 +02:00
Boaz Leskes 1b37b48bb0 Tests: removed comment from SearchWhileRelocatingTests 2015-07-17 11:32:36 +02:00
Robert Muir 48bc49c093 Remove broken `exec` build target, replace with something better.
Currently this target is "yet another way" to run elasticsearch,
which we can't maintain. It also has the problem that it doesnt
ensure its running on the latest source code, doesn't configure
any scratch space properly, won't work with securitymanager, list
goes on.

Even if we made it work, it would break every day, since its untested.

Instead, `mvn package -Drun -DskipTests` will run packaging, and then
startup bin/elasticsearch (like integration tests, but in foreground).

It also enables debugger socket on port 8000, for people that like
IDE debuggers and not system.out.println.

Its a little slower to get started because of all the shading/RPM/DEB
building going on in `package` but that is just what it is right now
until that stuff is moved out.
2015-07-17 00:03:33 -04:00
Areek Zillur b7107663d1 [TEST] remove redundant import 2015-07-17 00:01:53 -04:00
Areek Zillur 98fd8d94fe [TEST] take into account when master node is stopped 2015-07-17 00:00:47 -04:00
Ryan Ernst b420c96fda quiet flaky test 2015-07-16 19:27:23 -07:00
Robert Muir b01c17959e fix REPRODUCE WITH for integration tests 2015-07-16 21:45:20 -04:00
Robert Muir 0ed28738ac Merge pull request #12302 from rmuir/junit4_integ
Use junit4 for running integration tests, too
2015-07-16 21:23:10 -04:00
Robert Muir 9e7882e604 protect logic under skipTests for stupid pom packaging 2015-07-16 20:49:16 -04:00
Robert Muir 96a999d2c7 wow maven you suck really bad... 2015-07-16 19:49:54 -04:00
Robert Muir 6b7561ac9a Use junit4 for running integration tests, too
failsafe uses surefire, which sucks. It also mean integ tests act alien right now.
I would rather have the consistency, e.g. things formatted the same way, running integ tests under security manager, etc.
2015-07-16 19:43:33 -04:00
Areek Zillur 7a21d846bb A new `_shard_stores` API provides store information for shard copies of indices.
Store information reports on which nodes shard copies exist, the shard
copy version, indicating how recent they are, and any exceptions
encountered while opening the shard index or from earlier engine failure.

closes #10952
2015-07-16 18:28:07 -04:00
Lee Hinman d902012835 Consistently name Groovy scripts with the same content
When adding a script to the Groovy classloader, the script name is used
as the class identifier in the classloader. This means that in order not
to break JVM Classloader convention, that script must always be
available by that name. As a result, modifying a script with the same
content over and over causes it to be loaded with a different name (due
to the incrementing integer).

This is particularly bad when something like chef or puppet replaces the
on-disk script file with the same content over and over every time a
machine is converged.

This change makes the script name the SHA1 hash of the script itself,
meaning that replacing a script with the same text will use the same
script name.

Resolves #12212
2015-07-16 15:45:33 -06:00
Igor Motov c315d54c2a Fix serialization of IndexFormatTooNewException and IndexFormatTooOldException
This is essentially an ugly hack to get us by until a proper solution is possible with Lucene 5.3

Closes #12277
2015-07-16 12:41:25 -04:00
Alex Ksikes 165ee4ac7f PrefixQueryParser takes a String as value like its Builder
Relates #12032
Closes #12204
2015-07-16 18:25:21 +02:00
Zachary Tong 7367af57cf String.join() is not available pre-Java8 2015-07-16 12:24:36 -04:00
Michael McCandless 42291e3cfd QueryString ignores maxDeterminizedStates when creating a WildcardQuery
This patch backports https://issues.apache.org/jira/browse/LUCENE-6677

Merges 3ede4c469922308d43fba9ebc63e397ffd6997fe from 1.x
2015-07-16 12:21:39 -04:00
Alex Ksikes d0256dac69 RegexpQueryParser takes a String as value like its Builder
Relates #11896
Closes #12200
2015-07-16 17:59:08 +02:00
Zachary Tong 380648ab86 Merge pull request #12280 from polyfractal/bugfix/movavg_validation
Aggregations: Add better validation of moving_avg model settings
2015-07-16 11:44:32 -04:00
Zachary Tong 702f884ba0 Aggregations: Add better validation of moving_avg model settings 2015-07-16 11:41:30 -04:00
Lee Hinman a8391fcae9 Add _replica and _replica_first as search preference.
Just like specifying `?preference=_primary`, this adds the ability to
specify `?preference=_replica` or `?preference=_replica_first` on
requests that support it.

Resolves #12222
2015-07-16 09:25:23 -06:00
Boaz Leskes 439c67ab15 Transport: Tracer should exclude "cluster:monitor/nodes/liveness" by default
This action is a liveness test added in #8763 . It should be excluded, just like the fault detection logic or things become overly chatty.

Closes #12291
2015-07-16 17:23:27 +02:00
Martijn van Groningen 211b4d9083 Merge pull request #12288 from martijnvg/upgrade_groovy
upgrade groovy from 2.4.0 to 2.4.4
2015-07-16 14:40:06 +02:00
Martijn van Groningen 9687670e8d upgraded groovy from 2.4.0 to 2.4.4 2015-07-16 13:56:32 +02:00
Adrien Grand e86ff6785a Do not assert that all shards were successful in tests.
Most of our tests call assertSearchResponse which checks whether all shards
were successful. However this is usually not necessary given that all shards
that received documents should be available given the way our indexing works.
The only shards that might not be available are those that did not index
any documents. So removing this assertion would allow us to remove most
ensureGreen/ensureYellow calls while still being able to assert on the content
of the search response since all data have been taken into account.

For now I only removed the ensureYellow/Green calls from SearchQueryTests in
order to not de-stabilize the build, but eventually we should remove most of
them.
2015-07-16 11:18:55 +02:00
Boaz Leskes f9a7e7cd84 add awaitFix the entire MinimumMasterNodesTests class. multiple tests are failing... 2015-07-16 10:47:18 +02:00
Jason Tedor d1c8703477 Add global search timeout setting
This commit adds a dynamically updatable cluster-level search timeout setting.

Closes #12149
2015-07-15 20:18:16 -05:00
Igor Motov bfbee383bd Add checksum to snapshot metadata files
This commit adds checksum to snapshot files that store global and index based metadata as well as shard information.

Closes #11589
2015-07-15 18:52:56 -04:00
Jay Modi 5091a10f3a Merge pull request #12271 from jaymode/test_zen_port_range
restrict the test unicast zen discovery to the port range of the JVM
2015-07-15 12:38:25 -04:00
Jason Tedor 0820cb66c3 Fix issues due to missing refresh after indexing test documents in SearchStatsTests.testOpenContexts 2015-07-15 11:27:48 -05:00
Simon Willnauer 901421bc14 Merge pull request #12270 from s1monw/publish_s3
Deploy artifacts to S3 as well as sonatype when running a release
2015-07-15 18:11:38 +02:00
jaymode 883d33be95 restrict the test unicast zen discovery to the port range of the JVM
Today, the unicast zen test configuration will try to find a open port starting at the internal test cluster's
base port and continuing for 1000 ports. The internal test cluster class assigns a port range of 100 ports
to each JVM. This means that the unicast zen test configuration will try ports in the range for another JVM
and can lead to port conflicts. This change uses the same value for both so that the unicast configuration
does not go into another JVM's port range.
2015-07-15 11:42:41 -04:00
Simon Willnauer 6faa19c3de Deploy artifacts to S3 as well as sonatype when running a release
This change allows when running a release build with:

```
 mvn -Prelease deploy
```

To deploy all artifacts to S3 as well as to sonatype at the same time.
Both sources will be consistent in terms of content and no further action
is required to publish our artifacts including .rpm, .deb, .zip, .tar.gz, .jar
etc. on to out S3 download service. Albeit this changes the structure of our
downloads to pretty much matching the maven repository layout, this makes
releaseing core as well as the plugins extremely simple. This will allow to
remove most of our python script used for release and it will automatically
allow to release and integrate new modules without further interaction.

This also allows us to bascially streamline our release process on CI such that
CI builds can simply run maven deploy which is all we do during a release.

With this commit only the git related modifications like tagging, version bumping
on our pom files and publishing RPM and .deb in their dedicated repository is left
for the python script.

With this change our artifact are available as follows:

```
http://download.elasticsearch.org/elasticsearch/release/org/elasticsearch/elasticsearch/2.0.0-beta1/elasticsearch-2.0.0-beta1.deb
http://download.elasticsearch.org/elasticsearch/release/org/elasticsearch/elasticsearch/2.0.0-beta1/elasticsearch-2.0.0-beta1.zip
http://download.elasticsearch.org/elasticsearch/release/org/elasticsearch/elasticsearch/2.0.0-beta1/elasticsearch-2.0.0-beta1.rpm
```

Plugins are deployed to URLs like this:

```
http://download.elasticsearch.org/elasticsearch/release/org/elasticsearch/plugin/elasticsearch-analysis-icu/2.0.0-beta1/elasticsearch-analysis-icu-2.0.0-beta1.zip
```

All artifacts like .jar as well as their checksums and gpg signatures are also available next to it.
2015-07-15 17:14:34 +02:00
Shay Banon f78db1f1d3 Unique allocation id
Add a unique allocation id for a shard, helping to uniquely identify a specific allocation taking place to a node.
A special case is relocation, where a transient relocationId is kept around to make sure the target initializing shard (when using RoutingNodes) is using it for its id, and when relocation is done, the transient relocationId becomes the actual id of it.
closes #12242
2015-07-15 17:08:25 +02:00
Lee Hinman eec3095bf6 [TEST] Remove @AwaitsFix from testRamAccountingTermsEnum()
This test has stabilized with recent ES changes.
2015-07-15 08:57:53 -06:00
Boaz Leskes ea3135f580 add await fix to multipleNodesShutdownNonMasterNodes 2015-07-15 16:25:22 +02:00
Lee Hinman 69d0952c68 [TEST] Remove @AwaitsFix from testMemoryBreaker()
Simplifies the test to make it not fail
2015-07-15 08:09:14 -06:00
Shay Banon f8ba89d9e4 Carry over shard exception failure to master node
Don't loose the shard exception failure when sending a shard failrue to the master node
2015-07-15 14:55:04 +02:00
Simon Willnauer cdcfcf4b00 Allow shards to be allocated if leftover shard from different index exists.
If an index name is reused but a leftover shard still exists on any node
we fail repeatedly to allocate the shard since we now check the index UUID
before reusing data. This commit allows to recover even if there is such a
leftover shard by deleting the leftover shard.

Closes #10677
2015-07-15 09:39:15 +02:00
Boaz Leskes 1e35bf3171 Discovery: wait on incoming joins before electing local node as master
During master election each node pings in order to discover other nodes and validate the liveness of existing nodes. Based on this information the node either discovers an existing master or, if enough nodes are found (based on `discovery.zen.minimum_master_nodes>>) a new master will be elected.

Currently, the node that is elected as master will currently update it the cluster state to indicate the result of the election. Other nodes will submit a join request to the newly elected master node. Instead of immediately processing the election result, the elected master
node should wait for the incoming joins from other nodes, thus validating the elections result is properly applied. As soon as enough nodes have sent their joins request (based on the `minimum_master_nodes` settings) the cluster state is modified.

Note that if `minimum_master_nodes` is not set, this change has no effect.

Closes #12161
2015-07-15 07:43:49 +02:00
Igor Motov f2911117ef Add index name to the upgrade exception 2015-07-14 19:05:39 -04:00
Igor Motov 24a93840d5 Add url repository whitelist
Require urls for URL repository to be listed in repositories.url.allowed_urls setting. This change ensures that only authorized URLs can be accessed by elasticsearch
2015-07-14 18:38:26 -04:00
Martijn van Groningen 0af70614ac test: removed AwaitsFix annotation as the associated issue is fixed and the failures don't reproduce any more 2015-07-14 22:50:47 +02:00
Simon Willnauer 3fe48c89cf Merge pull request #12240 from s1monw/m_structured_response
Render structured exceptions in mget / mpercolate
2015-07-14 22:03:20 +02:00
Robert Muir caab1df111 more fine-grained jython hack that also plays with java 9 2015-07-14 15:42:21 -04:00
Martijn van Groningen f5e351aaf1 parent/child: Removed AwaitsFix annotation
Closes #9461
2015-07-14 20:05:35 +02:00
Robert Muir 01601e9a3d Add permissions to all classpath elements in BootstrapForTesting
The previous strategy (target/xxx + .m2/repository) is obviously broken for multi-module
builds.

Includes hack for crazy jython, which "finds its own jar" then looks for a Lib/ beside it
2015-07-14 12:01:03 -04:00
Simon Willnauer def08bd594 Render structured exceptions in mget / mpercolate
Instead of rendering only the exception message this commit
adds structured exception rendering to mget and mpercolate
2015-07-14 17:52:28 +02:00
Simon Willnauer 09bd19b947 Don't allow fuzziness specified as a and require edits [0,2]
Lucene deprecated this in 4.0 and we only try best effort to support it.
Folks should only use edit distance rather than some length based
similarity. Yet the formular is simple enough such that users can
still do it in the client if they really need to.

Closes #10638
2015-07-14 17:10:29 +02:00
Simon Willnauer 738a0bc8a2 [TEST] Don't rely on iteration oder in tests
Closes #12238
2015-07-14 17:08:26 +02:00
Colin Goodheart-Smithe bccfcfa522 Aggregation: Removed Old Script Java API from metrics aggregations
The old script syntax has been removed from the Java API but the metrics aggregations were missed. This change removes the old script API from the ValuesSourceMetricsAggregationBuilder and removes the relevant test methods for the metrics aggregations.
2015-07-14 15:41:11 +01:00
Simon Willnauer 7db293c616 Generify Index and Shard exceptions
Today we have a intermediate hierarchy for shard and index exceptions
which makes it hard to introduce generic exceptions like ResourceNotFoundException
intoduced in this commit. This commit breaks up the hierarchy by adding index and shard
as a special internal header that gets rendered for every exception that fills that header.
This commit removes dedicated exceptions like `IndexMissingException` or
`IndexShardMissingException` in favour of `ResourceNotFoundException`
2015-07-14 16:31:49 +02:00
Shay Banon c6b110c6ef Simplify assignToNode to only do initializing
The method really only should do the move from unassigned to initializing, all the other moves have explicit methods like relocate
2015-07-14 16:05:48 +02:00
Martijn van Groningen 5cdbe60f6b percolator: Support filtering percolator queries by date using `now`
Closes #12185
2015-07-14 12:35:32 +02:00
Shay Banon e598f16b58 Default delayed allocation timeout to 1m from 0
Change the default delayed allocation timeout from 0 (no delayed allocation) to 1m. The value came from a test of having a node with 50 shards being indexed into (so beefy translog requiring flush on shutdown), then shutting it down and starting it back up and waiting for it to join the cluster. This took, on a slow machine, about 30s.
The value is conservatively low and does not try to address a virtual machine / OS restart for now, in order to not have the affect of node going away and users being concerned that shards are not being allocated to the rest of the cluster as a result of that. The setting can always be changed in order to increase the delayed allocation if needed.
closes #12166
2015-07-14 11:31:16 +02:00
Martijn van Groningen 44275f3e3e Merge pull request #12214 from martijnvg/percolator/_parent_field/npe
Fix NPE when percolating a document that has a _parent field configured in its mapping
2015-07-14 10:31:10 +02:00
Martijn van Groningen 7bc26d1edd percolator: Don't throw NPE when percolating a document that has a _parent field configured in its mapping
Closes #12192
2015-07-14 10:01:16 +02:00
Robert Muir 5d48f93557 fail plugins on version mismatch 2015-07-13 21:01:39 -04:00
Boaz Leskes d12fb5f725 Add MetaData.clusterUUID to ClusterState.toXContent
The MetaData.clusterUUID is guaranteed to be unique across clusters and is handy (which may or may not have the same human readable cluster name).

Closes #11832
2015-07-13 20:31:11 +02:00
uboness b40186652c updated the elasticsearch versioning format
Moving to from `X.Y.Z.beta1`/`X.Y.Z.RC1` to `X.Y.Z-beta1`/`X.Y.Z-rc1`
2015-07-13 20:26:37 +02:00
Boaz Leskes 17906ca7d6 Rename MetaData.uuid -> MetaData.clusterUUID and IndexMetaData.uuid-> IndexMetaData.indexUUID
As explained in #11831, we currently have uuid fields on the cluster state, meta data and index metadata. The latter two are persistent across changes are being effectively used as a persistent uuid for this cluster and a persistent uuid for an index. The first (ClusterState.uuid) is ephemeral and changes with every change to the cluster state. This is confusing,

We settled on having the following, new names:

-> ClusterState.uuid -> stateUUID (transient)
-> MetaData.uuid -> clusterUUID (persistent)
-> IndexMetaData.uuid -> indexUUID (persistent).

Closes #11914
Closes #11831
2015-07-13 20:15:54 +02:00
Simon Willnauer 8e07b4fba4 Throw LockObtainFailedException exception when we can lock index directory
Today we throw ElasticsearchException if we can't lock the index. This can cause
problems since some places where we have logic to deal with IOException on shard
deletion won't schedule a retry if we can't lock the index dir for removal. This
is the case on shadow replicas for instance if a shared FS is used. The result
of this is that the delete of an index is never acked.
2015-07-13 17:40:35 +02:00
Alex Ksikes 64f981fc32 Fix rewrite set twice in WildcardQueryParser
Closes #12207
2015-07-13 17:35:50 +02:00
Simon Willnauer 9faa3c6756 [TEST] ensure exceptions won't cause test to hang 2015-07-13 12:29:50 +02:00
Simon Willnauer 2e2bb25205 Only clear open search ctx if the index is delete or closed via API
A change in #12116 introduces closing / cleaning of search ctx even if
the index service was closed due to a relocation of it's last shard. This
is not desired since in that case it's fine to serve the pending requests from
the relocated shard. This commit adds an extra check to ensure that the index is
either removed (delete) or closed via API.
2015-07-13 11:34:34 +02:00
Simon Willnauer ca56d442bc remove dead code 2015-07-13 11:21:35 +02:00
Alexander Reelsen 195c8ec903 Term Query: Be more strict during parsing
The term query parser was too lenient during parsing and allowed to specify
more than one field, even though this expected to filter only for a single field.

This commit returns an exception if a query has been specified more than once.

Closes #12184
2015-07-13 09:59:30 +02:00
aleph-zero aba3730643 jsr166e was left out of shaded jar
The classes in com.twitter.jsr166e were not getting included in the
shaded jar due to a missing configuration line.

Closes #12193
2015-07-11 15:12:23 -07:00
Jack Conradson c1137b3b78 Add script type and script name to error messages
Modified ScriptEngineService to pass in a CompiledScript object
with newly added name and type member variables.
This can in turn be used to give better scripting error messages
with the type of script used and the name of the script.

Required slight modifications to the caching mechanism.

Note that this does not enforce good behavior in that plugins will
have to write exceptions that also output the name of the script
in order to be effective. There was no way to wrap the script
methods in a try/catch block properly further up the chain because
many have script-like objects passed back that can be run at a
later time.

closes #6653
closes #11449
2015-07-10 18:27:48 -07:00
Zachary Tong bb9c160855 Merge pull request #11196 from polyfractal/feature/aggs_2_0_diff
Aggregations: add serial differencing pipeline aggregation
2015-07-10 18:26:19 -04:00
Zachary Tong e3f9d561e4 Aggregations: add serial differencing pipeline aggregation 2015-07-10 18:22:01 -04:00
Jay Modi c9042a5d2c Merge pull request #11890 from jaymode/cors
change CORS allow origin default to allow no origins
2015-07-10 14:48:26 -04:00
Martijn van Groningen 03148dc3b0 change visibility 2015-07-10 17:42:53 +02:00
Martijn van Groningen 512239041b fix npe 2015-07-10 17:12:51 +02:00
Martijn van Groningen 9eb11267f5 Merge pull request #12150 from martijnvg/aliases/remove_strict_filter_parsing
Don't require fields in alias filters to exist in the mapping
2015-07-10 16:50:51 +02:00
Martijn van Groningen 52859e3a52 Internal: refactored MetaData to split the concrete index name resolution to IndexNameExpressionResolver.
Changes in a nutshell:
* All expression logic is now encapsulated by ExpressionResolver interface.
* MetaData#convertFromWildcards() gets replaced by WildcardExpressionResolver.
* All of the indices expansion methods are being moved from MetaData class to the new IndexNameExpressionResolver class.
* All single index expansion optimisations are removed.

The logic for resolving a concrete index name from an expression has been moved from MetaData to IndexExpressionResolver. The logic has been cleaned up and simplified were was possible without breaking bwc.

Also the notion of aliasOrIndex has been changed to index expression.

The IndexNameExpressionResolver translates index name expressions into concrete indices. The list of index name expressions are first delegated to the known ExpressionResolverS. An ExpressionResolver is responsible for translating if possible an expression into another expression (possibly but not required this can be concrete indices or aliases) otherwise the expressions are left untouched. Concretely this means converting wildcard expressions into concrete indices or aliases, but in the future other implementations could convert expressions based on different rules.

To prevent many overloading of methods, DocumentRequest extends now from IndicesRequest. All implementation of DocumentRequest already did implement IndicesRequest indirectly.
2015-07-10 15:18:28 +02:00
Simon Willnauer 75a51ede24 Allow rpm to be build as part of package phase
This allows the creation of the RPM artifact as part of the
maven package phase. The result of this is that we get checksum and
name correction for-free as it's all build an installed into the m2
repository. This also publishes the RPM together with .deb to the mvn
mirror.

Note: this will only build the RPM as part of the package phase if
`-Dpackage.rpm=true` since the binaries to build the RPM are not
availabel on all platforms.
2015-07-10 14:43:47 +02:00
Simon Willnauer 164212940b Free all pending search contexts if index is closed or removed
Today we only clear search contexts for deleted indies. Yet, we should
do the same for closed indices to ensure they can be reopened quickly.

Closes #12116
2015-07-10 14:27:53 +02:00
Colin Goodheart-Smithe fcf8d2408f Aggregations: Adds new script API to ValuesSourceMetricsAggregationBuilder
A method for the new Script API were missing in the ValuesSourceMetricsAggregationBuilder. This change adds the missing method and deprecates the old Script API methods
2015-07-10 13:09:31 +01:00
szroland 2c453820e4 Treat path object as a simple value objects instead of Iterable in XContentBuilder, using toString() to create String representation.
This addresses #11771
2015-07-10 10:55:43 +02:00
David Pilato 7c3ea748e2 [test] list of plugins should have well-defined order
We now return list of plugins sorted by name.

Closes #12174.
2015-07-10 10:25:15 +02:00
Boaz Leskes 28090b3d73 Allocation: Shard Started messages should be matched using an exact match
When a node sends a shard started message to the master, the master goes through the routing table looking for the shard to start. At the moment we validate the indexUUID, the node the shard is assigned to and the fact that the shard is initializing. This check goes wrong if a relocating replica shard finishes recovery just at the moment the source node  leaves the cluster. In this case the master will cancel the recovery and will likely assign a new initializing replica to the same target node. In this case the message from the relocation recovery can activate the new replica wrongfully.

Also, the logic for decided whether an incoming shard started message will be applied was split between ShardStateAction and the AllocationService.
This commit does the following:
1) Let ShardStateAction only filter basic stuff like index existence and indexUUID.
2) Move the trickier shard started matching logic to the AllocationService and make it stricter
3) Unify ShardStateAction filtering logic for both shard started and shard failed.
4) Add unit tests for all of the above.

For an example test failure see: http://build-us-00.elastic.co/job/es_core_16_centos/388/

Closes #11999
2015-07-10 08:49:31 +03:00
Robert Muir 5b4e86389c fix broken usage of path api 2015-07-10 01:02:13 -04:00
Simon Willnauer 0ea9adb284 [TEST] Assert against minCompatVersion instead of a static string 2015-07-09 21:47:17 +02:00
Ryan Ernst 59d6e59dec silence symlink test on windows 2015-07-09 12:41:48 -07:00
Simon Willnauer e0708813a9 Make 2.0.0.beta1-SNAPSHOT the current version.
Today everything is tight to having the next version as the latest.
In order to work towards 2.0.0.beta1 we need to fix all the usage of
2.0.0-SNAPSHOT to reflect the version we will release soon.
Usually we do this on the release branch but to simplify things I wanna
keep this on master for now and move to 2.1.0-SNAPSHOT on master once
we created a 2.0 branch.

Closes #12148
2015-07-09 21:24:32 +02:00
Igor Motov f303a1d4eb Snapshot info should contain version of elasticsearch that created the snapshot
This information was stored with the snapshot but wasn't available on the interface. Knowing the version of elasticsearch that created the snapshot can be useful to determine the minimal version of the cluster that is required in order to restore this snapshot.

Closes #11980
2015-07-09 12:02:33 -04:00
jaymode ee30cf32ab strip elasticsearch- and es- from any plugin name
#12158 only partially fixed #12143 by removing the prefix from official plugin names. This change
removes the prefixes from any plugin names.
2015-07-09 11:50:41 -04:00
jaymode 3fd9f4b82e remove elasticsearch- from name of official plugins
This change fixes the plugin manager to trim `elasticsearch-` and `es-` prefixes from plugin names
for our official plugins. This restores the old behavior prior to #11805.

Closes #12143
2015-07-09 11:09:12 -04:00
Robert Muir dfbe108902 Fix pluginmanager permissions for bin/ scripts
Today it will remove all permissions and only set execute bit:

    ---x--x--x

Instead we should preserve existing permissions, and just add
read and execute to whatever is there.

Closes #12142
2015-07-09 10:39:58 -04:00
jaymode a3e30a89a7 allow settings to be passed to client for external test cluster
This change allows custom settings to be passed to the client for the external test cluster,
which is necessary when additional settings need to be passed to the client in order to
properly communicate with the external test cluster.
2015-07-09 09:27:47 -04:00
Adrien Grand e406baf59e Merge pull request #11800 from arcz/master
Fix indentation in deb init script
2015-07-09 15:07:42 +02:00
Martijn van Groningen e39b6a5689 aliases: Don't require fields used in alias filters to exist 2015-07-09 12:02:49 +02:00
Martijn van Groningen 86f362699e test: make sure the inner hits are in the expected order 2015-07-09 11:56:23 +02:00
Shay Banon 8a52a362dd Merge pull request #12147 from kimchy/remove_double_elect
Remove double call to elect primaries
2015-07-09 11:44:17 +02:00
Shay Banon 72dc9c5b4f Remove double call to elect primaries
There is no need to call the elect logic twice, we used to need it, but no longer since we handle dangling replicas for unassigned primaries properly
2015-07-09 11:29:41 +02:00
Martijn van Groningen 5f6623c03b inner_hits: Properly support named queries for both nested and parent child inner hits.
Before inner_hits existed named queries has support to also verify if inner queries of nested query matched with returned documents. This logic was broken and became obsolete from the moment inner hits get released. #10694 fixed named queries for nested docs in the top_hits agg, but it didn't fix the named query support for nested inner hits. This commit fixes that and on top of this also adds support for parent/child inner hits.
2015-07-09 10:19:03 +02:00
Adrien Grand 8a44d938d4 [TEST] Add missing ensureYellow() calls to SearchQueryTests. 2015-07-09 09:10:29 +02:00
Adrien Grand f82b5ce201 Merge pull request #12127 from jpountz/fix/sort_merge
Clean up handling of missing values when merging shard results on the coordinating node.
2015-07-09 08:55:52 +02:00
Israel Ekpo ee73056970 BulkRequestBuilder.add() has typo in JavaDoc.
Closes #12138
2015-07-08 22:34:12 -04:00
Zachary Tong 1504b3d97d Fix value of HoltWinters seasonality param in builder
Should be `type`, not `seasonalityType`
2015-07-08 18:56:29 -04:00
Zachary Tong 531b894b5d [TESTS] Fix bad math in moving_avg unit tests 2015-07-08 18:04:36 -04:00
Zachary Tong d5f73ec8ac Merge pull request #11881 from polyfractal/feature/movavg_optim2
Aggregations: add cost minimizer to tune moving_avg parameters
2015-07-08 16:45:24 -04:00
Zachary Tong 0f76e656dd Aggregations: add cost minimizer to moving_avg aggregation 2015-07-08 16:20:34 -04:00
Igor Motov 8692292d0c Add validation of snapshot FileInfo during parsing
Making sure that the file info that we read from the snapshot is still sane.
2015-07-08 15:09:43 -04:00
jaymode ae1ed34355 do not prompt for node name twice
We allow setting the node's name a few different ways: the `name` system
property, the setting `name`, and the setting `node.name`. There is an order
of preference to these settings that gets applied, which can copy values from the
system property or `node.name` setting to the `name` setting. When setting
only `node.name` to one of the prompt placeholders, the user would be
prompted twice as the value of `node.name` is copied to `name` prior to
prompting for input. Additionally, the value entered by the user for `node.name`
would not be used and only the value entered for `name` would be used.

This fix changes the behavior to only prompt once when `node.name is set` and
`name` is not set. This is accomplished by waiting until all values have been
prompted and replaced, then the logic for determining the node's name is
executed.

Closes #11564
2015-07-08 14:03:58 -04:00
Adrien Grand ccbea2e5d2 Fix parsing of the `fields` parameter of bulk requests. 2015-07-08 19:55:24 +02:00
Igor Motov 0187508f70 The test getSwap in OsProbeTests shouldn't fail on a machine with no swap
In some cases the swap size can be reported as 0.
2015-07-08 13:34:38 -04:00
William Webber 6b40169b59 Only load term statistics if required 2015-07-08 18:43:08 +02:00
Jason Tedor b61709c716 Add support for retrieving fields in bulk updates
This commit adds support to retrieve fields when using the bulk update API. This functionality was previously available for the update API
but not for the bulk update API.

Closes #11527
2015-07-08 12:06:20 -04:00
Ryan Ernst df41d0c3ba Merge pull request #12130 from rjernst/fix/doc-mapper-in-engine
Remove mapper references from Engines
2015-07-08 08:58:27 -07:00
Tanguy Leroux 19e348a82c Update OS stats 2015-07-08 17:48:10 +02:00
Ryan Ernst 8696a81a8e Internal: Remove mapper references from Engines
This was previously necessary with MapperAnalyzer, but there are no more uses.
2015-07-08 08:45:11 -07:00
Adrien Grand da5fa6c4f3 Minor fixes to the `match` query.
Fixed documentation since the default rewrite method for fuzzy queries is to
select top terms, fixed usage of the fuzzy rewrite method, and removed unused
`rewrite` parameter.

Close #6932
2015-07-08 16:51:41 +02:00
Adrien Grand 8238f497d8 Expose Lucene's new TopTermsBlendedFreqScoringRewrite.
This rewrite method is interesting because it computes scores as if all terms
had the same frequencies, which avoids disappointments with ranking when a fuzzy
query ranks typos first given that they are less frequent than the correct term.
2015-07-08 16:01:47 +02:00
Tanguy Leroux 1c5d8efd47 Process Stats: remove sigar specific stats from APIs and add JMX implementation 2015-07-08 15:12:45 +02:00
Adrien Grand fbab48e451 Clean up handling of missing values when merging shard results on the coordinating node.
Today shards are responsible for producing one sort value per document, which
is later used on the coordinating node to resolve the global top documents.
However, this is problematic on string fields with
`missing: _first, order: desc` or `missing: _last, order: asc` given that there
is no such thing as a string that compares greater than any other string. Today
we use a string containing a single code point which is the maximum allowed code
point but this is a hack: instead we should inform the coordinating node that
the document had no value and let it figure out how it should be sorted
depending on whether missing values should be sorted first or last.

Close #9155
2015-07-08 14:48:35 +02:00
Simon Willnauer f9a45fd605 Cleanup ShardRoutingState uses and hide implementation details of ClusterInfo 2015-07-08 14:36:26 +02:00
Shay Banon 097b132238 Consolidate ShardRouting construction
Simplify and consolidate ShardRouting construction. Make sure that there is really only one place it gets created, when a shard is first created in unassigned state, and from there on, it is either copy constructed or built internally as a target for relocation.
This change helps make sure within our codebase data carries over by the ShardRouting is not lost as the shard goes through transitions, and can help simplify the addition of more data on it (like uuid).
For testing, a centralized TestShardRouting allows to create testable versions of ShardRouting, that are not needed to be as strict as the non test codebase. This can be cleanup more later on, but it is a good start.
closes #12125
2015-07-08 14:15:28 +02:00