Commit Graph

2449 Commits

Author SHA1 Message Date
Simon Willnauer 552852f299 Remove unreleased versions from master & fix 0.90.6 Lucene Version 2013-11-05 10:34:44 +01:00
Igor Motov 0f785d5779 Optimize concrete index resolution in TransportMoreLikeThisAction 2013-11-04 22:05:37 -05:00
Leonardo Menezes 5e4928ca92 Resolve aliases on redirects inside TransportMoreLikeThisAction
fixes #4045
2013-11-04 22:05:37 -05:00
Shay Banon 5f170cb4fd Remove Index Reader warmer introduced in 0.90.6
It create the following challenges:
- it automatically load all the norms for all fields. This should be an opt in feature similar to the new loading feature in field data. Will open a separate issue for it.
- It automatically loads all doc values for all fields (if they have it), overriding effectively the loading option of field data when its backed by doc values.

closes #4078
2013-11-04 18:32:50 +01:00
Vojtech Hyza 47969efae9 Keep word filter through an error if `keep_word_path` was specified.
Closes #4073
2013-11-04 16:49:07 +01:00
Simon Willnauer 0be5eca5d2 move to [0.90.7] SNAP 2013-11-04 14:55:55 +01:00
Luca Cavanna 5474cffe8f Added support for highlighting multi term queries using the postings highlighter
Closes #4042
2013-11-04 12:55:22 +01:00
Igor Motov 123bc98d81 Fix possible NPE in ClusterState.toString()
ClusterState.toString() can throw NPE if at least on index template exists in the cluster state.
2013-11-04 06:36:45 -05:00
Igor Motov c724f0de5d Initial implementation of ResourceWatcherService
Closes #4062
2013-11-03 21:55:54 -05:00
Shay Banon 1b799e9a3e use immutable open map to list the files in store 2013-11-03 21:31:42 +01:00
Shay Banon ed10758a6b add keys/values to ImmutableOpenMap 2013-11-03 14:34:29 +01:00
Shay Banon 671d2dd650 verify operations on store dir are executed when its open
call ensureOpen and properly set the open flag
also, better handling of failures and error message during listAll in local recovery
2013-11-03 14:23:58 +01:00
Shay Banon 8f88d0aa4a URI routing parameter support with multi search API
Support URI level routing parameter for the multi search API, that will act as the default routing (unless explicitly set).
closes #4058
2013-11-03 02:30:19 +01:00
Shay Banon a8535e247e URI routing parameter does not work with Bulk API
closes #4053
2013-11-03 02:16:09 +01:00
Shay Banon 6be85cece4 cleanup DiscoveryNodes#Builder construction
have a better method name, and only allow to create a copy of the builder based on existing nodes when constructing the builder
2013-11-02 03:38:22 +01:00
Shay Banon e551ec282f cleanup ClusterState#Builder construction
have a better method name, and only allow to create a copy of the builder based on existing cluster state when constructing the builder
2013-11-02 02:52:01 +01:00
Shay Banon ef56c68f67 have IndexMetaData Builder pattern similar to other state builders 2013-11-02 02:13:25 +01:00
Shay Banon fef647cb92 cleanup RoutingTable#Builder construction
have a better method name, and only allow to create a copy of the builder based on existing routing table when constructing the builder
2013-11-02 01:27:51 +01:00
Shay Banon d111e169a4 cleanup MetaData#Builder construction
have a better method name, and only allow to create a copy of the builder based on existing meta data when constructing the builder
2013-11-02 01:04:33 +01:00
Shay Banon acc5f584d4 fix test to not rely on execution of processed / ack order
also, make sure the order is consistent (as much as possible) when calling ack to processed
2013-11-02 00:04:12 +01:00
Andrew Raines 7d2c4afa98 _cat/nodes improvements.
* Handle info/stats null possibilities if cluster is in duress.

* Shorten node id.
2013-11-01 17:33:54 -05:00
Andrew Raines f9a1726300 Add _cat/health.
% curl localhost:9200/_cat/health\?v=1\&ts=0
cluster  status nodeTotal nodeData shards pri relo init unassign
kluster green          1        1     20  20    0    0        0

% curl localhost:9200/_cat/health\?ts=0
kluster green 1 1 20 20 0 0 0

% curl localhost:9200/_cat/health\?v=1
epoch      time     cluster  status nodeTotal nodeData shards pri relo init unassign
1383341092 16:24:52 kluster green          1        1     20  20    0    0        0

% curl localhost:9200/_cat/health
1383341119 16:25:19 kluster green 1 1 20 20 0 0 0

Closes #4050.
2013-11-01 16:37:23 -05:00
Andrew Raines 48f4ba06c0 Add TimestampedTable subclass. 2013-11-01 16:37:22 -05:00
Andrew Raines 720edafa0d Disable RestTable headers by default. 2013-11-01 16:37:22 -05:00
Shay Banon f720531328 protect ImmutableOpenMap builder from using the built map after build has been called 2013-11-01 20:53:24 +01:00
Shay Banon 633e781204 remove unneeded check... 2013-11-01 19:44:25 +01:00
Luca Cavanna afa0ab6226 Fixed ack behaviour when no ack is expected from any node or timeout is set to 0
We now return acknowledged true when no wait is needed (mustAck always returns false). We do wait for the master node to complete its actions though. Previously it would try to timeout and hang due to a CountDown#fastForward call when the internal counter is set to 0

