Commit Graph

2715 Commits

Author SHA1 Message Date
Adrien Grand 7674f1edd4 Use Locale.ROOT by default to parse dates instead of the system locale.
Closes #3852.
2013-10-11 09:01:39 +02:00
Simon Willnauer 285f165100 Allow 'index.compound_on_flush' to be dyncamically changed 2013-10-10 19:01:32 +02:00
Martijn van Groningen 6163c7d8e5 Serialization improvement 2013-10-10 17:07:31 +02:00
Martijn van Groningen 1792bd6b16 Fixed serialization error. POST_RECOVERY is now also serialized 2013-10-10 16:15:33 +02:00
Simon Willnauer ec809200f0 Add Random MergePolicy via index templates in integration tests
This commit adds support for random merge policies set for every
index created in an AbstractIntegrationTest. It will either set
'logbyte', 'logdoc' or 'tiered' merge policy as well as a random
value for compound files.
2013-10-10 15:12:35 +02:00
Martijn van Groningen ec6539df37 In the delete by query also acquire a searcher when shard state is RECOVERING and POST_RECOVERING 2013-10-10 14:02:33 +02:00
Simon Willnauer e14e2a6597 Added IndexRequest#source(Object...) input validation
Added checks to IndexRequest#source(Object...) to ensure and even number
of parameters. This method otherwise throws an AIOOBException which is
confusing to users and doesn't report the root cause of the problem.
2013-10-10 11:16:39 +02:00
Martijn van Groningen d5a1eb3758 moved AwaitsFix to class level 2013-10-10 10:29:39 +02:00
Boaz Leskes 2cd1f53f69 Added an AwaitsFix to testDeleteAllOneIndex. Martijn is on it. 2013-10-10 08:52:11 +02:00
Simon Willnauer 15b4d70298 Add AssertingTransport that deploys basic BW-Compat serialization checks 2013-10-09 18:27:26 +02:00
Simon Willnauer a15f149dc6 Fix GetIndexTemlatesRequest if serialized with includeAll and a old ES version 2013-10-09 18:26:26 +02:00
Adrien Grand 4fa8f6f61f Doc values integration.
This commit allows for using Lucene doc values as a backend for field data,
moving the cost of building field data from the refresh operation to indexing.
In addition, Lucene doc values can be stored on disk (partially, or even
entirely), so that memory management is done at the operating system level
(file-system cache) instead of the JVM, avoiding long pauses during major
collections due to large heaps.

So far doc values are supported on numeric types and non-analyzed strings
(index:no or index:not_analyzed). Under the hood, it uses SORTED_SET doc values
which is the only type to support multi-valued fields. Since the field data API
set is a bit wider than the doc values API set, some operations are not
supported:
 - field data filtering: this will fail if doc values are enabled,
 - field data cache clearing, even for memory-based doc values formats,
 - getting the memory usage for a specific field,
 - knowing whether a field is actually multi-valued.

This commit also allows for configuring doc-values formats on a per-field basis
similarly to postings formats. In particular the doc values format of the
_version field can be configured through its own field mapper (it used to be
handled in UidFieldMapper previously).

Closes #3806
2013-10-09 16:34:30 +02:00
Luca Cavanna 897084d5c2 Added QueryBuilders#fuzzyQuery method that accepts value parameter as an object
Fixed javadocs

Closes #3616
2013-10-09 11:35:31 +02:00
Martijn van Groningen 1f117c194c Support the `has_child`, `has_parent`, `top_children` queries (and filters) in other apis than just search api. The queries are also now supported in count, explain (return dummy explination) and delete by query apis.
Migrate SearchContext.Rewrite to Releasable. All the parent child queries are now implemented as Lucene queries and the state is kept in the Weight.
Completely disable caching for `has_child` and `has_parent` filters, this has never worked and it also can also never work. The matching docIds are cached per segment while the collection of parent ids is top level.

Closes #3822
2013-10-09 10:20:23 +02:00
Ben McCann 7953eed36a Fix comment grammar 2013-10-09 10:04:37 +02:00
Adrien Grand 97958ed02a Improved warm-up of new segments.
* Merged segments are now warmed-up at the end of the merge operation instead
  of _refresh, so that _refresh doesn't pay the price for the warm-up of merged
  segments, which is often higher than flushed segments because of their size.
* Even when no _warmer is registered, some basic warm-up of the segments is
  performed: norms, doc values (_version). This should help a bit people who
  forget to register warmers.
* Eager loading support for the parent id cache and field data: when one
  can't predict what terms will be present in the index, it is tempting to use
  a match_all query in a warmer, but in that case, query execution might not be
  much faster than field data loading so having a warmer that only loads field
  data without running a query can be useful.

Closes #3819
2013-10-08 23:06:55 +02:00
David Pilato 88a2f54dfe plugin -remove deletes bin directory
Adding test for #3847.
2013-10-08 16:19:10 +02:00
David Pilato 4ee7f3521f plugin -remove deletes bin directory
I tried to install a plugin directly from disk, but used the wrong arguments. Totally my fault for not RTFM properly.

However, by following the instructions printed out by `bin/plugin`, I ended up deleting my $ES/bin directory.

```
$ pwd
/tmp/elasticsearch-0.90.5
$ ls
LICENSE.txt    NOTICE.txt     README.textile bin            config         lib
$ bin/plugin --install file:///tmp/foo.zip
-> Installing file:///tmp/foo.zip...
Failed to install file:///tmp/foo.zip, reason: plugin directory /tmp/elasticsearch-0.90.5/plugins already exists. To update the plugin, uninstall it first using -remove file:///tmp/foo.zip command
$ bin/plugin -remove file:///tmp/foo.zip
-> Removing file:///tmp/foo.zip
Removed file:///tmp/foo.zip
$ ls
LICENSE.txt    NOTICE.txt     README.textile config         lib
```

I reproduced the problem in 0.90.5 and the latest master.
Closes #3847.
2013-10-08 15:52:59 +02:00
Adrien Grand 6b02611971 Update Lucene to version 4.5.0. 2013-10-08 15:44:03 +02:00
Boaz Leskes a10c195667 Add FieldMappers before adding Mappers (used for parsing) and while holding the relevant's ObjectMapper mutex
Adding the mappers first could cause the wrong FieldMappers to be used during object parsing

Also:
Removed MergeContext.newFieldMappers, MergeContext.newObjectMappers and relatives as they are not used anymore.
Similarly removed MergeContext.addFieldDataChange & fieldMapperChanges as they were not used.

Closes #3844
2013-10-08 09:51:33 +02:00
Alexander Reelsen a03013ea25 Remove @Required annotation
The @Required annotation is used for documentation purposes only anyway.
2013-10-07 17:25:18 +02:00
Alexander Reelsen abcf8fc0f7 Improve exception handling for river startup
Due to a change in 0.90 some exceptions may show up when starting a river,
even though this is not a problem as the shard has not been initialized
yet and a retry is scheduled.
2013-10-07 17:02:24 +02:00
Alexander Reelsen 19099ab3da Rejecting invalid fields inside of completion field
Only valid fields (input, output, weight and payload) are now allowed inside a completion field.
This makes sure that typos like "inputs" are caught on indexing.
2013-10-07 15:08:52 +02:00
Shay Banon e9d9ade10f Better logic ignoring filters when parsing
When parsing a filter, we effectively have a case where we need to ignore a filter. For example, when an "and" filter has no elements. Ignoring a filter is different compared to matching on all or matching on none, because an and filter with no elements should simply be ignored in the context of a bool filter for example, regardless if its used within a must or a must_not filter.

We should be consistent in our codebase when handling these use case. See also #3809

