Commit Graph

6878 Commits

Author SHA1 Message Date
Simon Willnauer bbffca193c Fail engine if metadata is corrupted on recovery start 2015-05-04 12:18:22 +02:00
Simon Willnauer 7e5f9d5628 Merge branch 'master' into pr-10624
Conflicts:
	src/main/java/org/elasticsearch/index/engine/EngineConfig.java
	src/main/java/org/elasticsearch/index/shard/IndexShard.java
	src/test/java/org/elasticsearch/index/engine/InternalEngineTests.java
	src/test/java/org/elasticsearch/index/engine/ShadowEngineTests.java
2015-05-04 11:37:54 +02:00
Shay Banon b87d360e79 Automatically thread client based action listeners
Today, we rely on the user to set request listener threads to true when they are on the client side in order not to block the IO threads on heavy operations. This proves to be very trappy for users, and end up creating problems that are very hard to debug.
Instead, we can do the right thing, and automatically thread listeners that are used from the client when the client is a node client or a transport client.
This change also removes the ability to set request level listener threading, in the effort of simplifying the code path and reasoning around when something is threaded and when it is not.
closes #10940
2015-05-04 11:05:42 +02:00
Simon Willnauer 23ac32e616 Remove old 0.90 shard allocator
the `even_shard` allocator has been replaced years ago in early 0.90.
We can remove it now in 2.0 since the new one is considered stable.
2015-05-04 10:48:18 +02:00
Simon Willnauer fe7d018f0c [TEST] make LuceneTest extraFS proof 2015-05-04 10:33:47 +02:00
Adrien Grand b72f27a410 Core: Cut over to the Lucene filter cache.
This removes Elasticsearch's filter cache and uses Lucene's instead. It has some
implications:
 - custom cache keys (`_cache_key`) are unsupported
 - decisions are made internally and can't be overridden by users ('_cache`)
 - not only filters can be cached but also all queries that do not need scores
 - parent/child queries can now be cached, however cached entries are only
   valid for the current top-level reader so in practice it will likely only
   be used on read-only indices
 - the cache deduplicates filters, which plays nicer with large keys (eg. `terms`)
 - better stats: we already had ram usage and evictions, but now also hit count,
   miss count, lookup count, number of cached doc id sets and current number of
   doc id sets in the cache
 - dynamically changing the filter cache size is not supported anymore

Internally, an important change is that it removes the NoCacheFilter infrastructure
in favour of making Query.rewrite specializing the query for the current reader so
that it will only be cached on this reader (look for IndexCacheableQuery).

Note that consuming filters with the query API (createWeight/scorer) instead of
the filter API (getDocIdSet) is important for parent/child queries because
otherwise a QueryWrapperFilter(ParentQuery) would run the wrapped query per
segment while relations might be cross segments.
2015-05-04 09:02:15 +02:00
Robert Muir 3a89b990ea remove another unnecessary permission 2015-05-03 23:37:05 -04:00
Robert Muir fc54ff5f10 remove now-unnecessary test permission 2015-05-02 15:19:01 -04:00
Robert Muir 86fc8ceac7 simplify security rules 2015-05-02 14:42:06 -04:00
Robert Muir 8c0d03c3ee add a hack for windows 2015-05-02 12:41:38 -04:00
Robert Muir bdd6d9c705 heisenbug 2015-05-02 12:27:38 -04:00
Robert Muir e1238c5e4c add 2 more
x
2015-05-02 12:11:33 -04:00
Robert Muir ff44f45af1 log this 2015-05-02 12:08:46 -04:00
Robert Muir db003a0b32 remove hack 2015-05-02 10:52:27 -04:00
Robert Muir 50a785c546 add a hack to see if this fixes windows issues 2015-05-01 16:41:49 -04:00
Robert Muir dbcdb40f68 fix sigar policy line that cannot be really working 2015-05-01 16:02:00 -04:00
Robert Muir 6e6949d3f4 Add debugging when security init screws up (or at trace level if you wish) 2015-05-01 15:47:50 -04:00
Robert Muir 5e87801a4b Merge branch 'master' into eight_point_three 2015-05-01 15:24:06 -04:00
Robert Muir 09ff11812e add debugging 2015-05-01 14:58:18 -04:00
Robert Muir c15f3eff3a Merge branch 'die_cwd_die' of github.com:elastic/elasticsearch 2015-05-01 12:06:02 -04:00
Robert Muir 260f5eb9ff Merge pull request #10913 from rmuir/spanspanspanspanspan
Add span within/containing queries.
2015-05-01 11:26:08 -04:00
Robert Muir aade6194b7 Add span within/containing queries.
Expose new span queries from https://issues.apache.org/jira/browse/LUCENE-6083

Within returns matches from 'little' that are enclosed inside of a match from 'big'.
Containing returns matches from 'big' that enclose matches from 'little'.
2015-04-30 23:31:31 -04:00
Igor Motov c165afb4d5 Logging: Add logging of slow cluster state tasks
Closes #10874
2015-04-30 19:13:49 -04:00
Jack Conradson aa968f6b65 Scripting: Add Field Methods
Added infrastructure to allow basic member methods in the expressions
language to be called.  The methods must have a signature with no arguments.  Also
added the following member methods for date fields (and it should be easy to add more)
* getYear
* getMonth
* getDayOfMonth
* getHourOfDay
* getMinutes
* getSeconds

Allow fields to be accessed without using the member variable [value].
(Note that both ways can be used to access fields for back-compat.)

closes #10890
2015-04-30 15:36:46 -07:00
Ryan Ernst 4ef9f3ca63 Mappings: Remove file based default mappings
Using files that must be specified on each node is an anti-pattern
from the API based goal of ES. This change removes the ability
to specify the default mapping with a file on each node.

closes #10620
2015-04-30 13:50:35 -07:00
Ryan Ernst a0451a37cc Upgrade lucene snapshot to r1677039 2015-04-30 13:43:19 -07:00
Boaz Leskes d596f5cc45 Decouple recoveries from engine flush
In order to safely complete recoveries / relocations we have to keep all operation done since the recovery start at available for replay. At the moment we do so by preventing the engine from flushing and thus making sure that the operations are kept in the translog. A side effect of this is that the translog keeps on growing until the recovery is done. This is not a problem as we do need these operations but if the another recovery starts concurrently it may have an unneededly long translog to replay. Also, if we shutdown the engine for some reason at this point (like when a node is restarted)  we have to recover a long translog when we come back.

To void this, the translog is changed to be based on multiple files instead of a single one. This allows recoveries to keep hold to the files they need while allowing the engine to flush and do a lucene commit (which will create a new translog files bellow the hood).

Change highlights:
- Refactor Translog file management to allow for multiple files.
- Translog maintains a list of referenced files, both by outstanding recoveries and files containing operations not yet committed to Lucene.
- A new Translog.View concept is introduced, allowing recoveries to get a reference to all currently uncommitted translog files plus all future translog files created until the view is closed. They can use this view to iterate over operations.
- Recovery phase3 is removed. That phase was replaying operations while preventing new writes to the engine. This is unneeded as standard indexing also send all operations from the start of the recovery  to the recovering shard. Replay all ops in the view acquired in recovery start is enough to guarantee no operation is lost.
- IndexShard now creates the translog together with the engine. The translog is closed by the engine on close. ShadowIndexShards do not open the translog.
- Moved the ownership of translog fsyncing to the translog it self, changing the responsible setting to `index.translog.sync_interval` (was `index.gateway.local.sync`)

Closes #10624
2015-04-30 23:42:50 +03:00
Adrien Grand 12c19508fb Tests: Fix test bug in aggregations' EquivalenceTests due to the change of the default min_doc_count. 2015-04-30 19:14:56 +02:00
Martijn van Groningen 7a6fe809d0 inner_hits: Don't use bitset cache for children filters.
Only parent filters should use bitset filter cache, to avoid memory being wasted.
Also in case of object fields inline the field name into the nested object,
instead of creating an additional (dummy) nested identity.

Closes #10662
Closes #10629
2015-04-30 16:56:43 +02:00
Adrien Grand e5be85d586 Aggs: Change the default `min_doc_count` to 0 on histograms.
The assumption is that gaps in histogram are generally undesirable, for instance
if you want to build a visualization from it. Additionally, we are building new
aggregations that require that there are no gaps to work correctly (eg.
derivatives).
2015-04-30 15:48:23 +02:00
Colin Goodheart-Smithe d16bf992a9 Aggregations: min_bucket aggregation
An aggregation to calculate the minimum value in a set of buckets.

Closes #9999
2015-04-30 13:34:21 +01:00
javanna 77ac4528fb Transport: read/writeGenericValue to support BytesRef
Add support for BytesRef to existing StreamInput#readGenericValue and StreamOutput#writeGenericValue

Closes #10878
2015-04-30 10:59:01 +02:00
Ryan Ernst 2fd387d378 fix dumb test copy/paste mistake 2015-04-29 23:33:43 -07:00
Ryan Ernst 79a1c38ed6 Mappings: Fix _field_names to not have doc values
When doc values were turned on a by default, most meta fields
had it explicitly disabled.  However, _field_names was missed.
This change forces doc values to be off always for _field_names
and removes the unnecessary support when creating index fields.

closes #10892
2015-04-29 23:12:16 -07:00
Ryan Ernst d8fed71fd4 Merge branch 'master' into die_cwd_die 2015-04-29 16:48:13 -07:00
Ryan Ernst 5236a3d226 fix some tests, all fast tests now pass 2015-04-29 16:32:54 -07:00
Igor Motov 8e5543dea0 Test: ignore cluster state differences on the nodes that disconnected from the master 2015-04-29 12:49:41 -04:00
Igor Motov bac135261c Test: make sure that tests are not affected by changing in address resolution settings 2015-04-29 12:49:40 -04:00
Igor Motov 38be1e8a1a Test: remove reference to the local node before comparing cluster states in ensureClusterStateConsistency 2015-04-29 12:49:40 -04:00
Simon Willnauer 9828e955f3 [TEST] enable host name resolving to gain consistent transport addresses in clusterstate 2015-04-29 12:49:40 -04:00
Simon Willnauer 58eed45ee5 [TEST] Move XContentTestUtils.java into o.e.test folder
Classes referenced by the Test base classes must be under this
package otherwise the test jar can't be used in a 3rd party application.
2015-04-29 12:49:40 -04:00
Igor Motov 478c253f89 Add support for cluster state diffs
Adds support for calculating and sending diffs instead of full cluster state of the most frequently changing elements - cluster state, meta data and routing table.

Closes #6295
2015-04-29 12:49:40 -04:00
Lee Hinman 6e1c995741 Clarify logging about disk thresholds in DiskThresholdDecider 2015-04-29 10:43:00 -06:00
David Pilato 3c3e9b63a7 fix: query string time zone not working
If you define exactly the same date range query using either `DATE+0200` notation or `DATE` and set `timezone: +0200`, elasticsearch gives back different results:

```
DELETE foo
PUT /foo
{
  "mapping": {
    "tweets": {
      "properties": {
        "tweet_date": {
          "type": "date"
        }
      }
    }
  }
}