We now return acknowledged false without starting the timeout thread when the timeout is set 0, as starting the wait and immediately stopping the thread seems pointless.

Added coverage for ack in ClusterServiceTests
2013-11-01 18:24:45 +01:00
Shay Banon c63741db04 Introduce a new ImmutableOpenMap
this map is a "true" immutable map, encapsulating an open impl, and has a builder that allows it to be built easily.
the builder has the optimization of using clone if its being built based on an existing immutable map.
2013-11-01 18:20:25 +01:00
Simon Willnauer c78c5469e4 Randomize exceptions when file is deleted while still open.
This somehow emulates a behavior on windows but we should test the
other code paths as well.
2013-11-01 11:47:22 +01:00
Martijn van Groningen d660b18298 Fixed bug (NPE) in mpercolate api, defaults from percolating existing documents where also applied for the regular percolate api, these defaults were none existing (null). 2013-11-01 11:17:16 +01:00
Martijn van Groningen 65fc90728e The mpercolate api rest endpoint should also support http get. 2013-11-01 11:09:17 +01:00
Luca Cavanna 29363d8139 Removed needless concreteIndices call, already called in doExecute and set to the request object 2013-10-31 20:58:52 +01:00
Luca Cavanna 3ee9f27fbe Fixed delete mapping to return acknowledged false when ack times out 2013-10-31 16:28:44 +01:00
Martijn van Groningen 81089fb228 Fixed concurrency issue in simple id cache. The lget() of a map can only be used if the map isn't shared. 2013-10-31 16:20:29 +01:00
Shay Banon c68016bb83 better timeout handling waiting for primary to be active for indexing
take into account the correct delta timeout when scheduling it, since now we can retry again after removing a listener
2013-10-31 15:54:37 +01:00
Simon Willnauer fcfc41209b use Math.max rather than an if statement 2013-10-31 14:36:24 +01:00
Shay Banon 5f2b7dc266 improve moving from post_recovery to started
we need to move to started from post recovery on cluster level changes, we need to make sure we handle a global state change of relocating, which can happen (and not pass through started)
2013-10-31 14:23:58 +01:00
Shay Banon 5cd56e5cea Improve new field mapping introduction performance
Improve the introduction of new fields into the concrete parsed mappings by not relying on immutable maps and copying over entries, but instead using open maps (which will also use less memory), and using clone to perform the copy on write logic
2013-10-31 11:07:52 +01:00
Simon Willnauer f01d3a18ad Simplify FieldData API
Removing #getValue and #hasValue to have a simple and consistent API
for multiple values.
2013-10-31 10:10:35 +01:00
Alexander Reelsen dfcb3ca2d4 RegexpQueryBuilder now implements MultiTermQueryBuilder
This allows the RegexpQueryBuilder to be used in span queries

Added tests for all span multi term queries.
Also updated the documentation and removed mentioning of numeric range
queries for span queries (they have to be terms).

Closes #3392
2013-10-31 09:12:57 +01:00
Igor Motov d43f3d83d8 The +index pattern without a wildcard in the index list is handled inconsistently
Fixes #3979
2013-10-30 16:36:55 -04:00
Igor Motov 3b4b05e2c9 Fix bug in TransportShardReplicationOperationAction retry mechanism
This issue was causing some index requests against shards in POST_RECOVERY state to hang.
2013-10-30 16:36:55 -04:00
Andrew Raines 5d46e69154 Add ES version to _cat/nodes. 2013-10-30 15:35:41 -05:00
Andrew Raines 256605f065 Add heap used percentage to _cat/nodes.
Closes #4020.
2013-10-30 13:50:29 -05:00
Andrew Raines b2e8ec2924 Add node name & ip to _cat/recovery.
Closes #4016.
2013-10-30 12:38:31 -05:00
Boaz Leskes 8819f91d47 Add a GetFieldMapping API
This new API allows to get the mapping for a specific set of fields rather than get the whole index mapping and traverse it.
The fields to be retrieved can be specified by their full path, index name and field name and will be resolved in this order.
In case multiple field match, the first one will be returned.

Since we are now generating the output (rather then fall back to the stored mapping), you can specify `include_defaults`=true on the request to have default values returned.

Closes #3941
2013-10-30 16:16:36 +01:00
Andrew Raines f16eb7a243 Add _cat/allocation/{nodes}.
Visualizes how shards distribute across the cluster.

% curl localhost:9200/_cat/allocation
shards diskUsed diskAvail diskRatio ip        node
     2   85.6gb   379.4gb     22.6% 127.0.0.1 MacTaggert, Moira
     2   85.6gb   379.4gb     22.6% 127.0.0.1 Jarvis, Edwin

% curl localhost:9200/_cat/allocation/Jar\*
shards diskUsed diskAvail diskRatio ip        node
     2   85.6gb   379.4gb     22.6% 127.0.0.1 Jarvis, Edwin