closes #3838
2013-10-07 11:12:47 +02:00
Shay Banon 1af38cf3f3 use the already used constant for match no filter 2013-10-07 09:56:49 +02:00
Simon Willnauer f73241ea79 Disable ConcurrentDynamicTemplateTests for now 2013-10-06 09:20:05 +02:00
Simon Willnauer 89f8b13e78 Add simple test for delete by field query 2013-10-05 17:41:06 +02:00
Simon Willnauer c947a0e6f4 fix typo - s/Deprected/Deprecated 2013-10-05 17:28:30 +02:00
Simon Willnauer e82437754b Warn users with IAE if pos_inc is disabled in 'stop' filter 2013-10-05 17:24:34 +02:00
Martijn van Groningen 427bc13272 Also clear handlesText 2013-10-03 23:57:11 +02:00
Martijn van Groningen 088e05b368 Migrate from Trove to Hppc. 2013-10-03 23:10:57 +02:00
Shay Banon 373e64b3eb improve thread pool rejection message 2013-10-03 07:42:09 -07:00
uboness c29f5afa79 added javadocs for builder and cleaned up support for `shard_size` on terms & terms_stats facets 2013-10-02 22:32:32 +02:00
uboness f3c6108b71 introduced support for "shard_size" for terms & terms_stats facets. The "shard_size" is the number of term entries each shard will send back to the coordinating node. "shard_size" > "size" will increase the accuracy (both in terms of the counts associated with each term and the terms that will actually be returned the user) - of course, the higher "shard_size" is, the more expensive the processing becomes as bigger queues are maintained on a shard level and larger lists are streamed back from the shards.
closes #3821
2013-10-02 22:02:00 +02:00
Nik Everett 6b000d8c6d Support specifing score query on highlight.
This is useful if you want to highlight terms not in the search query or
you want sort highlighted snippets based on another query.

Closes #3630
2013-10-02 15:46:24 -04:00
Simon Willnauer 9e7b3963d8 Return source string instead of calling an infinite recursive loop 2013-10-02 20:20:09 +02:00
Boaz Leskes 268e561287 Introduced shardStats on InternalIndicesService to expose shard level statistics.
Added a load_average_format=array|hash param to OsStats to allow serializing load averages into a hash (with keys 1m,5m, 15m).
Added node_info_format to NodeStats, allowing to suppress node info output
2013-10-02 11:15:18 +02:00
Martijn van Groningen 23c035da35 Use simple class name as cluster name 2013-10-02 10:36:37 +02:00
Simon Willnauer 9976f6b9aa Make testcase more reproducible 2013-10-01 17:32:20 +02:00
Boaz Leskes f747704249 Allow dynamic templates with match_mapping_type but no path_match or match.
As long as we have some selector we're good.

Closes #3814
2013-10-01 17:03:31 +02:00
Britta Weber f91fd3b9ed fix term vector api for missing payloads 2013-10-01 16:33:06 +02:00
Simon Willnauer f8a129961e s/Exception/Throwable 2013-10-01 15:58:28 +02:00
Simon Willnauer f3b6339ad1 Add more debug info to testcase 2013-10-01 15:58:28 +02:00
Simon Willnauer e826cfa494 StreamTests only work on 64Bit JVMs
32bit JVMs have different buffer grow behavior. We simply ingore this
since it's a lucene feature that is tested in the upstream project.
2013-10-01 15:58:28 +02:00
Boaz Leskes 4ddfe89bdb Improved index template tests, among other to test for getting all templates by not specifying a name. 2013-10-01 15:09:56 +02:00
Boaz Leskes b5ae1fb51b Calling `GET _template` gave a 500 error back.
Also:
We always return a valid json back
If there are no templates define we return 200 OK ( as opposed to a request for a specific template id which returns 404)

Closes #3812
2013-10-01 14:20:02 +02:00
Simon Willnauer 20423a43e7 Throw ESIA if required field 'patterns' is not present in filter config.
If 'pattern_capture' tokenfilter is create / mapped without a 'patterns'
settings we now throw an exception since this is a misconfiguration and
likely due to the similar settings on related token filters.

Closes #3808
2013-09-30 20:28:40 +02:00
Simon Willnauer 9cb55138c7 Cut over remaining tests to 'AbstractIntegrationTest' 2013-09-30 16:07:09 +02:00
Simon Willnauer 8b69035fa0 Catch EsRejectedExecException on cluster info reschedule 2013-09-30 16:03:37 +02:00
Shay Banon 9787562d27 catch indices lifecycle failures and log them
make sure we catch index/shard lifecycle failures, and properly log them
2013-09-30 13:39:20 +02:00
Simon Willnauer 1f906804ff Catch RejectedExceutionException in ZenPing et al.
If nodes are shutting down we close thread pools and throw
'EsRejectedExcutionException'. This commit handles these exceptions
gracefully if throw during Ping execution.
2013-09-30 11:10:54 +02:00
Shay Banon 6b6a468327 serialize timestamp on the response 2013-09-30 10:54:30 +02:00
Shay Banon 62a09fd207 additional places not to do field conversions 2013-09-30 10:39:14 +02:00
Simon Willnauer ea3ec926c9 Move Mock Store impls to test package 2013-09-28 22:16:34 +02:00
Simon Willnauer 6c54e030d4 Expose several options from MockDirWrapper via index settings
Index settings can now override default behavior for 'double write'
and 'no delete open files' on MockDirectoryWrapper if tests use these
options in a legit. way. ie. in a restore situation a double write
is a legit operation.
2013-09-28 22:05:22 +02:00
Simon Willnauer 831c3fabc6 cleanup testcase 2013-09-28 20:36:15 +02:00
Boaz Leskes 2f0271062a added a ToXContent implementation to NodeStats 2013-09-27 17:08:34 +02:00
Alexander Reelsen a18f47e62e Returning useful exception when sorting on a completion field
Closes #3747
2013-09-27 16:45:23 +02:00
uboness 4aa315974b introduced NodeSettingsSource in the test infrastructure os tests with scopes TEST & SUITE without an explicit numNodes definitions will fall back on the nodeSettings(int) callback 2013-09-27 16:09:36 +02:00
Boaz Leskes 1d7e20b712 Add indexUUID to mapping-updated and mapping-refresh events and make sure they are applied to an index with same UUID.
This can go wrong if indices with the same name are repeatably created and deleted.

UUIDs can not be null anymore. If UUID is not available `_na_` will be used as a value.

Also - some minor clean up in ShardStateAction where shard started events could be added twice to the to-be-applied list where the second instance will be ignored.

Closes #3783
2013-09-27 14:42:12 +02:00
Shay Banon 40aebfaf57 remove unused class 2013-09-27 10:10:08 +02:00
Boaz Leskes b66f3c6834 Send the update-mapping events before actually indexing into the shard, because the latter may generate exceptions (like when the shard is not yet ready to accept new docs).
Also improved the SimpleDeleteMappingTest, as it make take a while until the update-mapping event is processed.

Closes #3782
2013-09-26 14:37:12 +02:00
Shay Banon 48ca7b874d use the event cluster state to send events back to master
instead of relying on the current cluster state from the cluster service, make sure to rely on the cluster state we get from the change event, this will allow us to move processing of the cluster event around potentially to before the local cluster state has been updated
2013-09-26 14:04:59 +02:00
Bernhard K. Weisshuhn 93a2742c84 do not silently fail on plugin install with source files 2013-09-26 12:24:07 +02:00
Simon Willnauer 63fdbe9b9b Add more debug info to SimpleDeleteMappingTests 2013-09-25 23:56:38 +02:00
Boaz Leskes 1644444a4f Introduced an index UUID which is added to the index's settings upon creation. Used that UUID to verify old and delayed shard started/failed events are not applied to newer indexes with the same name.
Also, exceptions while processing batched events do not stop the rest of the events from being processed.

