Commit Graph

9971 Commits

Author SHA1 Message Date
Simon Willnauer bf1aed14db [SCRIPTS] GetIndexedScript call can deadlock
GetIndexedScript can deadlock since they perform blocking operation
on the network thread. This commit moves the blocking to an async operation
2014-10-29 09:54:42 +01:00
Simon Willnauer e3a09e1933 [TEST] Move rebalance setting to the index level / pass it on index creation 2014-10-29 09:24:35 +01:00
Simon Willnauer b23e6e0593 [TEST] initialize SUITE | GLOBAL scope cluster in a private random context
Today any call to the current randomized context modifies the random
sequence such that cluster initialization is context dependent. If due
to an error for instance a static util method is used like `randomLong`
inside the TestCluster instead of the provided Random instance all
reproducibility guarantees are gone. This commit adds a safe mechanism
to initialize these clusters even if a static helper is used. All none
test scope clusters are now initialized in a private randomized context.
2014-10-28 23:53:25 +01:00
Areek Zillur 96f1606cdc Completion Suggester: Fix CompletionFieldMapper to correctly parse weight
- Allows weight to be defined as a string representation of a positive integer

closes #8090
2014-10-28 18:39:02 -04:00
Michael McCandless 462336c135 Test: fix test to optimize and flush in the end to try to prevent 'Delete Index failed - not acked' 2014-10-28 18:20:30 -04:00
Michael McCandless d988302860 Tests: stop printing all thread stacks on failure: it's too noisy 2014-10-28 17:57:17 -04:00
Simon Willnauer 31db8cca4e s/MapBuilder/singletonMap in InternalEngine 2014-10-28 21:39:51 +01:00
Simon Willnauer 0a072f6fd0 [ENGINE] Add current translog ID to commit meta before closing
Today we simply close the IW when we have to open a new one if ie.
we change merge settings. Yet, the API is deprecated and under the hood
it commits the IW. For safety we should add the current translog ID and
use rollback instead to not wait for merges.
2014-10-28 21:37:21 +01:00
Martijn Laarman 006acfe8bf Added missing percolate API parameters (percolate_routing, percolate_preference) to the REST API Spec
Closes #7173
2014-10-28 19:34:34 +01:00
Jérémy Lecour ed406fb154 Use the simpler command line syntax in the Debian init script
It's definitely not a blocker, but it would be nice to be consistent.

Closes #5033
2014-10-28 19:31:06 +01:00
uboness ae1e9edb25 Enabled overriding the request headers in the clients
One can set the headers sent with request by the clients by setting the `request.headers` setting. This commit enables overriding any such set headers directly on the requests.
2014-10-28 16:36:17 +01:00
Costin Leau 7b0afaff6c Improve handling of multicast binding exceptions
In case the multicast binding fails (due to socket errors), abort zen
pinging code and throw a better error message
Relates #8225

(cherry picked from commit f819cff77a0ef95b340afc2f22e3464283803960)
2014-10-28 16:57:21 +02:00
Costin Leau 9e7e37076f Introduce elasticsearch.in.bat (i.e. es.in for Windows)
Break-out common functionality between elasticsearch.bat and service.bat
Relates #8237

(cherry picked from commit 87095e79534bcef97b2b275322c924bd96b34e3b)
2014-10-28 16:33:20 +02:00
Clinton Gormley b94b3b2bcd Tests: Refixed the put_alias tests
The missing/null index parameter is in the URL, not the body.
So it should be required, and throw a param error if not provided.

Relates #7863
2014-10-28 13:39:05 +01:00
Uwe Schindler 1d95630a35 Make indexQueryParserService available. Closes #8248 2014-10-28 12:30:36 +01:00
Clinton Gormley f9b5906871 Test: Change missing/null alias test to catch a request error, not a param error
Relates: #7863
2014-10-28 11:43:10 +01:00
Dmitriy Khvatov 71a90ab4fe Docs: Update multi-get.asciidoc
Duplicate word

