Commit Graph

427 Commits

Author SHA1 Message Date
Simon Willnauer 59cda81b40 Fix create_bwc_index for 5.x (#19469)
`create_bwc_index.py` has some cruft in it that only works on 2.x or
even before. This commit make the tool functional, yet there might still
be some bwc relevant things missing here.

Closes #19253
2016-07-18 12:23:01 +02:00
David Pilato 527a9c7f48 Deprecate discovery-azure and rename it to discovery-azure-classic
As discussed at https://github.com/elastic/elasticsearch-cloud-azure/issues/91#issuecomment-229113595, we know that the current `discovery-azure` plugin only works with Azure Classic VMs / Services (which is somehow Legacy now).

The proposal here is to rename `discovery-azure` to `discovery-azure-classic` in case some users are using it.
And deprecate it for 5.0.

Closes #19144.
2016-06-30 14:42:40 +02:00
Ryan Ernst 63549ec6f8 Update usage of es.staging.plugins sysprop to pass build hash 2016-05-25 14:44:56 -07:00
Jason Tedor e7243ed83d Fix smoke test RC plugin installation
This commit fixes the smoke test RC plugin installation command to set
the es.plugins.staging system properly correctly.
2016-05-24 19:48:53 -04:00
Jason Tedor 7b98d5e0cb Fix plugin installation command
This commit fixes the plugin installation command produced by the
release candidate driver.
2016-05-24 19:46:08 -04:00
Tanguy Leroux 1f011f9dea Remove Delete-By-Query plugin
closes #18469
2016-05-24 13:28:20 +02:00
Jason Tedor f63d1255d1 Cleanup settings and system properties entanglement
This commit cleans up some additional places where system properties
were being used to pass settings to Elasticsearch.

Relates #18524
2016-05-23 14:47:22 -04:00
Jason Tedor c257e2c51f Remove settings and system properties entanglement
Today when parsing settings during bootstrap, we add a system property
for every Elasticsearch setting. Additionally, settings can be set via
system properties. This commit simplifies this situation.
 - settings are no longer propogated to system properties
 - system properties can not be used to set settings
 - the "es." prefix on settings is no longer required (nor permitted)
 - test logging has a dedicated system property (tests.logger.level)

Relates #18198
2016-05-19 14:08:08 -04:00
Tanguy Leroux 35d3bdab84 Add Google Cloud Storage repository plugin
Closes #12880
2016-05-19 13:26:23 +02:00
Jason Tedor 7d1fd17172 Remove plugin script parsing of system properties
The plugin script parses command-line options looking for Java system
properties and extracts these arguments to pass to the java command when
starting the JVM. Since elasticsearch-plugin allows arbitrary user
arguments to the JVM via ES_JAVA_OPTS, this parsing is unnecessary. This
commit removes this unnecessary 

Relates #18207
2016-05-09 13:06:18 -04:00
Alexander Reelsen 51497a5ea9 Smoke tester: Fix new x-pack configuration (#17989)
In case of x-pack the superuser role is required.
Also the code for extracting the host was simplified
Lastly the keyserver was replaced as the current one is being
unresponsive.
2016-04-28 14:34:31 +02:00
Ryan Ernst a6ba235964 Remove ununsed dev tools files 2016-04-22 10:34:11 -07:00
Martijn van Groningen c5ad2e2865 Changed indexed scripts to be stored in the cluster state instead of the `.scripts` index.
Also added max script size soft limit for stored scripts.

Closes #16651
2016-04-22 13:42:55 +02:00
Clinton Gormley fbf5976663 Make es_release_notes choose the same :Label every time when multiple specified 2016-04-06 13:52:45 +02:00
Alexander Reelsen c5bbb023fa Smoke tester: Use portsfile to find out host/port
Instead of hardcoding localhost:9200, the smoke tester
now uses the portsfile's first entry to find out, which
host/port combination to test HTTP against.

Closes #17409
2016-04-06 09:16:19 +02:00
Alexander Reelsen a1eb332dce Smoke Tester: Adapt to latest 5.0 changes
The smoke tester required several changes,
ranging from plugin names, to parameter handling
in order to pass.
2016-03-30 15:12:13 +02:00
Adrien Grand c50c5a52d5 Rework norms parameters for 5.0. #16987
Changes:
 - no more option to configure eager/lazy loading of the norms (useless now
   that orms are disk-based)
 - only the `string`, `text` and `keyword` fields support the `norms` setting
 - the `norms` setting takes a boolean that decides whether norms should be
   stored in the index but old options are still supported to give users time
   to upgrade
 - setting a `boost` no longer implicitely enables norms (for new indices only,
   this is still needed for old indices)
2016-03-14 08:42:35 +01:00
Clinton Gormley 5e5bb04e2f In es_release_notes.pl, added non-issue and docs 2016-03-10 20:18:43 +01:00
Adrien Grand 2c3e4840f2 Store _all payloads on 1 byte instead of 4. #16899
This changes the `_all` field to store per-field boosts using a single byte
similarly to norms.
2016-03-03 15:00:23 +01:00
Ryan Ernst f1e9292fad Build: Remove legacy testing and releasing scripts.
These scripts are no longer needed:
* build_randomization.rb - it used by CI a long time ago, but no longer
* client_tests_urls.prop - not sure when this was used, but it refers to ancient branches
* download-s3.py - replaced by s3cmd in release scripts
* upload-s3.py - replaced by s3cmd in release scripts
* upgrade-tests.py - these were the old upgrade tests, before the static index bwc tests
2016-02-13 16:43:58 -08:00
Dongjoon Hyun 70db1b3c44 Fix typos in error messages and comments of dev_tools module. 2016-02-11 01:26:48 -08:00
Nik Everett ab4bfbf259 Remove license header check files
These look like they were used with an older license header check. I suspect
these are obsolete.
2016-02-09 16:00:36 -05:00
Nik Everett 8cb9674726 Remove old Eclipse run config
The config doesn't work. The current right way to debug Elasticsearch in an
IDE is to `gradle run --debug-jvm` and then do remove debugging.
2016-02-09 11:11:18 -05:00
Jim Ferenczi 7d0181b5d4 Rename bin/plugin in bin/elasticsearch-plugin 2016-02-05 10:09:14 +01:00
Ryan Ernst b8f08c35ec Plugin: Remove multicast plugin
closes #16310.
2016-01-29 18:41:31 -08:00
Jack Conradson 5b836dbb11 Renamed the scripting language Plan A to Painless.
Closes #16245
2016-01-27 10:37:34 -08:00
Jason Tedor 284cc3a048 Script mode settings as booleans
This commit modifies the accept values for script mode settings from
"on", "off", and "sandbox" to "true", "false", and "sandbox".
2016-01-27 06:26:58 -05:00
Alexander Reelsen 5bd4582824 Release script: Ensure push to the right region with latest rpm-s3 2016-01-11 14:44:28 +01:00
Adrien Grand 67d233cecd Remove warmers and the warmer API.
Warmers are now barely useful and will be removed in 3.0. Note that this only
removes the warmer API and query-based warmers. We still have warmers internally
for eg. global ordinals.

Close #15607
2016-01-07 09:57:07 +01:00
Alexander Reelsen 1e2919b03d Smoke Tester: Install mapper attachment & repository hdfs plugin 2015-12-23 13:26:23 +01:00
Alexander Reelsen a0b946ccab Smoke Tester: Dont install groovy/expression plugins
Those two plugins are modules now and thus dont need to be installed
explicitely when testing.
2015-12-23 13:15:56 +01:00
Jack Conradson da5b07ae13 Added a new scripting language (PlanA).
Closes #15136
2015-12-09 16:32:37 -08:00
Adrien Grand 60bb0d6907 Merge pull request #14977 from jpountz/test/plugin_mapping_upgrade
Add a test that upgrades succeed even if a mapping contains fields that come from a plugin.
2015-11-25 10:49:06 +01:00
Clinton Gormley 5750581175 The RPM upload script should keep other existing RPM versions available 2015-11-24 20:19:35 +01:00
Adrien Grand aad84395c9 Add a test that upgrades succeed even if a mapping contains fields that come from a plugin. 2015-11-24 19:14:19 +01:00
Ryan Ernst b9976ada99 Build: Remove old files replaced by gradle
This change removes files that are no longer needed with the gradle
build. The license checker was already rewritten in groovy. The plugin
descriptor template exists in buildSrc resources. log4j properties was
moved to the test framework. site_en.xml seems to be a legacy file,
there are no references to it anywhere in the maven build that I could
find. The update lucene script was just a helper for running the license
check in update mode, but that can be done with gradle using the
updateShas command. Finally, there was a leftover build.gradle from when
I attempted to make dev-tools a project of its own.
2015-11-22 23:46:24 -08:00
Clinton Gormley 9e0ca4a795 Updated the release-notes script to produce AsciiDoc and added placeholders 2015-11-20 20:05:53 +01:00
Adrien Grand 617c0c6a6d Build: Fix dev-tools/update_lucene.sh to use the new gradle build. 2015-11-09 11:01:20 +01:00
Ryan Ernst 542522531a Build: Remove maven pom files and supporting ant files
This change removes the leftover pom files. A couple files were left for
reference, namely in qa tests that have not yet been migrated (vagrant
and multinode). The deb and rpm assemblies also still exist for
reference when finishing their setup in gradle.

See #13930
2015-10-29 23:53:49 -07:00
Ryan Ernst 9146b59fc1 Build: Move the real forbidden api signature files to their new location
within buildSrc

The gradle branch used copies of the forbidden api signature files. This
moves the files to their correct location.

closes #14363
2015-10-29 15:40:47 -07:00
Ryan Ernst c86100f636 Switch build system to Gradle
See #13930
2015-10-29 11:40:19 -07:00
Simon Willnauer ad1e3ab925 Merge pull request #14318 from s1monw/trash_get_all_stack_traces
Remove and forbid usage of Thread#getAllThreadGroups()
2015-10-27 21:56:11 +01:00
Simon Willnauer 5fc1c8ba95 Remove and forbid usage of Thread#getAllThreadGroups()
This method needs special permission and can cause all kinds of other problems
if we are creating lots of theads. Also the reason why we added this are fixed
long ago, no need to maintain this code.
2015-10-27 21:13:48 +01:00
Clinton Gormley c56d12f964 Dev-tools es release notes - the "doc" tag has been renamed to "docs" 2015-10-27 19:58:50 +01:00
Clinton Gormley 6e85023482 Tidied up the release candidate email template to make it easier to read. 2015-10-22 16:00:44 +02:00
Nik Everett 2cc97a0d3e Remove and ban @Test
There are three ways `@Test` was used. Way one:

```java
@Test
public void flubTheBlort() {
```

This way was always replaced with:

```java
public void testFlubTheBlort() {
```

Or, maybe with a better method name if I was feeling generous.

Way two:

```java
@Test(throws=IllegalArgumentException.class)
public void testFoo() {
    methodThatThrows();
}
```

This way of using `@Test` is actually pretty OK, but to get the tools to ban
`@Test` entirely it can't be used. Instead:

```java
public void testFoo() {
    try {
        methodThatThrows();
        fail("Expected IllegalArgumentException");
    } catch (IllegalArgumentException e ) {
        assertThat(e.getMessage(), containsString("something"));
    }
}
```

This is longer but tests more than the old ways and is much more precise.
Compare:

```java
@Test(throws=IllegalArgumentException.class)
public void testFoo() {
    some();
    copy();
    and();
    pasted();
    methodThatThrows();
    code();  // <---- This was left here by mistake and is never called
}
```

to:

```java
@Test(throws=IllegalArgumentException.class)
public void testFoo() {
    some();
    copy();
    and();
    pasted();
    try {
        methodThatThrows();
        fail("Expected IllegalArgumentException");
    } catch (IllegalArgumentException e ) {
        assertThat(e.getMessage(), containsString("something"));
    }
}
```

The final use of test is:

```java
@Test(timeout=1000)
public void testFoo() {
    methodThatWasSlow();
}
```

This is the most insidious use of `@Test` because its tempting but tragically
flawed. Its flaws are:
1. Hard and fast timeouts can look like they are asserting that something is
faster and even do an ok job of it when you compare the timings on the same
machine but as soon as you take them to another machine they start to be
invalid. On a slow VM both the new and old methods fail. On a super-fast
machine the slower and faster ways succeed.
2. Tests often contain slow `assert` calls so the performance of tests isn't
sure to predict the performance of non-test code.
3. These timeouts are rude to debuggers because the test just drops out from
under it after the timeout.

Confusingly, timeouts are useful in tests because it'd be rude for a broken
test to cause CI to abort the whole build after it hits a global timeout. But
those timeouts should be very very long "backstop" timeouts and aren't useful
assertions about speed.

For all its flaws `@Test(timeout=1000)` doesn't have a good replacement __in__
__tests__. Nightly benchmarks like http://benchmarks.elasticsearch.org/ are
useful here because they run on the same machine but they aren't quick to check
and it takes lots of time to figure out the regressions. Sometimes its useful
to compare dueling implementations but that requires keeping both
implementations around. All and all we don't have a satisfactory answer to the
question "what do you replace `@Test(timeout=1000)`" with. So we handle each
occurrence on a case by case basis.

For files with `@Test` this also:
1. Removes excess blank lines. They don't help anything.
2. Removes underscores from method names. Those would fail any code style
checks we ever care to run and don't add to readability. Since I did this manually
I didn't do it consistently.
3. Make sure all test method names start with `test`. Some used to end in `Test` or start
with `verify` or `check` and they were picked up using the annotation. Without the
annotation they always need to start with `test`.
4. Organizes imports using the rules we generate for Eclipse. For the most part
this just removes `*` imports which is a win all on its own. It was "required"
to quickly remove `@Test`.
5. Removes unneeded casts. This is just a setting I have enabled in Eclipse and
forgot to turn off before I did this work. It probably isn't hurting anything.
6. Removes trailing whitespace. Again, another Eclipse setting I forgot to turn
off that doesn't hurt anything. Hopefully.
7. Swaps some tests override superclass tests to make them empty with
`assumeTrue` so that the reasoning for the skips is logged in the test run and
it doesn't "look like" that thing is being tested when it isn't.
8. Adds an oxford comma to an error message.

The total test count doesn't change. I know. I counted.
```bash
git checkout master && mvn clean && mvn install | tee with_test
git no_test_annotation master && mvn clean && mvn install | tee not_test
grep 'Tests summary' with_test > with_test_summary
grep 'Tests summary' not_test > not_test_summary
diff with_test_summary not_test_summary
```

These differ somewhat because some tests are skipped based on the random seed.
The total shouldn't differ. But it does!
```
1c1
< [INFO] Tests summary: 564 suites (1 ignored), 3171 tests, 31 ignored (31 assumptions)
---
> [INFO] Tests summary: 564 suites (1 ignored), 3167 tests, 17 ignored (17 assumptions)
```

These are the core unit tests. So we dig further:
```bash
cat with_test | perl -pe 's/\n// if /^Suite/;s/.*\n// if /IGNOR/;s/.*\n// if /Assumption #/;s/.*\n// if /HEARTBEAT/;s/Completed .+?,//' | grep Suite > with_test_suites
cat not_test | perl -pe 's/\n// if /^Suite/;s/.*\n// if /IGNOR/;s/.*\n// if /Assumption #/;s/.*\n// if /HEARTBEAT/;s/Completed .+?,//' | grep Suite > not_test_suites
diff <(sort with_test_suites) <(sort not_test_suites)
```

The four tests with lower test numbers are all extend `AbstractQueryTestCase`
and all have a method that looks like this:

```java
@Override
public void testToQuery() throws IOException {
    assumeTrue("test runs only when at least a type is registered", getCurrentTypes().length > 0);
    super.testToQuery();
}
```

It looks like this method was being double counted on master and isn't anymore.

Closes #14028
2015-10-20 17:37:36 -04:00
Adrien Grand 57310fc451 Ban oal.search.Filter.
Filter has been deprecated in Lucene 5.4 and will be removed in 6.0. We should
stop using this API.
2015-10-20 16:09:46 +02:00
Robert Muir 5d001d1578 Decentralize plugin security
* Add ability for plugins to declare additional permissions with a custom plugin-security.policy file and corresponding AccessController logic. See the plugin author's guide for more information.
* Add warning messages to users for extra plugin permissions in bin/plugin.
* When bin/plugin is run interactively (stdin is a controlling terminal and -b/--batch not supplied), require user confirmation.
* Improve unit test and IDE support for plugins with additional permissions by exposing plugin's metadata as a maven test resource.

Closes #14108

Squashed commit of the following:

commit cf8ace65a7397aaccd356bf55f95d6fbb8bb571c
Author: Robert Muir <rmuir@apache.org>
Date:   Wed Oct 14 13:36:05 2015 -0400

    fix new unit test from master merge

commit 9be3c5aa38f2d9ae50f3d54924a30ad9cddeeb65
Merge: 2f168b8 7368231
Author: Robert Muir <rmuir@apache.org>
Date:   Wed Oct 14 12:58:31 2015 -0400

    Merge branch 'master' into off_my_back

commit 2f168b8038e32672f01ad0279fb5db77ba902ae8
Author: Robert Muir <rmuir@apache.org>
Date:   Wed Oct 14 12:56:04 2015 -0400

    improve plugin author documentation

commit 6e6c2bfda68a418d92733ac22a58eec35508b2d0
Author: Robert Muir <rmuir@apache.org>
Date:   Wed Oct 14 12:52:14 2015 -0400

    move security confirmation after 'plugin already installed' check, to prevent user from answering unnecessary questions.

commit 08233a2972554afef2a6a7521990283102e20d92
Author: Robert Muir <rmuir@apache.org>
Date:   Wed Oct 14 05:36:42 2015 -0400

    Add documentation and pluginmanager support

commit 05dad86c51488ba43ccbd749f0164f3fbd3aee62
Author: Robert Muir <rmuir@apache.org>
Date:   Wed Oct 14 02:22:24 2015 -0400

    Decentralize plugin permissions (modulo docs and pluginmanager work)
2015-10-14 14:46:45 -04:00
Simon Willnauer cac073dafa enforce that wrappers delegate core cache key and ban getCombinedCoreAndDeletesKey() entirely 2015-10-13 23:31:25 +02:00
Simon Willnauer d3436ff592 Streamline top level reader close listeners and forbid general usage
IndexReader#addReaderCloseListener is very error prone when it comes to
caching and reader wrapping. The listeners are not delegated to the sub readers
nor can it's implementation change since it's final in the base class. This commit
only allows installing close listeners on the top level ElasticsearchDirecotryReader
which is known to work an has a defined lifetime which corresponds to its subreader.
This ensure that cachesa re cleared once the reader goes out of scope.
2015-10-13 17:21:18 +02:00