Closes #3778
2013-09-25 19:26:05 +02:00
Shay Banon 35990f572b fix to compile under 1.6 2013-09-25 18:02:13 +02:00
Simon Willnauer 500469fd28 Improve EngineSearcher tracking
Currently we fail tests is any searcher reference is pending. Yet,
on a slow machine the freeContext calls that are async could still be
in flight so if there are pending searchers we wait for a bit to make
sure we don't fail if a freeContext call is in flight.
The MockEngine now also contains the stack trace of the first close call
if a searcher is closed twice.
2013-09-25 14:18:34 +02:00
Shay Banon 57d6944f0f add assert to make sure we fix NamedAnalyzer when upgrading to Lucene 4.5 2013-09-25 13:38:45 +02:00
Simon Willnauer a958d2e4fd Added test for DateHistogram#factor
DateHistogramFacets can be used on fields that store dates in a numeric
(long) field using different resolutions like seconds instead of
milliseconds. This commit adds a test that checks if the factor is
applied correctly to scale it up to milliseconds.
2013-09-25 09:36:12 +02:00
Shay Banon 3772201845 add awaitfix on search while relocation with 0 replicas 2013-09-24 17:50:24 +02:00
Simon Willnauer df0112358d Acquire ReadLock before reading SegmentInfos in RobinEngine
Before reading segmentinfos we should aquire the read lock to prevent
reading the segment infos on an already closed robin engine.
2013-09-24 15:55:48 +02:00
Shay Banon 5b1f263569 add origin to failure message 2013-09-24 15:52:13 +02:00
Shay Banon 397f442c6d Introduce internal post recovery state
Introduce a new internal, index shard level, post recovery state, where the shard moves to when its done with recovery. The shard will now move to started only once the cluster state with its respective cluster state level state is started.

This change allow to have more fine grained control over when to allow reads on a shard, resolving potential refresh temporal visibility aspects while indexing and issuign a refresh. By only allowing reads on started shards, and making sure we refresh right before we move to started
2013-09-24 15:38:12 +02:00
Boaz Leskes 10de3a7ecb Moved RecoverAfterNodesTests to inherit from AbstractIntegrationTest 2013-09-24 14:32:41 +02:00
Shay Banon 0422f75c8d improve search while relocation
- add verification phase at the end of the test
- add explicit test for 0 replicas and 1 replica
2013-09-24 13:10:41 +02:00
Shay Banon 4370dfed76 Update Operation might hang (rarely) when retrying on invalid shard state
The retry logic when failing does not reset the operation started flag...
closes #3769
2013-09-24 13:01:45 +02:00
Andrew Raines 917a3c3b9d Migrate createIndex(). 2013-09-23 17:04:54 -05:00
Simon Willnauer 26334a7a61 Reenable MockEngineModul as default on TestCluster 2013-09-23 22:17:21 +02:00
Andrew Raines 362c3f7895 One too many... 2013-09-23 15:09:35 -05:00
Andrew Raines 16cde6f10a Remove redundant wipeIndices(). 2013-09-23 15:03:06 -05:00
Simon Willnauer e4af8c720c cut over more tests to AbstractIntegrationTest 2013-09-23 18:18:36 +02:00
Andrew Raines 291cb54c95 Fix misspelling. 2013-09-23 11:06:33 -05:00
Simon Willnauer ac5120e722 cut over more tests to AbstractIntegrationTest 2013-09-23 15:53:42 +02:00
Martijn van Groningen 8eab51047f Cut RecoveryPercolatorTests over to AbstractIntegrationTest
Added node restart capabilities to TestCluster
Trigger retry mechanism (onFailure method) instead of invoking transport service with null DiscoveryNode when no DiscoveryNode can be found for a ShardRouting.
2013-09-23 00:19:33 +02:00
Shay Banon e7e39936b8 add internal origin to delete by query 2013-09-22 23:56:30 +02:00
Simon Willnauer 0f17a4c61f disable 'SearchWhileCreatingIndexTests' for now - fix is already in the pipeline 2013-09-22 22:45:39 +02:00
Simon Willnauer 5a365795ec Added support for dynamic transport client ratio in tests.
Currently tests only run with node clients but eventually we want to
run all tests with randomly choosen node / transport clients. To enable
this during development and on test servers as a transition phase this
commit adds the ability to allow a fraction of the clients used in
tests to be transport clients. By default this is still disabled.
To enable transport clients in tests pass '-Dtests.client.ratio=[0..1]'
where '1.0' will force transport clients and '0.0' completely disables
them. If an empty string is passed the ratio is chosen at random for
each test.
2013-09-22 22:25:30 +02:00
Shay Banon ab6715b292 move the internal source for a refresh to be required 2013-09-22 20:24:05 +02:00
Shay Banon 78af818d72 add internal source to acquire searcher
add a source indicating why the searcher was acquired
2013-09-22 18:29:23 +02:00
Shay Banon 167538ef0d add internal source to refresh
can be used to more easily understand where its coming from
2013-09-22 17:58:40 +02:00
Alexander Reelsen 57f962d620 Add completion field support in Rest nodes stats
Closes #3746
2013-09-22 15:02:05 +02:00
Simon Willnauer 0909055e83 Cleanup Integration Tests 2013-09-22 12:05:58 +02:00
Simon Willnauer 4b5935a708 Small cleanups in TransportClient et.al
Catching Throwable instead of Exception in TransportClient
and TransportClientNodesService and restore interrupted flag
if interrupt exception is caught and ignored
2013-09-22 12:05:57 +02:00
Simon Willnauer 58ea539a26 Add missing TransportHandler for clear_sc (ClearScroll) 2013-09-22 12:05:57 +02:00
Simon Willnauer cadbcfeb24 Call validate in TransportClients before request is send 2013-09-22 12:05:57 +02:00
Simon Willnauer c8192dd1f2 Fail GetIndexTemplate if names it null or empty 2013-09-22 12:05:57 +02:00
Simon Willnauer e1aa91dc81 Add listener nodes to nodes list if 'sniff' is true
TransportClient doesn't add the initial nodes to the nodes list
if it doesn't retrieve any nodes from the listeners which can cause
the transport client to throw a 'NoNodeAvailableException' if the
'sniff' response didn't return any nodes. This situation can occure
if the client tries to get the listener nodes cluster state while that
node is not yet connected to any other nodes.
2013-09-22 12:05:57 +02:00
Martijn van Groningen 7c032f6af6 Fixed serialisation bug for multi percolate request and response classes.
This bug manifests when running with transport client.
2013-09-22 12:01:27 +02:00
Shay Banon 74e8d299d6 fix log to trace 2013-09-22 03:19:08 +02:00
Luca Cavanna b28c82a1e6 Added @TestLogging to all methods to see which shards we refresh and which ones we search on
Increased wait timeout and added multiple iterations there as well, one is not enough. We want to verify whether the problem gets fixed later on.
2013-09-21 20:10:43 +02:00
Andrew Raines 953bbe4291 More AbstractIntegrationTest 2013-09-21 00:10:16 -05:00
Andrew Raines 6a18d05393 Add/fix index selectors.
Closes #3758.
2013-09-20 22:25:33 -05:00
Luca Cavanna 2ca1d79530 Moved SimpleIndexStateTests to AbstractIntegrationTest 2013-09-21 02:11:36 +02:00
Shay Banon c6eebf0515 don't clear gateways in reroute test
- also remove test logging from percolator
2013-09-21 01:55:11 +02:00
Luca Cavanna 52e9e753e6 Set nowInMillis to search context created by the explain api so that "NOW" can be used within queries
Added nowInMillis to ExplainRequest in a backwards compatible manner

Fixes #3626
2013-09-20 21:32:52 +02:00
Luca Cavanna 0d3895533c Set nowInMillis to search context created by the validate query api so that "NOW" can be used within queries
Added nowInMillis to ShardValidateQueryRequest in a backwards compatible manner

Fixes #3629
2013-09-20 21:32:13 +02:00
Luca Cavanna 06bfe0550d Set nowInMillis to search context created by the count api so that "NOW" can be used within queries
Added nowInMillis to ShardCountRequest in a backwards compatible manner