Closes #8228
2014-10-28 10:58:47 +01:00
Spencer 055e766be7 Updated paths to be inline with #8240 2014-10-27 23:08:19 -07:00
tlrx 8c864cf3f6 Cat Recovery API: Reverting changes introduced with commit e1c75bae87
Adding these 2 headers to the CAT Recovery made the CI tests hanging for a loooong time.

Related to #8041
2014-10-27 20:49:58 +01:00
Simon Willnauer d6ae832c90 Delegate write.lock to primary directory 2014-10-27 20:03:36 +01:00
Zachary Tong f5b2dfd052 Aliases: Throw exception if index is null or missing when creating an alias
Fixes a bug where alias creation would allow `null` for index name, which thereby
applied the alias to _all_ indices.  This patch makes the validator throw an
exception if the index is null.

```bash
POST /_aliases
{
   "actions": [
      {
         "add": {
            "alias": "empty-alias",
            "index": null
         }
      }
   ]
}
```
```json
{
   "error": "ActionRequestValidationException[Validation Failed: 1: Alias action [add]: [index] may not be null;]",
   "status": 400
}
```

The reason this bug wasn't caught by the existing tests is because
the old test for nullness only validated against a cluster which had
zero indices.  The null index is translated into "_all", and since
there are no indices, this fails because the index doesn't exist.
 So the test passes.

However, as soon as you add an index, "_all" resolves and you get the
situation described in the original bug report:  null index is
accepted by the alias, resolves to "_all" and gets applied to everything.

The REST tests, otoh, explicitly tested this bug as a real feature and therefore
passed.  The REST tests were modified to change this behavior.

Fixes #7863
2014-10-27 14:39:01 -04:00
Alex Ksikes 0be5c60bce MLT Query: use ParseField#withAllDeprecated for percent_terms_to_match
Also the parameter was deprecated but not removed so we keep it in the doc and
mark it as deprecated ...

Closes #8241
2014-10-27 17:35:06 +01:00
Alex Ksikes 991f3e2cd3 Docs: fix tags for dfs and new like parameter 2014-10-27 15:42:44 +01:00
Clinton Gormley fbd0403a6f Documented that HTTP pipelining is not supported 2014-10-27 14:49:48 +01:00
Simon Willnauer 9a5264660d Remove unused imports 2014-10-27 14:26:04 +01:00
Simon Willnauer 5190cee7fc [CORE] remove usage of Directory#fileExists
This commit removes the usage of #fileExists which has been
deprecated long ago an can be a source of race conditions.
2014-10-27 14:21:25 +01:00
Martijn van Groningen 35ede09511 Core: Cleanup non nested filter to not flip the bits in the FixedBitSet returned by the wrapped filter.
If the filter producing the FBS were to be cached then it would flip bits each time the NonNestedDocsFilter was executed.
In our case we cache the NonNestedDocsFilter itself so that didn't happen each time this filter was used.
However the hashcode of NonNestedDocsFilter and NestedDocsFilter was the same, since NonNestedDocsFilter directly used NestedDocsFilter#hashCode()

Closes #8227
Closes #8232
2014-10-27 13:57:52 +01:00
Boaz Leskes da70b5c847 Test: remove wait on events from multipleNodesShutdownNonMasterNodes
The test validates that minimum master node is honored after shutting down nodes. When nodes are restarted we may go through a couple of master election of a master is elected and  discovers some of the old nodes left before all new node have joined. Processing that node failure the master de-elects it self, which is fine because we will start a new master election. Test however runs a clusterHealth call with a  wait for event. This is implemented using a cluster state update task which fails when the master steps down. Longer term fix requires a rewrite of the cluster health API code but a quick fix is not check for events (not needed for this test).
2014-10-27 13:31:27 +01:00
Simon Willnauer a12b34c36c [TEST] Beef up test and replace deprecated API 2014-10-27 13:05:12 +01:00
Adrien Grand 7ea490dfd1 Aggregations: Return the sum of the doc counts of other buckets.
This commit adds a new field to the response of the terms aggregation called
`sum_other_doc_count` which is equal to the sum of the doc counts of the buckets
that did not make it to the list of top buckets. It is typically useful to have
a sector called eg. `other` when using terms aggregations to build pie charts.