POST /foo/tweets/1/
{
  "tweet_date": "2015-04-05T23:00:00+0000"
}
POST /foo/tweets/2/
{
  "tweet_date": "2015-04-06T00:00:00+0000"
}

GET /foo/tweets/_search?pretty
{
    "query": {
        "query_string": {
            "query": "tweet_date:[2015-04-06T00:00:00+0200 TO 2015-04-06T23:00:00+0200]"
        }
    }
}
GET /foo/tweets/_search?pretty
{
    "query": {
        "query_string": {
            "query": "tweet_date:[2015-04-06T00:00:00 TO 2015-04-06T23:00:00]",
            "time_zone": "+0200"
        }
    }
}
```

This PR fixes it and will also allow us to add the same feature to simple_query_string as well in another PR.

Closes #10477.

(cherry picked from commit 880f4a0)
2015-04-29 18:10:02 +02:00
Simon Willnauer d4463602f6 [TEST] Use a high shard delete timeout when clusterstates are delayed
`IndiceStore#indexCleanup` uses a disruption scheme to delay cluster state
processing. Yet, the delay is [1..2] seconds but tests are setting the shard
deletion timeout to 1 second to speed up tests. This can cause random not
reproducible failures in this test since the timeouts and delays are bascially
overlapping. This commit adds a longer timeout for this test to prevent these
problems.
2015-04-29 17:51:21 +02:00
Colin Goodheart-Smithe 0589adb8b4 Merge branch 'master' into feature/aggs_2_0
# Conflicts:
#	src/main/java/org/elasticsearch/search/builder/SearchSourceBuilder.java
2015-04-29 16:32:05 +01:00
javanna eb44e950d4 Java Api: remove unused private static class PartialField from SearchSourceBuilder
Partial fields have been removed from master a while ago, this is a leftover.
2015-04-29 17:26:32 +02:00
Colin Goodheart-Smithe 88aa8934a3 Merge branch 'master' into feature/aggs_2_0 2015-04-29 16:10:19 +01:00
Britta Weber a202c2a434 Revert "Write state also on data nodes if not master eligible"
This reverts commit 4088dd38cb.
2015-04-29 17:07:07 +02:00
Colin Goodheart-Smithe a33e77ff96 Muted intermittently failing tests
To reproduce the failures use `-Dtests.seed=D9EF60095522804F`
2015-04-29 16:04:29 +01:00
Colin Goodheart-Smithe 57a8885964 Merge branch 'master' into feature/aggs_2_0
# Conflicts:
#	src/main/java/org/elasticsearch/index/query/CommonTermsQueryBuilder.java
#	src/main/java/org/elasticsearch/search/aggregations/AggregationModule.java
#	src/main/java/org/elasticsearch/search/aggregations/AggregatorFactories.java
#	src/main/java/org/elasticsearch/search/aggregations/AggregatorParsers.java
#	src/main/java/org/elasticsearch/search/aggregations/InternalMultiBucketAggregation.java
#	src/main/java/org/elasticsearch/search/aggregations/bucket/nested/NestedAggregator.java
#	src/main/java/org/elasticsearch/search/aggregations/metrics/InternalNumericMetricsAggregation.java
#	src/test/java/org/elasticsearch/search/aggregations/bucket/nested/NestedAggregatorTest.java
2015-04-29 15:49:41 +01:00
Robert Muir 9dec558ea1 nuke more cwd usage 2015-04-29 10:43:11 -04:00
markharwood 528f6481ea Query enhancement: return positions of parse errors found in JSON
Extend SearchParseException and QueryParsingException to report position information in query JSON where errors were found. All query DSL parser classes that throw these exception types now pass the underlying position information (line and column number) at the point the error was found.