Fixes #3625
2013-09-20 21:31:00 +02:00
iksnalybok be35b44df1 Allow slop = -1 in span queries
Closes #3673
2013-09-20 21:19:31 +02:00
Simon Willnauer d662238221 Use node clients for now until tests stabelize 2013-09-20 20:26:09 +02:00
Martijn van Groningen 7ea21c75db Removed ClusterScope annotation 2013-09-20 19:25:50 +02:00
Martijn van Groningen 246752c1f4 Moved ConcurrentPercolatorTests over to AbstractIntegrationTest 2013-09-20 19:21:53 +02:00
Brusic ab05f929fe Allow the `_boost` field to be indexed and stored.
Closes #3752
2013-09-20 18:58:57 +02:00
Shay Banon a1185a93d0 fix javadoc 2013-09-20 16:56:33 +02:00
Martijn van Groningen bd6723f426 Removed usage AbstractIntegrationTest#updateClusterSettings 2013-09-20 16:36:46 +02:00
Martijn van Groningen 5558e884be Removed AbstractIntegrationTest#updateClusterSettings 2013-09-20 16:36:23 +02:00
Simon Willnauer e97aa9918a Cut over NoMasterNodeTests to AbstractIntegrationTest 2013-09-20 16:04:33 +02:00
Alexander Reelsen 1a34172a6c Changed SimpleBlocksTests and CustomHighlighterSearchTests to use AbstractIntegrationTest 2013-09-20 15:31:37 +02:00
Martijn van Groningen be2acaa629 fixed compile error 2013-09-20 15:30:05 +02:00
Martijn van Groningen 846b833539 - Added TestCluster#getInstances(Class) method. 2013-09-20 15:08:49 +02:00
Martijn van Groningen f6c2d9caf3 - Cut DeletePercolatorTypeTests and TTLPercolatorTests over to the AbstractIntegrationTest. 2013-09-20 15:08:06 +02:00
Shay Banon c3ecd6fd1b REST: Add newline to response when using pretty flag
closes #3748
relates to #3422
2013-09-20 14:55:35 +02:00
Alexander Reelsen 2624c90efb Using AbstractIntegrationTest in SimpleTTLTests and FunctionScorePluginTests 2013-09-20 13:36:50 +02:00
Simon Willnauer 30d7faeba2 Cut over more tests to AbstractIntegrationTest 2013-09-20 13:31:46 +02:00
Shay Banon b092a0dade use the same client and preference when failing 2013-09-19 18:58:07 +02:00
Luca Cavanna 46753122aa Log line set to TRACE
The default log level for the action package is DEBUG, we don't want to print out lines like this by default in our distribution.
2013-09-19 18:29:55 +02:00
Simon Willnauer 575d6b0321 Cleanup test classes and add Scope support for TestCluster
TestCluster can currently only be used in a globally shared scope.
This commit adds the ability to use the TestCluster in 3 different
scopes per test-suite. The scopes are 'Global', 'Suite' and 'Test'
where the cluster is shared across all tests, across all test methods or
not at all respectivly.
Subclasses of AbstractIntegrationTest (formerly AbstractSharedClusterTest)
can add an annotation if they need a different scope than Global (default):

```
  @ClusterScope(scope=Scope.Suite, numNodes=1)
```
This also allows to specify the number of shared nodes in that TestCluster
that are available when a test starts.

The cleanups in this commit include:

 - s/Elasticsearch/ElasticSearch/g on test classes
 - Move test classes in org.elasticsearch.test
2013-09-19 17:48:22 +02:00
Simon Willnauer de3cde3e1e Rename Engine#seacher() into Engine#acquireSearcher()
The name should reflect that the caller is responsible for
releaseing the searcher again.
2013-09-19 16:43:20 +02:00
Simon Willnauer 04deb80634 Add asserting searcher to track searcher references
This assertion module also injects an AssertingIndexSearcher that
checks if our queries are all compliant with the lucene specification
which is improtant for future updates and changes in the upstream project.
2013-09-19 16:21:45 +02:00
Shay Banon bb4f30c76c add explicit refresh post failure to test
log the hits post explicit refresh, and post explicit wait for green
2013-09-19 16:18:04 +02:00
Alexander Reelsen 8ab77651ad Added more information to assertion in completion suggest tests 2013-09-19 15:02:11 +02:00
Martijn van Groningen e68f99254b Make sure the transport response handler is invoked only once.
There was a small window of time where the transport response handler's handException method was invoked twice. As far as I can tell this happened when node disconnect event was processed just after the request was registered and between a "Node not connected" error was thrown. The TransportService#sendRequest method would invoke the transport response handler's handException method regardless if it was already invoked. This resulted that for one request failure, two retries were executed.

The mpercolate api has an assert that tripped when more than the expected shard level responses were returned. This was caused by the issue described above. For the a single shard level request we had multiple responses and this broke the the the total excepted responses. Also the reduce could be started prematurely, which resulted in an incorrect final response (e.g. total count being incorrect). For example: two shards in total, shard 0 gets reduces twice. The second shard 0 response gets in just before shard 1 response gets in. The reduce starts without shard 1 response.
2013-09-19 13:24:48 +02:00
Shay Banon 1581f25e27 Discovery to support a timeout waiting for other nodes to processing new cluster state
The master node processing changes to cluster state, and part of the processing is publishing the cluster state to other nodes. It does not wait for the cluster state to be processed on the other nodes before it moves on to the next cluster state processing job.

This is fine, we support out of order cluster state events using versioning, and nodes can handle those cases. It does lead though to non optimal API semantics. For example, when issuing cluster health, and waiting for green state, the master node will report back once the cluster is green based on its cluster state, but that mentioned "green" state might not have been received by all other nodes yet.

Add a discovery.zen.publish_timeout setting, and default it to 5s. This will give a best effort into making sure all nodes will process a cluster state within a window of time.

closes #3736
2013-09-19 13:09:24 +02:00
Luca Cavanna cf0c360f86 Prevented empty filters from causing NPE
Closes #3724
2013-09-18 20:29:01 +02:00
Simon Willnauer a26375ae25 Check if nodes have been shut down in TestCluster#beforeTest
The test cluster ignored randomly teared down nodes in tests.
This commit also adds some debug logging to the TestCluster#beforeTest
method.
2013-09-18 16:22:27 +02:00
Shay Banon 4eab186ce6 call ensureGreen instead of explicit call 2013-09-18 14:57:08 +02:00
Britta Weber 04c560ce9f GetActionTests: call ensureGreen() to get more meaningful debug output on failure 2013-09-18 14:33:02 +02:00
Britta Weber 995c55b861 call ensureGreen() to get more meaningful debug output on failure 2013-09-18 14:15:56 +02:00
Shay Banon 84242c208e improve failure message when timing out on green/yellow 2013-09-18 13:38:44 +02:00
Luca Cavanna 15cb0fd745 Removed wrong assertion from OpenCloseIndexTests
If a request hasn't been acknowledged, there's no guarantee for any node to hold the up-to-date cluster state (not even the master yet, as the execution is asynchronous)
2013-09-18 13:04:41 +02:00
Shay Banon db8f2be8bc improve logging on before/after shared cluster tests 2013-09-18 12:35:20 +02:00
Shay Banon 6a04c16932 Delete Template: When deleting with * and no templates exists, don't 404
closes #3723
2013-09-18 12:28:24 +02:00
Luca Cavanna 2d52973783 Added acknowledgment timeout test to OpenCloseIndexTests 2013-09-18 11:49:09 +02:00
Martijn van Groningen e84af5c8fd If there is an exception that indicates that the shard isn't available then the exception should bubble up to the TransportShardSingleOperationAction class, so the shard level request can be retried on a different shard. (multi get api) 2013-09-18 10:54:00 +02:00
Martijn van Groningen ae3f54bdb5 Don't wrap the exception in an ElasticSearchException when shard isn't available. 2013-09-18 10:53:34 +02:00
Martijn van Groningen f307336670 If there is an exception that indicates that the shard isn't available then the exception should bubble up to the TransportShardSingleOperationAction class, so the shard level request can be retried on a different shard. (multi term vector api) 2013-09-18 10:52:37 +02:00
Simon Willnauer 80b7377b29 Disable random ram directories to prevent OOM during tests.
We need to find a way to enable this without adding crazy heaps etc.
Maybe only selected tests can run this.
2013-09-18 08:28:41 +02:00
Simon Willnauer 81bd1f9fd2 Randomized SearchScanTests 2013-09-17 23:29:49 +02:00
Simon Willnauer 1499881c36 Simplify NestedFieldComparators for numerics
The average and sum comparators basically share the same code which is
copy-past today. We can simplify this into a base class which reduces
code duplication and prevents copy-paste bugs.
2013-09-17 23:07:36 +02:00
Simon Willnauer cabbf7805b Make TestCluster based integration tests more repoducible
While testing an async system providing reproducible tests that
use randomized components is a hard task we should at least try to
reestablish the enviroment of a failing test as much as possible.
This commit allows to re-establish the shared 'TestCluster' by
resetting the cluster to a predefined shared state before each test.