Example query and response:

```json
GET test/_search?search_type=count
{
  "aggs": {
    "colors": {
      "terms": {
        "field": "color",
        "size": 3
      }
    }
  }
}
```

```json
{
   [...],
   "aggregations": {
      "colors": {
         "doc_count_error_upper_bound": 0,
         "sum_other_doc_count": 4,
         "buckets": [
            {
               "key": "blue",
               "doc_count": 65
            },
            {
               "key": "red",
               "doc_count": 14
            },
            {
               "key": "brown",
               "doc_count": 3
            }
         ]
      }
   }
}
```

Close #8213
2014-10-27 12:11:26 +01:00
tlrx 96e62b3c1b [TESTS Fix wrong assertion in test introduced by #8128 2014-10-27 11:11:54 +01:00
tlrx e1c75bae87 Cat API: Add node name to _cat/recovery
Add source_node and target_node fields to the recovery cat API. Also fixed and updated the documentation which was not complete concerning fields names.

Closes #8041
2014-10-27 09:47:26 +01:00
Simon Willnauer baa1e020ce [TEST] Add test for #8226 2014-10-27 09:19:29 +01:00
Nirmal Chidambaram b8d2e2cd29 Core: Validates bool values in yaml for node settings
- Added parseBooleanExact in booleans which throws exception in case of
  parse failure
- Used ParseExact in static's to make it consistent

+ code review fixes

- Added unit test
- Changed Exception Type to ElasticSearchIllegalArg from Parse
- used isExplicit*

Closes #8097
2014-10-27 11:27:41 +09:00
Boaz Leskes 7f14674ff5 Recovery: RecoveriesCollection.findRecoveryByShard should call recoveryStatus.tryIncRef before accessing fields
The function iterates over a snapshot of on going recoveries and thus may access RecoveryStatus objects that are already finished.

Closes #8231
2014-10-26 21:10:17 +01:00
Simon Willnauer bb7ad4ab96 [TEST] NettyTransportMultiPortIntegrationTests used wrong random to
initialize ports.

JUnit uses an instance per test which caused the prot range to be
initialized twice since suite level tests are not configured in a
different context.
2014-10-26 13:07:32 +01:00
Simon Willnauer 58c292dc14 add missing imports 2014-10-26 10:09:18 +01:00
Simon Willnauer 75595bd0e6 [TEST] `Scope.SUITE` is not reproducible due to late cluster initialization
The cluster for `Scope.SUITE` tests must be initialize in a static manner
before the first test runs otherwise the random context used to initialize
the cluster is taken from tests randomness rather than the suites randomness.
This means test clusters will have different setups if only a single test is
executed or even the test might have a entirely different random sequence.
2014-10-26 09:42:35 +01:00
Boaz Leskes b82e2c7083 Test: testRecoverFromPreviousVersion should refresh from new nodes if running against v<1.3.0
This is due to a bug in older version causing refreshes to potentially be missed due to relocations #6545

Also:
- Changed test to keep track of ids and report missing ones.
- Removed total count check from assertSearchHits in order to enable per id checks in cased of a mismatch
- Added a printable unique id part the ids of dummy documents added by indexRandom. The current random unicode id
sometimes prints as ???? to the logs making them hard to trace
2014-10-25 23:08:42 +02:00
Alex Ksikes 4da407a869 MLT Query: versatile 'like' parameter
The MLT query has a lot of parameters. For example, a set of documents is
specified with either `like_text`, `ids` or `docs`, with at least one
parameter required. This commit groups all the document specification
parameters under one called `like`. The syntax is described below and could
easily be extended to allow for new means of specifying document input. The
`like_text`, `ids` and `docs` parameters are deprecated.

As a single piece text:

{
  "query": {
    "more_like_this": {
      "like": "some text here"
    }
  }
}

As a single item:

{
  "query": {
    "more_like_this": {
      "like": {
        "_index": "imdb",
        "_type": "movies",
        "_id": "88247"
      }
    }
  }
}

Or as a mixture of all:

{
  "query": {
    "more_like_this": {
      "like": [
        "Some random text ...",
        {
          "_index": "imdb",
          "_type": "movies",
          "_id": "88247"
        },
        {
          "_index": "imdb",
          "_type": "movies",
          "doc": {
            "title": "Document with an artificial title!"
          }
        }
      ]
    }
  }
}

Closes #8039
2014-10-25 11:04:51 +02:00
Simon Willnauer c95545a64e Catch both FileNotFound & NoSuchFileException 2014-10-25 09:34:18 +02:00
David Pilato 62d8b7ab97 Docs: rolling upgrade process seems incorrect
When reading the [rolling upgrade process](http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/setup-upgrade.html#rolling-upgrades), you can see that we wrote:

* disable allocation
* upgrade node1
* upgrade node2
* upgrade node3
* ...
* enable allocation

That won't work as after a node has been removed and restarted, no shard will be allocated anymore.
So closing node2 and remaining nodes, won't help to serve index and search request anymore.

We should write:

* disable allocation
* upgrade node1
* enable allocation
* wait for shards being recovered on node1
* disable allocation
* upgrade node2
* enable allocation
* wait for shards being recovered on node2
* disable allocation
* upgrade node3
* enable allocation
* wait for shards being recovered on node3
* disable allocation
* ...
* enable allocation

I think this documentation update should go in 1.3, 1.4, 1.x and master branches.

Closes #8218
Closes #7973.
2014-10-24 16:45:42 +02:00
Marcin Mikosik ed86d925cd Docs: fixed typo in documentation
Closes #8205
2014-10-24 15:27:31 +02:00
markharwood d12ae196af Bulk indexing: Fix 8125 hanged request when auto create index is off.
If a bulk request contains a mix of indexing requests for an existing index and one that needs to be auto-created but a cluster configuration prevents the auto-create of the new index the ingest process hangs. The exception for the failure to create an index was not caught or reported back properly. Added a Junit test to recreate the issue and the associated fix is in TransportBulkAction.

Closes #8125
2014-10-24 13:50:37 +01:00
Alex Ksikes a87a23447f ParseField: Support for when all fields are deprecated
Closes #8067
2014-10-24 14:35:38 +02:00
Alex Ksikes 437c5d0d3b Term Vectors: removed Nullable annotation on a primitive type 2014-10-24 13:49:42 +02:00
Simon Willnauer c09af6df61 [STORE] Don't catch FNF/NSF exception when reading metadata
When reading metadata we do catch FileNotFound and NoSuchFileExceptions
today, log the even and return an empty metadata object. Yet, in some cases
this might be the wrong thing todo ie. if a commit point is provided these
situations are actually an error and should be rethrown. This commit
pushes the responsiblity to the caller to handle this exception.

Closes #8207
2014-10-24 12:19:30 +02:00
Simon Willnauer 4a14c635c8 [CACHE] Expose concurrency_level on all caches
The concurrency level allows to configure the cache internal segments
used to cache data. This can have direct impact on evicition rates since
memory bound caches are equally divided into segments which can cause
early evictions if cache entries are not well balanced.

Relates to #7836
2014-10-24 11:45:13 +02:00
Simon Willnauer 347ce36654 [UTILITIES] Introduce a RefCounted interface and basic impl
We already have two places duplicating this rather hairy logic, this
commit intorduces a new RefCoutned interace and an abstract implementation
that can be used for delegation. It factors out all the reference counting
and adds single and multithreaded test for it.

Closes #8210
2014-10-24 10:33:54 +02:00
Boaz Leskes f72e0c89f7 test: RelocationTests.testCancellationCleansTempFiles may fail due to io errors while check temp files are deleted
Windows can throw NoSuchFileException when using File.walkFileTree and deleting files concurrently. This commit changes IO exceptions into assertion error so that assertBusy will wait for them as well.
2014-10-24 09:49:18 +02:00