Closes #3303
2015-04-29 15:02:46 +01:00
Colin Goodheart-Smithe 3bb8ff2a92 fixed issue with eggs in percolation request for 1 shard 2015-04-29 14:55:20 +01:00
javanna 1d4df4b628 [TEST] remove source parameter validation from REST tests runner
source parameter is implicitly supported and doesn't need to be declared in rest spec. It is tested though, as every api that supports get with body can also get requests using POST with body or get with source query_string parameter.
2015-04-29 15:44:43 +02:00
Robert Muir c0587cb244 fix CWD usage in analysis tests 2015-04-29 09:44:37 -04:00
Britta Weber 4088dd38cb Write state also on data nodes if not master eligible
When a node was a data node only then the index state was not written.
In case this node connected to a master that did not have the index
in the cluster state, for example because a master was restarted and
the data folder was lost, then the indices were not imported as dangling
but instead deleted.
This commit makes sure that index state for data nodes is also written
if they have at least one shard of this index allocated.

closes #8823
closes #9952
2015-04-29 15:27:21 +02:00
Robert Muir 6bd69b74f1 Merge branch 'master' into die_cwd_die 2015-04-29 09:15:18 -04:00
Adrien Grand ccca0386ef Other indentation fixes 2015-04-29 15:14:23 +02:00
Robert Muir a7d16a1dd1 first strike against crazy CWD usages 2015-04-29 09:10:19 -04:00
Adrien Grand 891dfee0d6 Fix some indentation issues. 2015-04-29 15:06:58 +02:00
Shay Banon c55818fa2d Merge pull request #10873 from kimchy/remove_preconditions
Remove Preconditions class
2015-04-29 12:55:23 +02:00
Simon Willnauer 94d8b20611 Add multi data.path to migration guide
this commit removes the obsolete settings for distributors and updates
the documentation on multiple data.path. It also adds an explain to the
migration guide.