Before this commit a tests that is executed in isolation was likely
using a entirely different node enviroment as the failing test since
the 'TestCluster' kept intermediate nodes started by other tests around.
2013-09-17 23:07:29 +02:00
Clinton Gormley bf41f56f24 Added sort_mode and sortMode parameters to _geo_distance sort.
Previously it just support the "mode" parameter, which is
inconsistent

Closes #3717
2013-09-17 18:26:30 +02:00
Martijn van Groningen ca8b3ac0ba Don't throw set exception if it is an error based exception, this breaks how we deal with assertions in general. 2013-09-17 17:20:11 +02:00
Shay Banon ddc2b428d6 add 0.90.6 2013-09-17 15:04:48 +02:00
Simon Willnauer d45bf0b71e Print '-Des.x.y' properties in reproduce line 2013-09-17 14:28:51 +02:00
Costin Leau dcc45070bd Merge pull request #3702 from costin/master
add elasticsearch as a service for Windows platforms
2013-09-17 05:16:29 -07:00
Costin Leau 08bf131899 rework script to handle path with spaces
use service id for pid name
disable filtering on *.exe (caused corruption)
rename exe names and add more options to .bat
start/stop operations are now supported (and expected to be called) by service.bat
add more variables from the env to customize default behavior prior to installing the service
add manager option
fixes regarding batch flow
specify service id in description
minor readability improvement
include .exe only in ZIP archive
rename x64 service id to make it work out of the box
add elasticsearch as a service for Windows platforms
based on Apace Commons Daemon
supports both x64 and x86
2013-09-17 15:01:09 +03:00
Shay Banon cf30cb1caa Alias filter not applied when using 'multi-index' syntax with wild card in URL
closes #3677
2013-09-17 13:30:40 +02:00
Luca Cavanna 4013980b11 Serving cluster state version log line set to TRACE instead of DEBUG 2013-09-17 10:41:23 +02:00
Simon Willnauer dd8512ddd1 Autodetect indices when 'indexRandom' is used. 2013-09-17 09:22:25 +02:00
Simon Willnauer c18219e90d Create should use the same index name as the index request in tests 2013-09-17 09:02:49 +02:00
Shay Banon ae0489266e Add `node.mode` with `local` or `network`
Compared to setting node.local to true, would be nicer to support node.mode with values of local or network.

Note, node.local is still supported.

closes #3713
2013-09-17 00:34:10 +02:00
Simon Willnauer a6f14eb919 Beef up 'indexRandom' by running index requests concurrently 2013-09-17 00:06:13 +02:00
Shay Banon 8f7e3c8b53 Better handling of /_all/_search when no indices exist
closes #3710
2013-09-16 23:32:17 +02:00
Shay Banon c8a72d9768 FlushNotAllowedEngineException during optimize
default to wait if a flush is on going when executed as part of optimize request
closes #3631
2013-09-16 22:20:25 +02:00
Simon Willnauer da9aef60f4 Use 'indexRandom' in GeoDistanceTests 2013-09-16 21:57:44 +02:00
Luca Cavanna a1fb661df7 Fixed PluginManagerTests
It caused the deletion of the existing bin/plugin script when run from the IDE
2013-09-16 18:40:47 +02:00
Shay Banon e271177554 Plugins: Automatic detection of site plugins fails to copy over the content to `_site`
closes #3707
2013-09-16 18:12:51 +02:00
Shay Banon fd4ab5c3dc add 0.90.5 2013-09-16 18:12:51 +02:00
Simon Willnauer 5396d8e149 Copy slow in wrapped comparator even if root doc is the first doc in the
segment.

We missed to copy the slot if the root doc is the first doc in the
segment.

Closes #3706
2013-09-16 17:12:06 +02:00
Luca Cavanna a9e0f4d29d RecoveryWhileUnderLoadTests: added output of all shards stats in case of failure
Added wait to see if the problem will eventually get fixed or not in case of failure
2013-09-16 16:22:24 +02:00
Luca Cavanna c8bcdd0780 Replaced count api with search (search_type=count) in RecoveryWhileUnderLoadTests checks
This way we get the logging of all the shards we searched on
2013-09-16 16:22:24 +02:00
Britta Weber 86f147fc0b remove default scale for geo fields 2013-09-16 15:16:40 +02:00
Britta Weber 4938f09d8d allow origin not set, defaults to "now" for date fields, exception for all other types 2013-09-16 15:16:40 +02:00
Britta Weber f12fa0c1c4 allow no query is defined in function score, default is match all 2013-09-16 15:16:40 +02:00
Simon Willnauer 6c3e7d36c0 If cluster health times out don't index lots of documents
The SearchWithRandomExceptionTests aim to catch problems when resources
are not closed due to exceptions etc. Yet in some cases the random seeds
cause the index to never be fully allocated so we basically go into a
ping-pong state where we try to allocate shards back and forth on nodes.
This causes all docs to time out which in-turn causes the tests to run
for a very long time (hours or days).
If we can not allocate the index and get to a yellow state we simply
index only one doc and expected all searches to fail.

This commit also beefs up the assertions in this test to check if
documents are actually present if they are indexed and refresh was
successful.

Closes #3694
2013-09-16 14:12:41 +02:00
Simon Willnauer 85fcefc60d Allow include / exclude of completion stats via REST parameters
Stats can be retrieved on a per-feature / per-component  basis including the fields
they apply to. This commit add support for a 'completion' flag to include statistics
for the complition feature as well as 'completion_fields' to only
include certain fields into the returned statistics.
To disambiguate between 'fielddata' and 'completion' fields this commit
uses 'fields' as the default inclusion filter for stats fields only used
if not dedicated '[completion|fielddata]_fields' paramter is provided.

Relates to #3522
2013-09-16 11:28:32 +02:00
matthewarkin 6356ad2228 Debian init script: Added armhf openjdk6/7
Added java-6-openjdk-armhf and java-7-openjdk-armhf to JDK_DIRS in debian init.d script per elasticsearch/elasticsearch#3659

Closes #3659
2013-09-16 09:56:21 +02:00
Alexander Reelsen e0af9e2c09 Making debian init script bourne shell compatible
Using backticks instead of bash only $() to execute a shell command

Closes #3691
2013-09-16 09:46:43 +02:00
Britta Weber bc65e5c5b6 don't serialize unneeded filter 2013-09-16 09:40:23 +02:00
Shay Banon cd90382964 upgrade to google guava v 15 2013-09-16 09:14:00 +02:00
Britta Weber 3162eb4dcf defining filter is not always needed, we can assume match all if no filter is given 2013-09-16 00:30:03 +02:00
Shay Banon 20745adadd Add dedicated Suggest Thread Pool
Add a dedicated suggest thread pool for the suggest API. With the new completion suggest type, which is purely CPU bounded, it makes more sense to have a dedicated thread pool for suggest compared to having it share the search thread pool and "competing" against other search operations.
closes #3698
2013-09-15 01:54:27 +02:00
Shay Banon 4a97af3cd4 use static TL for common numeric precision values 2013-09-15 01:40:35 +02:00
Shay Banon 89e0b325c2 Briefly delete manifested mapping type on a node without reason
When a dynamic type is introduced during indexing, the node that introduces it sends the fact that its added to the master, to be added to the master node. The master node then adds it to the index metadata and republishes that fact.

In order not to delete the mapping while the new type is introduced on the node that introduced it, we keep a map of seen mappings, and remove a mapping type when we already processed it.

The map is not properly cleared though in all places where an actual index service is being removed on a node.