2013-10-30 10:09:45 -05:00
Shay Banon 8aa2ee7bac indices cluster state service should execute as one of the first listeners
its preferable to execute the indices cluster state service as quickly as possible, as one of the first listeners, so it will apply the cluster state to the local state
potentially, it should even execute before it state is "visible" (through the state call), but that's another change...
2013-10-30 15:53:31 +01:00
Shay Banon 8a62619fb9 throw index already exists failure when it exists as alias on creation
make sure to throw the already exists exception, so when indexing into an alias, and it has not propagated yet through the cluster state, it will end up being ignored if it already exists
2013-10-30 13:47:31 +01:00
Simon Willnauer 454dc53483 Add back hashed BytesValues optimization that got lost in a previous commit.
Some FieldData consumers require hash values per byte. We provide an optimization
that allows to cache the hashes internally if the consumer knows that they are needed
this optimization got lost in a previous commit. This commit adds them back and folds
the dedicated method into AtomicFieldData#getBytesValues(true|false)
2013-10-30 11:48:00 +01:00
Boaz Leskes 542f021d6f Also resend shard started message if shard state is in POST_RECOVERY and master thinks it's initializing.
Closes #4009
2013-10-30 11:42:57 +01:00
Shay Banon 8f21d2831a explicitly enable http when running plugin tests
add an option to force a setting when building a node, overriding if its explicitly set as system property
2013-10-30 02:09:43 +01:00
Luca Cavanna 9cb54c0f2e Added getters for fs.path, fs.mount and fs.dev in node stats api
Closes #4004
2013-10-29 14:49:07 +01:00
Luca Cavanna 9e6fab3a6d Added support for acknowledgements to update cluster settings api
As a side note, the internal reroute call is now part of the ack mechanism. That means that if the response contains acknowledged flag, the internal reroute that was eventually issued was acknowledged too. Also, even if the request is not acknowledged, the reroute is issued before returning, which means that there is no need to manually call reroute afterwards to make sure the new settings are immediately applied.

Closes #3995
2013-10-29 11:45:59 +01:00
Luca Cavanna d10bd2495d Added support for acknowledgements to cluster reroute api
Closes #3985
2013-10-29 11:45:59 +01:00
Luca Cavanna f23a1e23b1 Added support for node acknowledgements in delete mapping api
Closes #3984
2013-10-29 11:45:59 +01:00
Luca Cavanna 5f1ebf20f7 Added support for acknowledgement in update index settings api
Added support for serialization based on version to AcknowledgedResponse. Useful in api that don't support yet the acknowledged flag in the response.
Moved also ack warmer tests to more specific AckTests class

Close #3983
2013-10-29 11:45:59 +01:00
Luca Cavanna f425d4af2f Added ack call when the cluster state has not changed
The missing call could cause a cluster state update to hang in case there is no change no apply
2013-10-29 11:45:58 +01:00
Igor Motov 01d51ef434 Fix String.format to use Locale.ROOT in RestRecoveryAction 2013-10-28 23:37:11 -04:00
David Pilato 5d90abf701 mget API should support global routing parameter
mget API support `_routing` field but not `routing` parameter.

Reproduction here:

```sh
curl -XDELETE "http://localhost:9200/test/"; echo
curl -XPUT "http://localhost:9200/test/" -d'{
   "settings": {
      "number_of_replicas": 0,
      "number_of_shards": 5
   }
}'; echo

curl -XPUT 'http://localhost:9200/test/order/1-1?routing=key1' -d '{
   "productName":"doc 1"
}'; echo
curl -XPUT 'http://localhost:9200/test/order/1-2?routing=key1' -d '{
   "productName":"doc 2"
}'; echo
curl -XPUT 'http://localhost:9200/test/order/1-3?routing=key1&refresh=true' -d '{
   "productName":"doc 3"
}'; echo

curl -XPOST 'http://localhost:9200/test/order/_mget?pretty' -d '{
    "docs" : [
        {
            "_index" : "test",
            "_type" : "order",
            "_id" : "1-1",
            "_routing" : "key1"
        },
        {
            "_index" : "test",
            "_type" : "order",
            "_id" : "1-2",
            "_routing" : "key1"
        },
        {
            "_index" : "test",
            "_type" : "order",
            "_id" : "1-3",
            "_routing" : "key1"
        }
    ]
}'; echo

curl -XPOST 'http://localhost:9200/test/order/_mget?pretty&routing=key1' -d '{
	"ids": [
		"1-1",
		"1-2",
		"1-3"
	]
}'; echo
```

Closes #3996.
2013-10-28 21:05:55 +01:00
Lee Hinman e3db12bf50 Add the 'recovery' _cat API endpoint
This addes the _cat/recovery/{index} API endpoint, which displays
information about the status of recovering shards. An example of the
output:

index shard node                   target    recovered     %
test2 0     Fwo7c_6MSdWM0uM1Ho4t-g 147304414  19236101 13.1%
test  0     Fwo7c_6MSdWM0uM1Ho4t-g 145891423 119640535 82.0%

Fixes #3969
2013-10-28 13:43:02 -06:00
Alexander Reelsen ec0880df45 Add version to prebuilt analyzers
This patch takes the version of the created index into account when a
prebuilt analyzer is created.
So, if an index was created with 0.90.4, then the prebuilt analyzers
will be the same than on the 0.90.4 release.

