embulk-output-elasticsearch 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1a3ec0cee5c598381d1fb7b9633e5b75ddd8a10b
4
- data.tar.gz: c4168d8f8e4d74feea54657f95beb46c3faa424e
3
+ metadata.gz: 75dffd640bad902148ef5c1a3ad38ab1f3621979
4
+ data.tar.gz: b2f3b8a9e8573c821494d953f481ec2cd3d03c77
5
5
  SHA512:
6
- metadata.gz: 3db949e32d6ec45729b717762b7a952013b40f32f2f7964415f215adeae29da4acf8fa229cffc69770dcb645bb7d80a236f135d38a38a5b76bfc3d4ff0fabc1e
7
- data.tar.gz: b72a05b4607c9636febe5b67f825462d7df6a16cce257e70d952f79d873575cf055fc7c92f72d57d80dca9c66c3422e7b696ae7b89314462f988b8ef5be27586
6
+ metadata.gz: df79299ab2a3158c6986a6c61ad7cef7b43775d7297a5898021cf471090258887096ae66c070b5f63c8eab6d5f16b2275e65a1f7b95bd11b231cf3f982521a62
7
+ data.tar.gz: 1d285ccb4fd669a827c08d66c8ae5ea4bbc7097ab021c81002c14d52a46216bc20a54fa369e18f69b27f290ddc772faeba907e7c6a48166e92fc5ad9aad740a4
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## 0.4.1 - 2017-04-21
2
+
3
+ * [maintenance] Check snapshot progress status before delete index [#36](https://github.com/muga/embulk-output-elasticsearch/pull/36)
4
+
1
5
  ## 0.4.0 - 2017-03-28
2
6
 
3
7
  * [new feature] Support multiple Elasticsearch version [#32](https://github.com/muga/embulk-output-elasticsearch/pull/32)
data/README.md CHANGED
@@ -27,6 +27,11 @@ This plugin uses HTTP/REST Client and haven't be implemented AWS authentication.
27
27
  - **bulk_actions**: Sets when to flush a new bulk request based on the number of actions currently added. (int, default is 1000)
28
28
  - **bulk_size**: Sets when to flush a new bulk request based on the size of actions currently added. (long, default is 5242880)
29
29
  - ~~**concurrent_requests**: concurrent_requests (int, default is 5)~~ Not used now. May use in the future
30
+ - **maximum_retries** Number of maximam retry times (int, optional, default is 7)
31
+ - **initial_retry_interval_millis** Initial interval between retries in milliseconds (int, optional, default is 1000)
32
+ - **maximum_retry_interval_millis** Maximum interval between retries in milliseconds (int, optional, default is 120000)
33
+ - **timeout_millis** timeout in milliseconds for HTTP client(int, optional, default is 60000)
34
+ - **max_snapshot_waiting_secs** maximam waiting time in second when snapshot is just creating before delete index. works when `mode: replace` (int, optional, default is 1800)
30
35
 
31
36
  ### Modes
32
37
 
data/build.gradle CHANGED
@@ -18,7 +18,7 @@ configurations {
18
18
  provided
19
19
  }
20
20
 
21
- version = "0.4.0"
21
+ version = "0.4.1"
22
22
 
23
23
  compileJava.options.encoding = 'UTF-8' // source encoding
24
24
  sourceCompatibility = 1.7
@@ -265,11 +265,46 @@ public class ElasticsearchHttpClient
265
265
  // curl -XDELETE localhost:9200/{index}
266
266
  // Success: {"acknowledged":true}
267
267
  if (isIndexExisting(indexName, task, retryHelper)) {
268
+ waitSnapshot(task, retryHelper);
268
269
  sendRequest(indexName, HttpMethod.DELETE, task, retryHelper);
269
270
  log.info("Deleted Index [{}]", indexName);
270
271
  }
271
272
  }
272
273
 
274
+ private void waitSnapshot(PluginTask task, Jetty92RetryHelper retryHelper)
275
+ {
276
+ int maxSnapshotWaitingMills = task.getMaxSnapshotWaitingSecs() * 1000;
277
+ long execCount = 1;
278
+ long totalWaitingTime = 0;
279
+ // Since only needs exponential backoff, don't need exception handling and others, I don't use Embulk RetryExecutor
280
+ while (isSnapshotProgressing(task, retryHelper)) {
281
+ long sleepTime = ((long) Math.pow(2, execCount) * 1000);
282
+ try {
283
+ Thread.sleep(sleepTime);
284
+ }
285
+ catch (InterruptedException ex) {
286
+ // do nothing
287
+ }
288
+ if (execCount > 1) {
289
+ log.info("Waiting for snapshot completed.");
290
+ }
291
+ execCount++;
292
+ totalWaitingTime += sleepTime;
293
+ if (totalWaitingTime > maxSnapshotWaitingMills) {
294
+ throw new ConfigException(String.format("Waiting creating snapshot is expired. %s sec.", maxSnapshotWaitingMills));
295
+ }
296
+ }
297
+ }
298
+
299
+ private boolean isSnapshotProgressing(PluginTask task, Jetty92RetryHelper retryHelper)
300
+ {
301
+ // https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-snapshots.html#_snapshot_status
302
+ // curl -XGET localhost:9200/_snapshot/_status
303
+ JsonNode response = sendRequest("/_snapshot/_status", HttpMethod.GET, task, retryHelper);
304
+ String snapshots = response.get("snapshots").asText();
305
+ return !snapshots.equals("");
306
+ }
307
+
273
308
  private JsonNode sendRequest(String path, final HttpMethod method, PluginTask task, Jetty92RetryHelper retryHelper)
274
309
  {
275
310
  return sendRequest(path, method, task, retryHelper, "");
@@ -126,6 +126,10 @@ public class ElasticsearchOutputPluginDelegate
126
126
  @ConfigDefault("60000")
127
127
  int getTimeoutMills();
128
128
 
129
+ @Config("max_snapshot_waiting_secs")
130
+ @ConfigDefault("1800")
131
+ int getMaxSnapshotWaitingSecs();
132
+
129
133
  @Config("time_zone")
130
134
  @ConfigDefault("\"UTC\"")
131
135
  String getTimeZone();
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: embulk-output-elasticsearch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Muga Nishizawa
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-03-29 00:00:00.000000000 Z
11
+ date: 2017-04-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -83,7 +83,7 @@ files:
83
83
  - src/test/java/org/embulk/output/elasticsearch/TestElasticsearchOutputPlugin.java
84
84
  - src/test/resources/sample_01.csv
85
85
  - classpath/embulk-base-restclient-0.4.2.jar
86
- - classpath/embulk-output-elasticsearch-0.4.0.jar
86
+ - classpath/embulk-output-elasticsearch-0.4.1.jar
87
87
  - classpath/embulk-util-retryhelper-jetty92-0.4.2.jar
88
88
  - classpath/jetty-client-9.2.14.v20151106.jar
89
89
  - classpath/jetty-http-9.2.14.v20151106.jar