closes #3697
2013-09-14 22:42:53 +02:00
Britta Weber e58900145b tag with @AwaitsFix because it causes the test suite to crash
see #3694
Also, this might have caused one of the problems described in issue #3674
2013-09-14 11:51:34 +02:00
Shay Banon d6a3fc09f0 better logging
trace log the low level details on recovery
2013-09-13 22:46:04 +02:00
Shay Banon 056a678fa8 use built in flush/refresh helper methods 2013-09-13 22:06:12 +02:00
Shay Banon df3f681ef0 Optimize API: Remove refresh flag
Refresh flag in optimize is problematic, since the shards refresh is allowed to execute on is different compared to the optimize shards. In order to do optimize and then refresh, they should be executed as separate APIs when needed.
closes #3690
2013-09-13 21:44:38 +02:00
Shay Banon 7cc48c8e87 Flush API: remove refresh flag
Refresh flag in flush is problematic, since the shards refresh is allowed to execute on is different compared to the flush shards. In order to do flush and then refresh, they should be executed as separate APIs when needed.
closes #3689
2013-09-13 21:09:45 +02:00
Shay Banon 4298c50119 allow refresh to execute on a relocating shard as well 2013-09-13 20:03:58 +02:00
Simon Willnauer d9a055fe54 Add integration test for regex field data filter 2013-09-13 19:55:50 +02:00
Adrien Grand f03816ff07 Log failures at closing the SearcherManager. 2013-09-13 18:03:28 +02:00
Alexander Reelsen 26f9968b3b Allow packages to disable immediate restart on package upgrade
Both package types, RPM and deb now contain an option to not restart on upgrade.

This option can be configure in /etc/default/elasticsearch for dpkg based systems
and /etc/sysconfig/elasticsearch for rpm based systems.

By default the setting is as before, where a restart is executed on upgrade.

Closes #3685
2013-09-13 17:45:39 +02:00
Shay Banon ba6bc2a4df improve logging
the source of the default mappings should be trace logged
2013-09-13 17:38:57 +02:00
Shay Banon 455d0be982 improve visibility of clusterState and shardsIt
In case of retries, we update the clusterState and shardsIt, make sure they are visible using volatile (even though updates will probably go through a memory barrier, this might explain rare failure we see when retry happens)
2013-09-13 17:35:01 +02:00
Luca Cavanna f7ff272560 Improved test
Introduced ElasticsearchAssertions that check for failures in all response
Added comment to flush requests as we don't check for failures there
Attempt to remove Thread.sleep in testChangeInitialShardsRecovery in favour of awaitBusy block
Added awaitBusy block in testQuorumRecovery waiting for YELLOW. We could have GREEN after the close node but wa want to wait for the YELLOW state.
2013-09-13 16:39:08 +02:00
Luca Cavanna bb0baa20fb Removed wrong assertion that makes recoverWhileUnderLoadWithNodeShutdown fail.
As we are within an awaitBusy block, it doesn't make sense to have an assertion, since it would fail the test instead of waiting till the condition is verified (till timeout expires)
2013-09-13 16:39:08 +02:00
Shay Banon ea00e39ff1 use trace logging on cluster state driven indexing 2013-09-13 16:35:11 +02:00
David Pilato a2444e9494 Remove get index templates deprecated methods
In 0.90.4, we deprecated some code:

* `GetIndexTemplatesRequest#GetIndexTemplatesRequest(String)` moved to `GetIndexTemplatesRequest#GetIndexTemplatesRequest(String...)`
* `GetIndexTemplatesRequest#name(String)` moved to `GetIndexTemplatesRequest#names(String...)`
* `GetIndexTemplatesRequest#name()` moved to `GetIndexTemplatesRequest#names()`

* `GetIndexTemplatesRequestBuilder#GetIndexTemplatesRequestBuilder(IndicesAdminClient, String)` moved to  `GetIndexTemplatesRequestBuilder#GetIndexTemplatesRequestBuilder(IndicesAdminClient, String...)`

* `IndicesAdminClient#prepareGetTemplates(String)` moved to `IndicesAdminClient#prepareGetTemplates(String...)`

* `AbstractIndicesAdminClient#prepareGetTemplates(String)` moved to `AbstractIndicesAdminClient#prepareGetTemplates(String...)`

We can now remove that old methods in 1.0.

**Note**: it breaks the Java API

Relative to #2532.
Closes #3681.
2013-09-13 15:08:59 +02:00
David Pilato ea4988e9dc Support for REST get ALL templates.
/_template shows: No handler found for uri [/_template] and method [GET]

It would make sense to list the templates as they are listed in the /_cluster/state call.

Closes #2532.
2013-09-13 15:08:59 +02:00
Britta Weber e3b826f87e add wait for green to prevent test failure 2013-09-13 14:50:51 +02:00
Shay Banon d66d326ba9 mark test base classes as abstract 2013-09-13 12:14:52 +02:00
David Pilato e2400bc40e Fix possible NPE due to #3658 change 2013-09-13 11:49:16 +02:00
David Pilato b27e7d3cc9 Remove RestActions#splitXXX(String) methods
* `RestActions#splitIndices(String)`
* `RestActions#splitTypes(String)`
* `RestActions#splitNodes(String)`

And replace with `Strings.splitStringByCommaToArray(String)`

Closes #3680.
2013-09-13 11:36:43 +02:00
Igor Motov 714aaa40ea CompletionFieldMapper should use index name instead of full name
Fixes #3669
2013-09-12 17:39:03 -04:00
Simon Willnauer 507b6a6e8c Fix several places where resources are not closed
This commit adds a test that checks that we are closing
all files even if there are random IOExceptions happening. The test
found several places where due to IOExceptions streams were not
closed due to unsufficient exception handling.
2013-09-12 23:24:27 +02:00
Luca Cavanna 439413c626 Introduced common test methods in MatchedQueriesTests (e.g. createIndex, ensureGreen, refresh, assertHitCount) 2013-09-12 21:03:33 +02:00
Luca Cavanna 3a5b325b23 Added specific log level to check which shards were refreshed and which shards we searched on 2013-09-12 19:53:59 +02:00
Martijn van Groningen 8ddb809f98 If all scroll ids should be removed then the `_all` value should be used instead of not specifying any scroll ids. 2013-09-12 10:41:38 +02:00
Martijn van Groningen 1fe72dcf56 Moved to use assertHitCount instead of just checking the total count 2013-09-12 10:25:42 +02:00
Martijn van Groningen d3aacba6c6 Set log level to trace for package action.support.broadcast in the RecoveryPercolatorTests#testSinglePercolator_recovery test. 2013-09-12 10:19:10 +02:00
Simon Willnauer fddb7420ae Add support for Lucene's MockDirectoryWrapper
MockDirectoryWrapper adds asserting logic to the low level directory
implementation that helps to track and catch resource leaks like
unclosed index inputs caused by dangling IndexReader or IndexSearcher
instances. It prevents double writes to files and allows low level
random exceptions to be thrown for testing index consistency etc.

Closes #3654
2013-09-11 22:47:34 +02:00
Simon Willnauer c2675bac50 Added 'IntegrationTests' annotation to filter integration tests
Tests now support ignoring integartion tests by passing
'-Dtests.integration=false' to the test runner either via IDE or
maven to only run fast unittests.
2013-09-11 22:12:38 +02:00
Luca Cavanna ff54cba807 fixed typo in javadoc 2013-09-11 21:00:53 +02:00
Andrew Raines 6c9542d967 Fix misspellings. 2013-09-11 13:49:33 -05:00
Andrew Raines 7425b85b0b Collapse test.{unit,integration} into org.elasticsearch. 2013-09-11 12:49:49 -05:00
Shay Banon bbce6e8588 Rare race condition when introducing new fields into a mapping
Dynamic mapping allow to dynamically introduce new fields into an existing mapping. There is a (pretty rare) race condition, where a new field/object being introduced will not be immediately visible for another document that introduces it at the same time.

closes #3667, closes #3544
2013-09-11 07:08:57 -07:00
Luca Cavanna 012797a82c Loggers#getLogger static method to take into account the logger prefix
Improved LoggingListener (which reads and applies @TestLogging annotation) to take into account the logger prefix. We can now use the @TestLogging annotation and specify either the whole package name (e.g. o.e.action.metadata) or only the package name without the logger prefix (action.metadata), the custom log level will be properly applied in both cases
2013-09-11 16:04:08 +02:00
Luca Cavanna daedf853a0 Removed logger prefixes when using @TestLogging annotation 2013-09-11 11:24:07 +02:00
Martijn van Groningen 1d8457394d Added more trace logging.
Enabled trace logging for RecoveryPercolatorTests#testMultiPercolator_recovery test
Cleaned up and removed unnecessary usage of concurrent collections.
2013-09-11 11:20:08 +02:00
Luca Cavanna 0b79ba9493 Rewrote SuggestResponse#toString method
It only prints out json now (as the SearchResponse does)
Added missing startObject & endObject (was causing JsonGenerationException)