One reason for this feature is the possibility to change pre built
analyzers like the standard one.

The patch tries to reuse analyzers as mutch as possible. So even if
version X.Y.Z and X.Y.A use the same lucene analyzers, the same instance
is reused in order to prevent overcreation of lucene analyzer instances.

Closes #3790
2013-10-28 18:11:35 +01:00
Britta Weber c9dab6991e rename and document "index.mapping.date.parse_upper_inclusive" setting for date fields
The setting causes the upper bound for a range query/filter to be rounded up,
therefore the name `round_ceil` seems to make more sense.

Also this commit removes the redundant fourth parameter to DateMathParser.parse(..)
which was never used.
was:    parse(String text, long now, boolean roundUp, boolean upperInclusive)
is now: parse(String text, long now, boolean roundCeil)

closes #3914
2013-10-28 15:48:31 +01:00
Adrien Grand 2e8bbe9e30 Make ContextIndexSearcher delegate more method calls to Engine.searcher().
When running tests, Engine.searcher() is going to be an AssertingIndexSearcher
so we definitely don't want to discard it. This commit fixes it as well as the
bugs it found.

Closes #3987
2013-10-28 13:12:09 +01:00
Boaz Leskes 6b52391dbd Added a ClusterHealthResponse.toString implementation for better error reporting in FullRollingRestartTests timeout failures. 2013-10-28 09:54:54 +01:00
Boaz Leskes 68de46ff05 Use XContentParser.isBooleanValue to detect all boolean values for the `_source` parameter for both _mget and _search
Closes #3981
2013-10-26 22:19:05 +02:00
Boaz Leskes 0f8149dca4 Added Booleans.isBoolean to allow detecting whether a char sequence contains a boolean value. Added XContentParser.isBooleanValue to allow testing if current value is of boolean nature.
Boolean values:
boolean type values
numeric (0 == false)
one of the following strings: "true","false","on","off","yes","no","0","1"
2013-10-26 22:15:35 +02:00
Adrien Grand b0b3748cae Re-apply pull-request #3956 now that the CLA has been signed. 2013-10-25 19:05:20 +02:00
Alexander Reelsen f9154de04f CompletionFieldMapper: Return error if weight is no integer
In order to make sure that people do not get confused, if they
index a float as weight, it makes more sense to reject it instead of
silently parsing it to an integer and using it.

The CompletionFieldMapper now checks for the type of the number which
is being read and throws and exception if the number is something else
than int or long.

Closes #3977
2013-10-25 16:38:50 +02:00
Simon Willnauer e79f714b4b Unify REST responses for Acknowledged[Request|Response]
All Rest handlers that use AcknowledgedResponse look identical. Since
we gonna have more of them in the future we can abstract the logic away.
2013-10-25 14:31:28 +02:00
Helton Alponti 0e9c049da1 Fixed NPE in multi_match query when using lenient and field weight
Closes #3797
2013-10-25 00:49:17 +02:00
Luca Cavanna 48ac9747a8 Added third highlighter type based on lucene postings highlighter
Requires field index_options set to "offsets" in order to store positions and offsets in the postings list.
Considerably faster than the plain highlighter since it doesn't require to reanalyze the text to be highlighted: the larger the documents the better the performance gain should be.
Requires less disk space than term_vectors, needed for the fast_vector_highlighter.
Breaks the text into sentences and highlights them. Uses a BreakIterator to find sentences in the text. Plays really well with natural text, not quite the same if the text contains html markup for instance.
Treats the document as the whole corpus, and scores individual sentences as if they were documents in this corpus, using the BM25 algorithm.

Uses forked version of lucene postings highlighter to support:
- per value discrete highlighting for fields that have multiple values, needed when number_of_fragments=0 since we want to return a snippet per value
- manually passing in query terms to avoid calling extract terms multiple times, since we use a different highlighter instance per doc/field, but the query is always the same

The lucene postings highlighter api is  quite different compared to the existing highlighters api, the main difference being that it allows to highlight multiple fields in multiple docs with a single call, ensuring sequential IO.
The way it is introduced in elasticsearch in this first round is a compromise trying not to change the current highlight api, which works per document, per field. The main disadvantage is that we lose the sequential IO, but we can always refactor the highlight api to work with multiple documents.

Supports pre_tag, post_tag, number_of_fragments (0 highlights the whole field), require_field_match, no_match_size, order by score and html encoding.