Relates to #9498
Closes #10770
2015-04-29 11:51:37 +02:00
Shay Banon 11bf7074d7 Remove Preconditions class
We don't need our own anymore, since we removed the Elasticsearch illegal argument exception
2015-04-29 11:37:32 +02:00
Simon Willnauer 32759398a5 added missing { 2015-04-29 10:53:33 +02:00
Simon Willnauer b4efb6c472 Remove unused / obsolete import and throws statements
This commit removes unused thorws statements when RuntimeExceptions are
mentioned in the throws statement. It also removes obsolete import statements
for java.lang.IllegalArgumentException and java.lang.IllegalStateException
2015-04-29 10:42:31 +02:00
Simon Willnauer 4f14af21c5 Remove ElasticsearchIAE and ElasticsearchISE
This commit removes ElasticsearchIAE and ElasticsearchISE in favor of
the JDKs IAE and ISE.

Closes #10794
2015-04-29 10:42:31 +02:00
Michael McCandless ab11be55a2 add another delete-by-query deprecation 2015-04-29 04:39:41 -04:00
Adrien Grand c23d550823 Merge pull request #10856 from jpountz/fix/remove_qparser_cache
Internal: Remove the query parser cache.
2015-04-29 09:45:51 +02:00
Simon Willnauer f18f623878 [TEST] Remove searchers from tracking map once they are closed 2015-04-29 09:33:20 +02:00
aleph-zero 89542facb3 Remove (dfs_)query_and_fetch from the REST API
Remove the ability to specify search type ‘query_and_fetch’ and
‘df_query_and_fetch’ from the REST API.

- Adds REST tests
- Updates REST API spec to remove ‘query_and_fetch’ and
‘df_query_and_fetch’ as options
- Removes documentation for these options

Closes #9606
2015-04-28 15:27:59 -07:00
Ryan Ernst bf09e58cb3 Mappings: Remove includes and excludes from _source
Regardless of the outcome of #8142, we should at least enforce that
when _source is enabled, it is sufficient to reindex. This change
removes the excludes and includes settings, since these modify
the source, causing us to lose the ability to reindex some fields.

closes #10814
2015-04-28 15:03:51 -07:00
Ryan Ernst 99584deae8 Mappings: Consolidate document parsing logic
The code to parse a document was spread across 3 different classes,
and depended on traversing the ObjectMapper hiearchy. This change
consolidates all the doc parsing code into a new DocumentParser.
This should allow adding unit tests (future issue) for document
parsing so the logic can be simplified.  All code was copied
directly for this change with only minor modifications to make
it work within the new location.

closes #10802
2015-04-28 14:51:47 -07:00
Ryan Ernst f6d8b12796 Mappings: Explicitly disallow multi fields from using object or nested fields
Multi fields currently parse any field type passed in.  However, they
were only intended to support copying simple values from the outter
field. This change adds validation to ensure object and nested
fields are not used within multi fields.

closes #10745
2015-04-28 14:39:39 -07:00
Shay Banon 0a61d03ea2 Remove index/indices replication infra code
now that delete by query is out, we don't need this infrastructure code. The delete by query will be implenented as a plugin, with scan scroll + bulk delete, so it will not need this infra anyhow
2015-04-28 22:49:49 +02:00
Michael McCandless cf2fb4ed0f Remove core delete-by-query implementation, to be replaced with a plugin
The current implementation is dangerous: it unexpectedly refreshes,
which can quickly cause an unhealthy index (segment explosion).  It
can also delete different documents on primary vs replicas, causing
inconsistent replicas.

For 2.0 we will replace this with an optional plugin that does a
scan/scroll search and then issues bulk delete requests.

Closes #10859
2015-04-28 16:09:04 -04:00
Boaz Leskes 7d8f39fc27 Discovery: Unicast Ping should close temporary connections after returning ping results
During pinging we open light , temporary connections to the the unicast hosts. After the pinging is done we close those. At the moment we do so before returning the results of the pings to the caller. On the other hand, in our transport logic we acquire a lock specific to the node id while opening a connection. When disconnecting from node, we have to acquire the same lock in order to guarantee the the connection opening has finished. This can cause big delays in environments where opening a connection is very slow, as the connection closing has to wait *after* the pinging was done.. This can be problematic as  it causes master election to use stale data.

Closes #10849
2015-04-28 22:32:47 +03:00
Simon Willnauer c0d3205146 Fix more download URLs 2015-04-28 20:40:14 +02:00
Brian Murphy 3ad279b8fd Add `fairness` option to KeyedLock.
This change adds the ability of a `KeyedLock` to be `fair` this means that threads will aquire the lock in the order they ask for it.
2015-04-28 12:41:29 -04:00
Adrien Grand 9d890c472b Internal: Remove the query parser cache.
The original goal of this cache was to avoid parsing the same query several
times in case several shards are held on the same node. While this might
sound like a good idea, this would only help when parsing the query takes
non-negligible time compared to actually running the query, which should not
be the case.
2015-04-28 18:05:34 +02:00
Robert Muir 88e90ecaa5 Merge pull request #10848 from rmuir/sm_cleanup2
Remove reflection permission for sun.management.
2015-04-28 12:01:41 -04:00
Simon Willnauer 87cf1452d5 [REST] Render non-elasticsearch exception as root cause
if we don't have an ElasticsearchException as the wrapper of the
actual cause we don't render a root cause today. This commit adds
support for 3rd party exceptions as root causes.

Closes #10836
2015-04-28 17:46:31 +02:00
Lee Hinman 04f6067c66 Merge branch 'pr/10845' 2015-04-28 09:13:26 -06:00
Simon Willnauer bc3136a345 [TEST] Cleanup Direcotry and Searcher mock code
We deployed our own code to check if directories are closed etc an d
if serachers are still open. Yet, since we don't have a global cluster
anymore we can just use lucene's internal mechanism to do that. This commit
removes all special handling and usese LuceneTestCase.closeAfterSuite to
fail if certain resources are not closed

Closes #10853
2015-04-28 17:11:39 +02:00
Nik Everett cb89a14010 Add default to field_value_factor
field_value_factor now takes a default that is used if the document doesn't
have a value for that field. It looks like:
"field_value_factor": {
  "field": "popularity",
  "missing": 1
}

Closes #10841
2015-04-28 11:06:24 -04:00
Simon Willnauer 4f0492a780 [TEST] Run tests with 1 or 2 nodes by default
This commit adds support for running with only one node and sets the
maximum number of nodes to 3 by default. if run with test.nighly=true
at most 6 nodes are used. This gave a 20% speed improvement compared to
the previoulys minimum number of nodes of 3.
2015-04-28 14:38:53 +02:00
javanna b8caa52e7c [TEST] make CountRequestBuilder#toString and SearchRequestBuilder#toString tests non platform dependent 2015-04-28 14:25:00 +02:00
Boaz Leskes 54f2a91aff Test: testMinimumMasterNodes should use at least min_master_nodes unicast hosts 2015-04-28 13:09:00 +03:00
javanna c914134355 Scripting: remove groovy sandbox
Groovy sandboxing was disabled by default from 1.4.3 on though since we found out that it could be worked around, so it makes little sense to keep it and maintain it.

Closes #10156
Closes #10480
2015-04-28 11:27:50 +02:00
Robert Muir c9ccfb6341 Remove reflection permission for sun.management.
This is no longer needed after #10553
2015-04-28 05:25:42 -04:00
javanna 371bc5a6b3 Java api: implement toString in CountRequestBuilder
Similarly to what SearchRequestBuilder does, we print out a string representation of the query that the count request builder holds.

Closes #5555
2015-04-28 11:22:15 +02:00
javanna 78608536e2 Java api: SearchRequestBuilder#toString to print out the query without wiping the request source
Best effort to print out the search source depending on how it was set to the SearchRequestBuilder, don't call `internalBuilder() as that causes the content of the request to be wiped.

Closes #5576
2015-04-28 11:22:15 +02:00
Robert Muir 10f2e0e2ba Merge pull request #10844 from rmuir/sm_cleanup
Security manager cleanups
2015-04-28 05:12:07 -04:00
Tanguy Leroux 8b0674c18d Tests: Add backward compatibility test for cluster state with blocks 2015-04-28 10:50:53 +02:00
Jun Ohtani 933edf7bcc Analysis: Fix wrong position number by analyze API
Add breaking chages comment to migrate docs
Fix the stopword included text using stopword filter
2015-04-28 17:44:41 +09:00
Tanguy Leroux 2ce0ea15b0 Internal: Remove deprecated METADATA cluster block level
This commit removes the deprecated ClusterBlockLevel.METADATA, replaced in #9203 with METADATA_READ and METADATA_WRITE.
2015-04-28 10:25:06 +02:00
Isabel Drost-Fromm 180403fc32 Fix JSON encoding for Mustache templates.
This pull request replaces the current self-made implementation of JSON encoding special chars with re-using the Jackson JsonStringEncoder. Turns out the previous implementation also missed a few special chars so had to adjust the tests accordingly (looked at RFC 4627 for reference).

Note: There's another JSON String encoder on our classpath (org.apache.commons.lang3.StringEscapeUtils) that essentially does the same thing but adds quoting to more characters than the Jackson Encoder above.

Relates to #5473
2015-04-28 10:11:45 +02:00
Ryan Ernst 5812753dbc Backcompat: Add test for missing filter
The _field_names field was fixed in 1.5.1 (#10268) to correctly be
disabled for indexes before 1.3.0.  However, only the exists filter
was updated to check this enabled flag on 1.x/1.5. The missing
filter on those branches still checks the field type to see if it
is indexed, which causes the filter to always try and use
the _field_names field for those old indexes.

This change adds a test to the old index tests for missing filter.

closes #10842
2015-04-28 01:08:12 -07:00
Robert Muir f599c237bd Security manager cleanups
1. initialize SM after things like mlockall. Their tests currently
   don't run with securitymanager enabled, and its simpler to just
   run mlockall etc first.
2. remove redundant test permissions (junit4.childvm.cwd/temp). This
   is alreay added as java.io.tmpdir.
3. improve tests to load the generated policy with some various
   settings and assert things about the permissions on configured
   directories.
4. refactor logic to make it easier to fine-grain the permissions later.
   for example we currently allow write access to conf/. In the future
   I think we can improve testing so we are able to make improvements here.
2015-04-27 20:29:57 -04:00
Lee Hinman 240bcc3f08 Don't create a new BigArrays instance for every call of `withCircuitBreaking`
Since the circuit breaking service doesn't actually change for
BigArrays, we can eagerly create a new instance only once and use that
for all further invocations of `withCircuitBreaking`.
2015-04-27 12:47:56 -06:00
Zachary Tong 935144a064 review comment fixes 2015-04-27 14:32:20 -04:00
Colin Goodheart-Smithe 31f26ec115 review comment fixes 2015-04-27 17:10:03 +01:00
Simon Willnauer d164526d27 Remove `_shutdown` API
Thsi commit removes the `_shutdown` API entirely without any replacement.
Nodes should be managed from the operating system not via REST APIs
2015-04-27 17:19:36 +02:00
Adrien Grand 2f777e4736 Release: Add bw indices for 1.4.5 and 1.5.2. 2015-04-27 13:56:02 +02:00
Alexander Reelsen 467b4f6e2d Versioning: Added recent 1.4 and 1.5 releases 2015-04-27 12:57:47 +02:00
markharwood 1b8b993912 Query enhancement: Enable Lucene ranking behaviour for queries on numeric fields.
This changes the default ranking behaviour of single-term queries on numeric fields to use the usual Lucene TermQuery scoring logic rather than a constant-scoring wrapper.

Closes #10628
2015-04-27 09:42:55 +01:00
Adrien Grand d7d39e1938 Reduce code duplication in TransportIndexAction/TransportShardBulkAction.
We have some duplication in TransportIndexAction/TransportShardBulkAction due
to the fact that we have totally different branches for INDEX and CREATE
operations. This commit tries to share the logic better between these two cases.
2015-04-27 10:23:11 +02:00
Adrien Grand 8d30c9a392 Tests: Mark the entire RiverTests suite as AwaitsFix. 2015-04-27 09:27:17 +02:00
Simon Willnauer 061a010453 Revert "Add support for cluster state diffs"
This reverts commit d746e14cf3.
2015-04-27 09:07:02 +02:00
Alexander Reelsen 5d8e9e24c9 HTTP: Ensure url path expansion only works inside of plugins
This prevents reading of files that are not part of the plugin
directory by specifically crafted paths.
2015-04-27 07:47:14 +02:00
Jun Ohtani 9745808c3f Settings: validate number_of_shards/number_of_replicas without index setting prefix
Move the validation logic to MetaDataCreateIndexService
Add ShardClusterSnapshotRestoreTests
Add the validation to RestoreService

Closes #10693
2015-04-27 12:34:32 +09:00
Igor Motov d746e14cf3 Add support for cluster state diffs
Adds support for calculating and sending diffs instead of full cluster state of the most frequently changing elements - cluster state, meta data and routing table.

Closes #6295
2015-04-26 22:36:39 -04:00
Alexander Reelsen 91e2bb193c TransportClient: Ensure netty I/O thread is not blocked
Whenever a transport client executes a request, it uses a built-in
RetryListener which tries to execute the request on another node.

However, if a connection error occurs, the onFailure() callback of
the listener is triggered, the netty I/O thread might still be used
to whatever failure has been added.

This commit offloads the onFailure handling to the generic thread pool.
2015-04-26 21:31:36 +02:00
Simon Willnauer fe331b57b7 [TEST] Don't use extraFS files as legacy files in tests 2015-04-26 21:08:57 +02:00
Simon Willnauer 2c510f0689 Allow double-closing of FSTranslog
the translog might be reused across engines which is currently a problem
in the design such that we have to allow calls to `close` more than once.
This moves the closed check for snapshot on the actual file to exit the loop.

Relates to #10807
2015-04-26 15:13:06 +02:00
Simon Willnauer f87fb95830 [TEST] fail if exception is not thrown 2015-04-26 14:26:22 +02:00
Simon Willnauer 2373c2b43c [TRANSLOG] Fail #snapshot if translog is closed
If the translog is closed while a snapshot opertion is in progress
we must fail the snapshot operation otherwise we end up in an endless
loop.

Closes #10807
2015-04-26 14:03:50 +02:00
Simon Willnauer 768e1c2012 [TEST] Fix test to take care of refresh failures after successful commit 2015-04-26 13:44:29 +02:00
Tanguy Leroux f7d4baacfb Remove working directory
This commit removes the working directory and its associated environment variable "WORK_DIR"
2015-04-25 13:08:36 +02:00
Zachary Tong 26189ee2e6 Rename helpers to follow naming conventions 2015-04-24 22:38:43 -04:00
Ryan Ernst 1db380cf49 Merge pull request #10798 from mfussenegger/bigarrays
Internal: Change BigArrays to not extend AbstractComponent

In order to avoid the getLogger(getClass()) calls in the
AbstractComponent constructor.

Seems like BigArrays used to be a Singleton but it actually
no longer is one. Every time a SearchContext is created a
new BigArrays instance is created via the
withCircuitBreaking call.

closes #10798
2015-04-24 15:07:16 -07:00
Mathias Fussenegger 9f20c1c642 change BigArrays to not extend AbstractComponent
In order to avoid the ``getLogger(getClass())`` calls in the
AbstractComponent constructor.

Seems like BigArrays used to be a Singleton but it actually
no longer is one. Every time a SearchContext is created a
new BigArrays instance is created via the
``withCircuitBreaking`` call.
2015-04-24 22:34:32 +02:00
Adrien Grand 46ac32ad4a Merge pull request #10786 from jpountz/fix/dynamic_mappings_on_replicas
Internal: Wait for required mappings to be available on the replica before indexing.
2015-04-24 22:20:50 +02:00
Adrien Grand 3e5b8a21b4 Internal: Wait for required mappings to be available on the replica before indexing.
Due to timing issues, mappings that are required to index a document might not
be available on the replica at indexing time. In that case the replica starts
listening to cluster state changes and re-parses the document until no dynamic
mappings updates are generated.
2015-04-24 22:00:06 +02:00
Ryan Ernst f27f5aaa22 Upgrade to lucene-5.2-snapshot-1675927 2015-04-24 12:38:32 -07:00
Boaz Leskes 389ce39919 CommitStats doesn't need to allow for null values in commit user data
Lucene forbids writing those and MapBuilder.immutableMap doesn't like them either, as discovered by @brwe

Closes #10774
2015-04-24 20:57:09 +02:00
Ryan Ernst 4d672b0369 Mappings: Join MergeResults with MergeContext since they are almost the same
MergeContext currently exists to store conflicts, and providing
a mechanism to add dynamic fields. MergeResults store the same
conflicts. This change merges the two classes together, as well
as removes the MergeFlags construct.

This is in preparation for simplifying the callback structures
to dynamically add fields, which will require storing the mapping
updates in the results, instead of having a sneaky callback to
the DocumentMapper instance. It also just makes more sense that
the "results" of a merge are conflicts that occurred, along with
updates that may have occurred. For MergeFlags, any future needs
for parameterizing the merge (which seems unlikely) can just be
added directly to the MergeResults as simlulate is with this change.
2015-04-24 08:19:46 -07:00
Robert Muir a3d03fdeb8 style changes to Bootstrap 2015-04-24 10:09:30 -04:00
Robert Muir fca05edbd4 add constant only used once to make it harder to read the code 2015-04-24 09:51:01 -04:00
Robert Muir 2d778df4b4 Merge branch 'master' into put_me_in_coach 2015-04-24 09:45:19 -04:00
Shay Banon 209b8cf952 TEST: assert we can create an instance of request 2015-04-24 15:04:25 +02:00
Shay Banon 8dbb79c96a refactor and cleanup transport request handling
This refactoring and cleanup is that each request handler ends up
implementing too many methods that can be provided when the request handler itself
is registered, including a prototype like class that can be used to instantiate
new request instances for streaming.
closes #10730
2015-04-24 14:11:43 +02:00
Simon Willnauer cb615ffecf [TEST] Don't use pretty print in tests Windowns has slight differences 2015-04-24 13:18:35 +02:00
Simon Willnauer c25ca1ebfb [CORE] Simplify IndexStore and friends
Today we have a lot of bloat in the IndexStore and related classes. THe IndexStore interface
is unneeded as we always subclass AbstractIndexStore and it hides circular dependencies
that are problematic when added. Guice proxies them if you have an interface which is bad in
general. This commit removes most of the bloat classes and unifies all the classes we have
into a single one since they all just structural and don't encode any functionality.
2015-04-24 13:10:36 +02:00
Boaz Leskes 5bdfdc42d9 Refactor TransportShardReplicationOperationAction
Refactor TransportShardReplicationOperationAction state management into clear separate Primary phase and Replication phase. The primary phase is responsible for routing the request to the node holding the primary, validating it and performing the operation on the primary. The Replication phase is responsible for sending the request to the replicas and managing their responses.

This also adds unit test infrastructure for this class, and some basic tests. We can extend later as we continue developing.

Closes #10749
2015-04-24 12:39:35 +02:00
Martijn van Groningen b444d2c31a Test: wait for green 2015-04-24 12:06:18 +02:00
Simon Willnauer 3ff0b21c21 Remove dead code 2015-04-24 10:37:55 +02:00
Simon Willnauer 84549f334d [TEST] use toString rather than getDetailedMessage() 2015-04-24 10:09:24 +02:00
Martijn van Groningen dd4a22bfed bulk: Fields defined in the `_default_` mapping of an index template should be picked up when an index alias filter is parsed if a new index is introduced when a document is indexed into an index that doesn't exist yet via the bulk api.
Closes #10609
2015-04-24 09:43:16 +02:00
Simon Willnauer 15d58d91f1 [REST] Render REST errors in a structural way
This commit adds support for structural errors / failures / exceptions
on the elasticsearch REST layer. Exceptions are rendering with at least
a `type` and a `reason` corresponding to the exception name and the message.
Some expcetions like the ones associated with an index or a shard will have
additional information about the index the exception was triggered on or the
shard respectivly.

Each rendered response will also contain a list of root causes which is a list
of distinct shard level errors returned for the request. Root causes are the lowest
level elasticsearch exception found per shard response and are intended to be displayed
to the user to indicate the soruce of the exception.

Shard level response are by-default grouped by their type and reason to reduce the amount
of duplicates retunred. Yet, the same exception retunred from different indices will not be
grouped.

Closes #3303
2015-04-24 09:36:10 +02:00
Boaz Leskes c9d72431a3 Test: add afterIfFailed & afterIfSuccessful to ElasticsearchTestCase
Also use afterIfFailed to log more info from the rest tests
2015-04-24 09:10:23 +02:00
Ryan Ernst 1f5bdca8cc Mappings: Restrict murmur3 field type to sane options
Disabling doc values or trying to index hash values are not
correct uses of this the murmur3 field type, and just cause
problems.  This disallows changing doc values or index options
for 2.0+.

closes #10465
2015-04-23 21:48:42 -07:00
Robert Muir de109bdb3c Buffer this inputstream out of paranoia. guava copy goes byte-by-byte... 2015-04-23 22:15:16 -04:00
Robert Muir 500c956b45 Remove policy config file, its a resource.
Remove exposed boolean to turn off security.
Add unit test
2015-04-23 22:02:57 -04:00
Robert Muir b2850bff47 remove logging statements for another bikeshed 2015-04-23 21:18:56 -04:00
Zachary Tong 8435d9226f Fix bug in GiantGapWithPrediction, due to "slow start" of double exp 2015-04-23 19:13:58 -04:00
Zachary Tong a218d59ce1 Fix bug where MovAvgReducer would allow NaN's to "corrupt" the moving avg 2015-04-23 17:52:33 -04:00
Zachary Tong 114d10e5a9 [TEST] Restructure MovAvgTests to be more generic, robust 2015-04-23 17:52:33 -04:00
Robert Muir 5d2153fe9b remove stray sop 2015-04-23 16:03:19 -04:00
Robert Muir 573e81d2ea Ensure paths exist (or more permissions are needed later) 2015-04-23 16:01:16 -04:00