Closes #3661
2013-09-10 22:33:51 +02:00
Martijn van Groningen 0efa78710b Added clear scroll api.
The clear scroll api allows clear all resources associated with a `scroll_id` by deleting the `scroll_id` and its associated SearchContext.

Closes #3657
2013-09-10 21:17:34 +02:00
David Pilato fafc4eef98 Plugin Manager: add silent mode.
Now with have proper exit codes for elasticsearch plugin manager (see #3463), we can add a silent mode to plugin manager.

```sh
bin/plugin --install karmi/elasticsearch-paramedic --silent
```

Closes #3628.
2013-09-10 18:31:35 +02:00
Britta Weber a91653cf1a change logging level of testTimeoutSendExceptionWithDelayedResponse to TRACE 2013-09-10 17:19:26 +02:00
Luca Cavanna 4032f1eb44 Configured TRACE logging to RecoveryWhileUnderLoadTests#recoverWhileUnderLoadAllocateBackupsTest
We want to log which shards we are searching on and which shards we are refreshing
2013-09-10 14:28:59 +02:00
Britta Weber 7c20603071 use ElasticsearchAssertions to get info on shard failures 2013-09-10 12:13:37 +02:00
Simon Willnauer 5c00dc5773 Rename IndexShard#searcher() to #acquireSearcher()
Based on recent bugs ( #3652 ) where searchers were acquired multiple times
but never released 'IndexShard#searcher()' has not a more accurate name.

Closes #3653
2013-09-09 21:21:27 +02:00
Simon Willnauer 777d7f47a5 Catch ESRejectedExecutionException on node close
When a node shuts down thread pools might throw
ESRejectedExecutionException and our test framework fails tests if
exceptions are not caught hitting uncaught exception handler.
2013-09-09 21:21:27 +02:00
David Pilato 764aa54f2d Plugin Manager should support -remove group/artifact/version naming
When installing a plugin, we use:

```sh
bin/plugin --install groupid/artifactid/version
```

But when removing the plugin, we only support:

```sh
bin/plugin --remove dirname
```

where `dirname` is the directory name of the plugin under `/plugins` dir.

Closes #3421.
2013-09-09 21:17:16 +02:00
Simon Willnauer 76cc8c3549 Only pull searcher once during completion stats
The inner call to the completion stats pulled a second searcher
that never got released causing the underlying readers to never
get closed unless the node is shut down. This was triggered
with literally each stats call including the completion stats
even if no completion service was used on the index.

Closes #3652
2013-09-09 17:50:41 +02:00
Lee Hinman 7d52d58747 Add AllocationDecider that takes free disk space into account
This commit adds two main pieces, the first is a ClusterInfoService
that provides a service running on the master nodes that fetches the
total/free bytes for each data node in the cluster as well as the
sizes of all shards in the cluster. This information is gathered by
default every 30 seconds, and can be changed dynamically by setting
the `cluster.info.update.interval` setting. This ClusterInfoService
can hopefully be used in the future to weight nodes for allocation
based on their disk usage, if desired.

The second main piece is the DiskThresholdDecider, which can disallow
a shard from being allocated to a node, or from remaining on the node
depending on configuration parameters. There are three main
configuration parameters for the DiskThresholdDecider:

`cluster.routing.allocation.disk.threshold_enabled` controls whether
the decider is enabled. It defaults to false (disabled). Note that the
decider is also disabled for clusters with only a single data node.

`cluster.routing.allocation.disk.watermark.low` controls the low
watermark for disk usage. It defaults to 0.70, meaning ES will not
allocate new shards to nodes once they have more than 70% disk
used. It can also be set to an absolute byte value (like 500mb) to
prevent ES from allocating shards if less than the configured amount
of space is available.

`cluster.routing.allocation.disk.watermark.high` controls the high
watermark. It defaults to 0.85, meaning ES will attempt to relocate
shards to another node if the node disk usage rises above 85%. It can
also be set to an absolute byte value (similar to the low watermark)
to relocate shards once less than the configured amount of space is
available on the node.

Closes #3480
2013-09-09 09:49:30 -06:00
Luca Cavanna 563111f0f9 Fixed typo: renamed test wamer package to warmer 2013-09-09 14:24:21 +02:00
Luca Cavanna 8ad583b35e Fixed typo: renamed test.listerners package to test.listener 2013-09-09 14:24:21 +02:00
Luca Cavanna 5fdae8ba10 Restored log lines to TRACE for notification post alias creation and open/close index
Introduced specific log level for those in OpenCloseIndexTests#testCloseOpenAliasMultipleIndices
2013-09-09 14:24:21 +02:00
Luca Cavanna 9e72683ba4 Added @TestLogging annotation to set a specific level per test method
It supports multiple logger:level comma separated key value pairs
 Use the _root keyword to set the root logger level
 e.g. @Logging("_root:DEBUG,org.elasticsearch.cluster.metadata:TRACE")
 or just @TestLogging("_root:DEBUG,cluster.metadata:TRACE") since we start the test with -Des.logger.prefix=
2013-09-09 14:24:21 +02:00
Simon Willnauer 453e7c1510 Use same index name for indexing that is used for creating the index 2013-09-09 13:01:53 +02:00
Simon Willnauer 732e38b8c7 Throw IAE if reserved completion suggester chars are used in input
The completion suggester reserves 0x00 and 0xFF as for internal use.
If those chars are used in the input string an IAE is thrown and the
input is rejected.

Closes #3648
2013-09-09 11:57:01 +02:00
Simon Willnauer d7b3ed7e8b Only use one document to test empty shards 2013-09-09 10:53:53 +02:00
Simon Willnauer a5bf8824d2 Remove createMapped and mapping helpers from AbstractSharedClusterTest
our tests should use the API we have in favor of hard to read / understand
test helpers.
2013-09-09 09:29:22 +02:00
Nik Everett da4c58d853 Beautify SuggestSearchTests.
SuggestSearchTests had tons of duplicate code and didn't use all of the
fancy new integration test helper method.  I've removed a ton of duplicate
code and used as many of the nice test helper method I could think of.

Closes #3611
2013-09-09 09:16:47 +02:00
Shay Banon 3c5dd43928 fix logging level 2013-09-08 00:32:44 +02:00
Martijn van Groningen 86d69bb41c field rename 2013-09-06 21:35:53 +02:00
Martijn van Groningen b01dececac Removed matched_filters in favor for matched_queries.
Closes #3644
2013-09-06 21:34:08 +02:00
Martijn van Groningen 29ea6b3071 Deprecate the method names `namedFilter` in favor of `namedQueries`.
The reason behind this is that the `_name` support has been extended to queries as well and the name `namedQueries` suggests better that it is applicable to the whole query dsl.

Relates to #3581
2013-09-06 21:15:22 +02:00
Shay Banon 2767c081cd Allow to control the number of processors sizes are based on
Sometimes, one wants to just control the number of processors our different size base calculations for thread pools and network workers are based on, and not use the reported available processor by the OS. Add processors setting, where it can be controlled.

closes #3643
2013-09-06 19:04:15 +02:00
Adrien Grand c9a7bb26ba Remember to think about filter caching when upgrading to Lucene 4.5. 2013-09-06 18:23:16 +02:00
Simon Willnauer 8203d4dbcf fix potential blocking of NettyTransport connect and disconnect methods
Currently, in NettyTransport the locks for connecting and disconnecting channels are stored in a ConcurrentMap that has 500 entries. A tread can acquire a lock for an id and the lock returned is chosen on a hash function computed from the id.
Unfortunately, a collision of two ids can cause a deadlock as follows:

Scenario: one master (no data), one datanode (only data node)

DiscoveryNode id of master is X
DiscoveryNode id of datanode is Y

Both X and Y cause the same lock to be returned by NettyTransport#connectLock()

Both are up and running, all is fine until master stops.

Thread 1: The master fault detection of the datanode is notified (onNodeDisconnected()), which in turn leads the node to try and reconnect to master via the callstack titled "Thread 1" below.

-> connectToNode() is called and lock for X is acquired. The method waits for 45s for the cannels to reconnect.

Furthermore, Thread 1 holds the NettyTransport#masterNodeMutex.

Thread 2: The connection fails with an exception (connection refused, see callstack below), because the master shut down already. The exception is handled in NettyTransport#exceptionCaught which calls NettyTransport#disconnectFromNodeChannel. This method acquires the lock for Y (see Thread 2 below).

Now, if Y and X have two different locks, this would get the lock, disconnect the channels and notify thread 1. But since X and Y have the same locks, thread 2 is deadlocked with thread 1 which waits for 45s.

In this time, no thread can acquire the masterNodeMutex (held by thread 1), so the node can, for example, not stop.

This commit introduces a mechanism that assures unique locks for unique ids. This lock is not reentrant and therfore assures that threads can not end up in an infinite recursion (see Thread 3 below for an example on how a thread can aquire a lock twice).
While this is not a problem right now, it is potentially dangerous to have it that way, because the callstacks are complex as is and slight changes might cause unecpected recursions.

Thread 1
----

	owns: Object  (id=114)
	owns: Object  (id=118)
	waiting for: DefaultChannelFuture  (id=140)
	Object.wait(long) line: not available [native method]
	DefaultChannelFuture(Object).wait(long, int) line: 461
	DefaultChannelFuture.await0(long, boolean) line: 311
	DefaultChannelFuture.awaitUninterruptibly(long) line: 285
	NettyTransport.connectToChannels(NettyTransport$NodeChannels, DiscoveryNode) line: 672
	NettyTransport.connectToNode(DiscoveryNode, boolean) line: 609
	NettyTransport.connectToNode(DiscoveryNode) line: 579
	TransportService.connectToNode(DiscoveryNode) line: 129
	MasterFaultDetection.handleTransportDisconnect(DiscoveryNode) line: 195
	MasterFaultDetection.access$0(MasterFaultDetection, DiscoveryNode) line: 188
	MasterFaultDetection$FDConnectionListener.onNodeDisconnected(DiscoveryNode) line: 245
	TransportService$Adapter$2.run() line: 298
	EsThreadPoolExecutor(ThreadPoolExecutor).runWorker(ThreadPoolExecutor$Worker) line: 1145
	ThreadPoolExecutor$Worker.run() line: 615
	Thread.run() line: 724

Thread 2
-------

	waiting for: Object  (id=114)
	NettyTransport.disconnectFromNodeChannel(Channel, Throwable) line: 790
	NettyTransport.exceptionCaught(ChannelHandlerContext, ExceptionEvent) line: 495
	MessageChannelHandler.exceptionCaught(ChannelHandlerContext, ExceptionEvent) line: 228
	MessageChannelHandler(SimpleChannelUpstreamHandler).handleUpstream(ChannelHandlerContext, ChannelEvent) line: 112
	DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline$DefaultChannelHandlerContext, ChannelEvent) line: 564
	DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(ChannelEvent) line: 791
	SizeHeaderFrameDecoder(FrameDecoder).exceptionCaught(ChannelHandlerContext, ExceptionEvent) line: 377
	SizeHeaderFrameDecoder(SimpleChannelUpstreamHandler).handleUpstream(ChannelHandlerContext, ChannelEvent) line: 112
	DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline$DefaultChannelHandlerContext, ChannelEvent) line: 564
	DefaultChannelPipeline.sendUpstream(ChannelEvent) line: 559
	Channels.fireExceptionCaught(Channel, Throwable) line: 525
	NioClientBoss.processSelectedKeys(Set<SelectionKey>) line: 110
	NioClientBoss.process(Selector) line: 79
	NioClientBoss(AbstractNioSelector).run() line: 312
	NioClientBoss.run() line: 42
	ThreadRenamingRunnable.run() line: 108
	DeadLockProofWorker$1.run() line: 42
	ThreadPoolExecutor.runWorker(ThreadPoolExecutor$Worker) line: 1145
	ThreadPoolExecutor$Worker.run() line: 615
	Thread.run() line: 724