Closes #3704
2013-10-24 23:38:00 +02:00
Britta Weber ebd328e340 remove trove import from mvel script
all subclasses of trove maps have been removed in 088e05b368
2013-10-24 19:44:45 +02:00
Simon Willnauer 3a34aa735e Upgrade to Lucene 4.5.1 2013-10-24 18:37:44 +02:00
Luca Cavanna 8e6c4ce8e8 Minor changes to no_match_size highlight parameter and highlight tests (#1171)
- Randomly store the field to highlight
- Updated test to use common assertions
- Restored previously commented out testCommonTermsQuery
2013-10-24 14:38:32 +02:00
Nik Everett 14a709f563 Highlighting can return excerpt with no highlights
You can configure the highlighting api to return an excerpt of a field
even if there wasn't a match on the field.

The FVH makes excerpts from the beginning of the string to the first
boundary character after the requested length or the boundary_max_scan,
whichever comes first.  The Plain highlighter makes excerpts from the
beginning of the string to the end of the last token before the requested
length.

Closes #1171
2013-10-24 14:38:32 +02:00
Simon Willnauer fb9cd5a562 Use abstract classes as super typs for Acknowledge operations
Currently we have a marker interface for Acknowledged[Request|Response],
this makes not much sense since we duplicate the code in each subclass
or class that implements the interface. We can simply use abstract
classes and have it implemented only once.
2013-10-24 14:01:43 +02:00
Simon Willnauer 7867de4f5b Refactor FieldData iterations
This commit primarily folds [Double|Bytes|Long|GeoPoint]Values.Iter
into [Double|Bytes|Long|GeoPoint]Values. Iterations now don't require
a auxillary class (Iter) but instead driven by native for loops. All
[Double|Bytes|Long|GeoPoint]Values are stateful and provide `setDocId`
and `nextValue` methods to iterate over all values in a document.
This has several advantage:

 * The amout of specialized classes is reduced
 * Iteration is clearly stateful ie. Iters can't be confused to be local.
 * All iterations are size bounded which prevents runtime checks and
   allows JIT optimizations / loop un-rolling and most iterations are
   branch free.
 * Due to the bounded iteration the need for a `hasNext` method call
   is removed.
 * Value iterations feels more native.

This commit also adds consistent documentation and unifies the calcualtion
if SortMode is involved.

This commit also changes the runtime behavior of BytesValues#getValue() such that it
will never return `null` anymore. If a document has no value in a field
this method still returns a `BytesRef` with a `length` of 0. To identify
documents with no values #hasValue() or #setDocument(int) should be used.
The latter should be preferred if the value will be consumed in the case
the document has a value.
2013-10-24 10:33:56 +02:00
Adrien Grand 7bd1a55f6e Revert "Fix for has_child can cause an infinite loop (100% CPU) when used in bool query."
Temporarily revert the commit while waiting for the CLA to be signed.
2013-10-24 09:43:58 +02:00
Josh Canfield adadc72da3 Fix for has_child can cause an infinite loop (100% CPU) when used in bool query.
Closes #3955
2013-10-24 09:24:14 +02:00
Shay Banon 35b573ff24 Transport: Have a separate channel for recovery
Have a separate channel for recovery, so it won't overflow the "low" channel which is also used for bulk indexing.

Also, rename the channel names to be more descriptive. Change low to bulk (for bulk based operations, currently just bulk indexing), med to reg (for "regular" operations), and high to state (for state based communication). The new channel for recovery will be named recovery, and the ping channel will remain the same.

closes #3954
2013-10-23 15:55:27 -07:00
Shay Banon a3122a88e4 Java API: Setting track scores does not affect scan search type
When setting track scores, the scan search type will return the scores for each document. The Java API builder does not properly set this value (it only sets it if a sort in in place, which is not relevant for scan search type).

closes #3949
2013-10-22 18:04:22 -07:00
Shay Banon 5bc3825c70 externalize writing "raw" fields to helper method 2013-10-21 12:19:14 -07:00
Martijn van Groningen 8d49aa398f Added facet support to the percolate api.
Closes #3851
2013-10-21 19:13:28 +07:00
Simon Willnauer f749db26e8 Allow awareness attributes to be reset via the API
Currently we don't allow resetting the awareness
attribute via the API since it requires at least one
non-empty string to update the setting. This commit
allows resetting this using an empty string.

Closes #3931
2013-10-18 16:25:00 +02:00
Blake Smith 03a89297ba Fix teh typos in javadocs 2013-10-18 12:19:37 +02:00
Shay Banon c9b0e1de6c Settings queue_size on index/bulk TP can cause rejection failures when executed over network
The #3526 fix was not complete, it handled cases of on node execution, but didn't properly handle cases where it was executed over the network, and forcing the execution of the replica operation when done over the wire.

This relates to #3854

closes #3929
2013-10-17 17:06:44 +03:00
Boaz Leskes 2593b6e644 Terms facet will now throw a parsing exception if no field, fields or a script is supplied.
Previously you'd get an NPE. Also added extra exception when called with unknown parameters.
2013-10-17 09:26:43 +02:00
Martijn van Groningen cc9ab111a0 Prohibit indexing a document with parent for a type that doesn't have a `_parent` field configured and prohibit adding a _parent field to an existing mapping.
Closes #3848 #3849
2013-10-15 18:29:44 +02:00
Simon Willnauer 89de3ab627 Added simple count down class that allows to be fast forwarded
Closes #3910
2013-10-15 17:47:51 +02:00
Luca Cavanna fcf13e0fa7 Delete warmer api to support acknowledgements
Added support for acknowledgements in delete warmer api using the generic mechanism introduced in#3786

Closes #3833
2013-10-15 17:47:50 +02:00
Luca Cavanna 31142ae471 Put warmer api to support acknowledgements
Added support for acknowledgements in put warmer api using the generic mechanism introduced in #3786

Closes #3831
2013-10-15 17:47:50 +02:00
Luca Cavanna 55f1eab09a Added generic cluster state update ack mechanism
Added new AckedClusterStateUpdateTask interface that can be used to submit cluster state update tasks and allows actions to be notified back when a set of (configurable) nodes have acknowledged the cluster state update. Supports a configurable timeout, so that we wait for acknowledgement for a limited amount of time (will be provided in the request as it curently happens, default 10s).

Internally, a low level AckListener is created (InternalClusterService) and passed to the publish method, so that it can be notified whenever each node responds to the publish request. Once all the expected nodes have responded or the timeoeout has expired, the AckListener notifies the action which will return adding the proper acknowledged flag to the response.

Ideally, this new mechanism will gradually replace the existing ones based on custom endpoints and notifications (per api).

Closes #3786
2013-10-15 17:47:50 +02:00
Alexander Reelsen 4d19239ec4 Add support for Lucene SuggestStopFilter
The suggest stop filter is an improved version of the stop filter, which
takes stopwords only into account if the last char of a query is a
whitespace. This allows you to keep stopwords, but to allow suggesting for
"a".

Example: Index document content "a word". You are now able to suggest for
"a" and get back results in the completion suggester, if the suggest stop
filter is used on the query side, but will not get back any results for
"a " as this is identified as a stopword.

The implementation allows to set the `remove_trailing` parameter for a
custom stop filter and thus use the suggest stop filter instead of the
standard stop filter.
2013-10-15 16:12:02 +02:00
Martijn van Groningen c1ec32aa1e Added `num_queries` and `memory_size` stats to percolate stats.
Closes #3883
2013-10-15 10:30:49 +02:00
Britta Weber 34441f3897 fix naming in function_score
- "boost" should be "boost_factor"
    - "mult" should be "multiply"

Also, store combine function names in ImmutableMap instead of iterating
over all possible names each time.

closes #3872 for master
2013-10-14 14:56:59 +02:00
Bogdan Dumitrescu 899189694f Replaced hardcoded boolean value with correct parameter
Implemented changes suggested by review.

Closes #3898
2013-10-14 14:52:45 +02:00
Simon Willnauer 7a7370e3c8 Add match query support for stacked tokens
SynonymFilters produces token streams with stacked tokens such that
conjunction queries need to be parsed in a special way such that the
stacked tokens are added as an innner disjuncition.

Closes #3881
2013-10-14 14:09:38 +02:00
Britta Weber 719d1e0318 fix bug in term vector api, payloads were not handled correctly when some where missing
The array holding the payloads (TermVectorFields.payloads) is reused for each token. If the
previous token had payloads but the current token had not, then the payloads of the previous
token were returned, because the payloads of the previous token were never invalidated.
For example, for a field only contained two tokens each occurring once, the first having a
payload and the second not, then for the second token, the payload of the first was returned.

closes #3873
2013-10-14 13:41:32 +02:00
Britta Weber 4e7a1788ea enable delimited payload token filter
closes #3859
2013-10-14 13:41:30 +02:00
Martijn van Groningen 7286a015db The `has_child` query's inner query now is wrapped in a filtered query with the child type as filter, this prevents other children from being returned as hit.
Extended the specialized simplified mapping source method to support metadata mapping fields. These fields can just specified as normal fields, but will automatically be placed as top level mapping field.

Closes #3818
2013-10-14 12:43:16 +02:00
Shay Banon c093e90d51 Segments API: Support merge id on segments (groups segments being merged)
Return a merge_id element in each segment of the segments API, allowing to group segments that are being merged as part of a single merge and indicate which ones are being merged now.
closes #3904
2013-10-14 11:04:48 +02:00
Simon Willnauer 9dc59e29fa Retry blocking if async indexing is rejected due to queue size
Some tests use AbstractIntegrationTest#indexRandom which sometimes uses async
indexing. This can easily run into queue size based rejections on a slow
box. In that case we should retry blocked indexing.
2013-10-14 10:55:09 +02:00
Alexander Reelsen df95453430 Added missing builder.endObject calls 2013-10-14 10:02:29 +02:00
Shay Banon 4421a3403a Query String: Support multiple fields regexp queries
The query string query should apply regexp queries to execute on multiple fields as all the other queries.
closes #3901
2013-10-13 01:27:37 +02:00
Shay Banon 420b3396f4 Set queue sizes by default on bulk/index thread pools
Now that we properly fixed the ability to set the queue size on the index / bulk thread pool, we should actually set them to a somehow reasonable value to protect from users potentially overflowing our system.

I suggest defaults to be 50 for bulk, and 200 for indexing.

Also, set the thread pool for get, which we should set (in a similar value to a "read" queue size we have today).
closes #3888
2013-10-12 21:51:37 +02:00
Shay Banon 8a3df0cf78 remove irrelevant comment now that we pass the reuse strategy 2013-10-12 21:27:38 +02:00
Alexander Reelsen e0b8b58479 Fix toXContent of GeoShapeQueryBuilder
A missing endObject() resulted in serialization errors.

Closes #3878
2013-10-11 17:51:58 +02:00
Simon Willnauer 2d523ace87 Support date math for `origin` decay function parsing
The parser used the method that was supposed to be used for parsing on
the indexing side that never supported date math.

Closes #3892
2013-10-11 17:20:25 +02:00
Boaz Leskes 977cb4a729 Make the get source REST API source fetching query parameters consistent with other API
The get source rest endpoint now uses _source_* parameters.
 Also it will now throw a validation error if you turn off source fetching.

Closes #3886
2013-10-11 12:25:21 +02:00
Subhash Gopalakrishnan b758b76da4 Support year units in date math expressions
According to http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-date-format.html, the date math expressions support M (month), w (week), h (hour), m (minute), and s (second) units. Why years are not supported? Please add support for year units.

Closes #3828.
Closes #3874.
2013-10-11 09:24:52 +02:00
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
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 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 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
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
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 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
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
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
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 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 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
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 291cb54c95 Fix misspelling. 2013-09-23 11:06:33 -05: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
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 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
Andrew Raines 6a18d05393 Add/fix index selectors.
Closes #3758.
2013-09-20 22:25:33 -05: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
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
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
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 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
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
Shay Banon 84242c208e improve failure message when timing out on green/yellow 2013-09-18 13:38:44 +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
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 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
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
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
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
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
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
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 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
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
Shay Banon d6a3fc09f0 better logging
trace log the low level details on recovery
2013-09-13 22:46:04 +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
Adrien Grand f03816ff07 Log failures at closing the SearcherManager. 2013-09-13 18:03:28 +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
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
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
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
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
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
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
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
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 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 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
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
Shay Banon b3d51df493 change to trace level logging 2013-09-05 20:30:22 +02:00
Shay Banon cebd3ca9c3 improve setting response/failure on nodes actions
we can use the index in the node ids list as the index for the array when we set the response or the exception, removing the need for an index AtomicInteger
2013-09-05 17:59:52 +02:00
Simon Willnauer 1b756ba23a Revert "Add FastVectorHighlighter support for more complex queries."
This reverts commit e943cc81a5.

The more complex queries support causes StackOverflowErrors that
can influence the cluster performance and stability dramatically.
This commit backs out this change to reduce the risk for deep
stacks.

Reverts #3357
2013-09-05 17:19:28 +02:00
Shay Banon 623e340d4f ignore rejected exception when shutting down in cluster service 2013-09-05 16:52:57 +02:00
Boaz Leskes c6ac5ac433 Make the acceptable compression overhead used by MultiOrdinals configurable and default to PackedInts.FASTEST (causing it to byte align).
Closes #3623

Before this commit , this was the output of TermsFacetSearchBenchmark, on my MacBookAir:

```
------------------ SUMMARY -------------------------------
                     name      took    millis
                  terms_s      7.3s        36
              terms_map_s     28.8s       144
                  terms_l     15.9s        79
              terms_map_l     15.5s        77
                 terms_sm        1m       319
             terms_map_sm      4.9m      1491
                 terms_lm      2.7m       825
             terms_map_lm      2.7m       829
          terms_stats_s_l     37.6s       188
         terms_stats_s_lm      2.4m       722
         terms_stats_sm_l      6.5m      1958
------------------ SUMMARY -------------------------------
```

After the change to FASTEST, we have:

```
------------------ SUMMARY -------------------------------
                     name      took    millis
                  terms_s      6.9s        34
              terms_map_s     28.8s       144
                  terms_l     17.4s        87
              terms_map_l     17.6s        88
                 terms_sm       42s       210
             terms_map_sm      4.2m      1287
                 terms_lm      2.3m       714
             terms_map_lm      2.3m       716
          terms_stats_s_l     37.5s       187
         terms_stats_s_lm      1.6m       482
         terms_stats_sm_l      6.1m      1852
------------------ SUMMARY -------------------------------
```
2013-09-05 15:05:37 +02:00
Boaz Leskes e33107d493 TransportSearchTypeAction logs used shards under TRACE level 2013-09-05 13:34:12 +02:00
Boaz Leskes 1de7b1a70c Minor cleanup to logging messages. 2013-09-05 12:42:38 +02:00
Simon Willnauer 764a519627 Return empty completion stats if engine throws an exception
If the index shard is not started yet the underlying engine can
throw an exception since not everything is initialized. This can
happen if a shard is just about starting up or recovering / initalizing
and stats are requested.

Closes #3619
2013-09-05 10:10:40 +02:00
Boaz Leskes f93efc3605 Added cluster state version to the debug logging of shards instances used in search. 2013-09-04 11:08:00 +02:00
Simon Willnauer d5323231fe Clean up warnings in commons package. 2013-09-03 21:52:50 +02:00
Simon Willnauer 2ac7421f89 Remove UUID class in favor of Strings util methods 2013-09-03 21:52:50 +02:00
Martijn van Groningen d5a47e597d Removed ThreadLocals class and its references, since it is no longer needed. 2013-09-03 17:57:11 +02:00
Simon Willnauer b39961b2a6 Prevent ShardAllocator to modify the unassigned while running allocations
The unassinged list is used to make allocation decisions but is currently
modified during allocation runs which causes primaries to be throttled
during allocation. If this happens newly allocated indices can be stalled
for a long time turning a cluster into a RED state if concurrent relocations
and / or recoveries are happening.

Closes #3610
2013-09-03 17:09:44 +02:00
Luca Cavanna 45c8da3e98 Improved logic that removes top-level folder from archives when needed
Whether we remove the top-level folder from the archive depends now on the zip itself and not on where it was downloaded from. That makes it work installing local files too.

Closes #3582
2013-09-03 10:34:32 +02:00
Simon Willnauer eb2fed85f1 Add 'min_input_len' to completion suggester
Restrict the size of the input length to a reasonable size otherwise very
long strings can cause StackOverflowExceptions deep down in lucene land.
Yet, this is simply a saftly limit set to `50` UTF-16 codepoints by default.
This limit is only present at index time and not at query time. If prefix
completions > 50 UTF-16 codepoints are expected / desired this limit should be raised.
Critical string sizes are beyone the 1k UTF-16 Codepoints limit.

Closes #3596
2013-09-03 10:26:37 +02:00
Martijn van Groningen eed7f0bdb3 Restructured the transport action code for multi percolate api. 2013-09-03 10:19:58 +02:00
Boaz Leskes 7307e37efe Previously added logging in TransportRefreshAction caused NPE if search shards had errors (or was not yet started/assigned)
Better formatting for logging in TransportRefreshAction
2013-09-02 21:53:00 +02:00
Boaz Leskes a48c437ffb Search action now log in debug what shards/nodes were used before moving to second phase
Added  a debug log for executing a refresh request on a shard.
2013-09-02 17:17:53 +02:00
Luca Cavanna fc1d6670df Added log lines to log (debug level) acknowledgements regarding index alias creation and index state change 2013-09-02 12:16:14 +02:00
Luca Cavanna 38be478c46 Fixed close index when the index is already closed
Closes #3601
2013-09-02 10:58:09 +02:00
Boaz Leskes be09103258 SearchWhileCreatingIndexTests didn't always supply enough node for write consistency requirements and thus hanged.
Added more debug logging to TransportShardReplicationOperationAction

*Changed* node naming in tests from GUIDs to node# based naming as they are much easier to read
2013-08-30 20:56:23 +02:00
Martijn van Groningen be00437c65 Changed expectedOperationsPerItem from AtomicInteger array to AtomicReferenceArray<AtomicInteger>.
Made node stopping / starting less aggressive in RecoveryPercolatorTests.
2013-08-30 16:10:53 +02:00
Simon Willnauer c9c850167f Add more trace logging if shard allocation is throttled 2013-08-30 14:05:53 +02:00
Martijn van Groningen a7b2b7847a Use atomic collections to make sure all of the memory contents are visible from writing to reading thread. 2013-08-30 00:06:45 +02:00
Simon Willnauer 7113731022 Execute listeners on current thread if threadpool is shutting down 2013-08-29 16:40:38 +02:00
Nik Everett 10e55bd3ef Recheck cutoffScore during phrase_suggest merge.
The goal is to throw out suggestions that only meet the cutoff in some
shards.  This will happen if your input phrase is only contained in a
few shards.  If your shards are unbanced this rechecking can throw out
good suggestions.

Closes #3547.
2013-08-29 16:40:38 +02:00
Martijn van Groningen 76939b82d3 Removed unnecessary catch clause.
Improved logging
2013-08-29 16:00:59 +02:00
Boaz Leskes ffd019c07e Logging shard level multi percolate errors under debug rather than trace 2013-08-29 14:15:38 +02:00
Martijn van Groningen 25c1b93d57 Ignore AlreadyExpiredException exception during when indexing a document on a replica.
The document should just be indexed to stay consistent with the primary shard.
2013-08-29 11:38:13 +02:00
Simon Willnauer 11ff90420a Fixed typo 2013-08-29 10:27:20 +02:00
Boaz Leskes e807c99f27 Fixed a typo in the config of light finnish stemmer (old last_finish is still supported for backward compatibility)
Closes #3594
2013-08-29 10:15:40 +02:00
Simon Willnauer b9558edeff Prevent allocation algorithm from prematurely exiting balance operations
In a special case if allocations from the "heaviest" to the "lighter" nodes is not possible
due to some allocation decider restrictions like zone awareness. if one zone has for instance
less nodes than another zone so one zone is horribly overloaded from a balanced perspective but we
can't move to the "lighter" shards since otherwise the zone would go over capacity.

Closes #3580
2013-08-28 23:31:35 +02:00
Simon Willnauer 82397c0554 Treat empty prefrence as a `not set` in Plain Operation Routing
An empty preference was causing a AIOOB exception in
PlainOperationRouting. We now check for `null` or `empty` instead of
just `null`

Closes #3591
2013-08-28 20:57:39 +02:00
Boaz Leskes 86cb76a0ce Added a status method CountResponse that resolve shard failures into rest status code. That method is now used in RestCountAction to return proper status.
Closes #3585
2013-08-28 20:21:22 +02:00
Shay Banon db11c30dd5 batch failed shards into a single cluster state event
make sure we process as much as possible failed shard events within a single cluster state event callback (similar to what we do with started shards)
2013-08-28 15:29:16 +02:00