🔎 Open source distributed and RESTful search engine.
Go to file
Martijn van Groningen aba4760b02 [ML] Fix native process threading protection and restructure ml threadpools
The native process can only handle one operation at a time, so in order the protect against multiple operation at a time (e.g. post data and flush or multiple post data operations) there should be protection in place to guarantee that at most only a single thread interacts with the native process. The current protection is broken when a job close is executed, more specifically the wait logic is broken here.

This commit changes the threading logic when interacting with the native process by using a custom `ExecutorService` that that uses a single worker thread from `ml_autodetect_process` thread pool to interact with the native process. Requests from the ml apis are initially being queued and this worker thread executes these requests one by one in the order they were specified.

Removed the general `ml` threadpool and replaced its usages with `ml_autodetect_process` or `management` threadpool.
Added a new threadpool just for (re)normalizer, so that these operations are isolated from other operations.

relates elastic/x-pack-elasticsearch#582

Original commit: elastic/x-pack-elasticsearch@ff0c8dce0b
2017-03-31 10:07:03 +02:00
.github Add issue template 2017-03-19 16:37:21 -04:00
buildSrc Rename x-pack project names to new names with split repo 2017-02-10 11:02:42 -08:00
dev-tools [Monitoring] Make MonitoringDoc immutable (elastic/x-pack-elasticsearch#785) 2017-03-28 15:20:08 +02:00
docs/public [DOCS] Add watcher rest-api docs to x-pack-elasticsearch 2017-03-29 09:07:55 -07:00
license-tools Adjust line-lengths for license-tools 2017-03-17 14:17:10 -04:00
migrate Add migration script to split xpack (elastic/elasticsearch#4949) 2017-02-10 08:00:51 -08:00
plugin [ML] Fix native process threading protection and restructure ml threadpools 2017-03-31 10:07:03 +02:00
qa Revert "Silence UpgradeClusterClientYamlTestSuiteIT" 2017-03-30 08:39:10 -04:00
transport-client Rename core plugin and transport dirs 2017-02-10 11:02:42 -08:00
.dir-locals.el Update .dir-locals.el for enforced line length 2016-02-04 14:55:41 -07:00
.gitignore Adding new build files after split 2017-02-10 11:02:42 -08:00
.projectile Add .dir-locals.el and .projectile 2015-10-30 11:16:29 -06:00
GRADLE.CHEATSHEET.asciidoc Fixing grammar in GRADLE.CHEATSHEET 2016-05-18 14:17:13 -04:00
LICENSE.txt Initial X-Pack commit 2018-04-20 14:16:58 -07:00
NOTICE.txt Build: Enable notice generation for x-pack (elastic/x-pack-elasticsearch#695) 2017-03-02 19:06:15 -08:00
README.asciidoc improve documentation after ML got in and x-pack split (elastic/x-pack-elasticsearch#599) 2017-02-20 12:16:56 +01:00
build.gradle Fixing the x-pack path (elastic/x-pack-elasticsearch#562) 2017-02-14 17:16:18 -05:00
gradle.properties Gradle daemon is a demon 2015-11-25 10:39:08 -05:00
migrate-issues.py Introduce issue migration script 2017-02-09 17:09:30 -05:00
settings.gradle Rename x-pack project names to new names with split repo 2017-02-10 11:02:42 -08:00

README.asciidoc

= Elasticsearch X Pack

A set of Elastic's commercial plugins:

- License
- Security
- Watcher
- Monitoring
- Machine Learning

= Setup
You must checkout x-pack and elasticsearch with a specific directory structure. The
elasticsearch checkout will be used when building x-pack. The structure is:

- /path/to/elastic/elasticsearch
- /path/to/elastic/elasticsearch-extra/x-pack-elasticsearch

== Native Code

**This is mandatory as tests depend on it**

Machine Learning requires platform specific binaries, build from https://github.com/elastic/machine-learning-cpp via CI servers.

The native artifacts are stored in S3. To retrieve them infra's team Vault service is utilized, which 
requires a github token. Please setup a github token as documented: 

https://github.com/elastic/infra/blob/master/docs/vault.md#github-auth

The github token has to be put into ~/.elastic/github.token, while the file rights must be set to 0600. 

= Build

- Run unit tests:
+
[source, txt]
-----
gradle clean test
-----

- Run all tests:
+
[source, txt]
-----
gradle clean check
-----

- Run integration tests:
+
[source, txt]
-----
gradle clean integTest
-----

- Package X-Pack (wihtout running tests)
+
[source, txt]
-----
gradle clean assemble
-----

- Install X-Pack (wihtout running tests)
+
[source, txt]
-----
gradle clean install
-----