Thread 3
---------

        org.elasticsearch.transport.netty.NettyTransport.disconnectFromNode(NettyTransport.java:772)
        org.elasticsearch.transport.netty.NettyTransport.access$1200(NettyTransport.java:92)
        org.elasticsearch.transport.netty.NettyTransport$ChannelCloseListener.operationComplete(NettyTransport.java:830)
        org.jboss.netty.channel.DefaultChannelFuture.notifyListener(DefaultChannelFuture.java:427)
        org.jboss.netty.channel.DefaultChannelFuture.notifyListeners(DefaultChannelFuture.java:418)
        org.jboss.netty.channel.DefaultChannelFuture.setSuccess(DefaultChannelFuture.java:362)
        org.jboss.netty.channel.AbstractChannel$ChannelCloseFuture.setClosed(AbstractChannel.java:355)
        org.jboss.netty.channel.AbstractChannel.setClosed(AbstractChannel.java:185)
        org.jboss.netty.channel.socket.nio.AbstractNioChannel.setClosed(AbstractNioChannel.java:197)
        org.jboss.netty.channel.socket.nio.NioSocketChannel.setClosed(NioSocketChannel.java:84)
        org.jboss.netty.channel.socket.nio.AbstractNioWorker.close(AbstractNioWorker.java:357)
        org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink.eventSunk(NioClientSocketPipelineSink.java:58)
        org.jboss.netty.channel.Channels.close(Channels.java:812)
        org.jboss.netty.channel.AbstractChannel.close(AbstractChannel.java:197)
        org.elasticsearch.transport.netty.NettyTransport$NodeChannels.closeChannelsAndWait(NettyTransport.java:892)
        org.elasticsearch.transport.netty.NettyTransport$NodeChannels.close(NettyTransport.java:879)
        org.elasticsearch.transport.netty.NettyTransport.disconnectFromNode(NettyTransport.java:778)
        org.elasticsearch.transport.netty.NettyTransport.access$1200(NettyTransport.java:92)
        org.elasticsearch.transport.netty.NettyTransport$ChannelCloseListener.operationComplete(NettyTransport.java:830)
        org.jboss.netty.channel.DefaultChannelFuture.notifyListener(DefaultChannelFuture.java:427)
        org.jboss.netty.channel.DefaultChannelFuture.notifyListeners(DefaultChannelFuture.java:418)
        org.jboss.netty.channel.DefaultChannelFuture.setSuccess(DefaultChannelFuture.java:362)
        org.jboss.netty.channel.AbstractChannel$ChannelCloseFuture.setClosed(AbstractChannel.java:355)
        org.jboss.netty.channel.AbstractChannel.setClosed(AbstractChannel.java:185)
        org.jboss.netty.channel.socket.nio.AbstractNioChannel.setClosed(AbstractNioChannel.java:197)
        org.jboss.netty.channel.socket.nio.NioSocketChannel.setClosed(NioSocketChannel.java:84)
        org.jboss.netty.channel.socket.nio.AbstractNioWorker.close(AbstractNioWorker.java:357)
        org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:93)
        org.jboss.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:109)
        org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:312)
        org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:90)
        org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)
        java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        java.lang.Thread.run(Thread.java:724)
2013-09-06 17:56:18 +02:00
Shay Banon 4155741f7f BytesStreamOutput default size should be 2k instead of 32k
We changed the default of BytesStreamOutput (used in various places in ES) to 32k from 1k with the assumption that most stream tend to be large. This doesn't hold for example when indexing small documents and adding them using XContentBuilder (which will have a large overhead).

Default the buffer size to 2k now, but be relatively aggressive in expanding the buffer when below 256k (double it), and just use oversize (1/8th) when larger to try and minimize garbage and buffer copies.

relates to #3624
closes #3638
2013-09-06 02:25:17 +02:00
Shay Banon 3e92b1d6b8 Not allowing index names in request body for multi-get/search/bulk when indices are already given in url
closes #3636
2013-09-06 01:46:24 +02:00
Shay Banon 95b894e6f6 On Solaris, default LZF compress type (for transport) can cause segfault
closes #3634
2013-09-06 00:41:14 +02:00