es_dump_restore 2.1.0 → 2.2.0

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: 6484c47c7bc3f4b8d77671791b34471f0a2767d5
4
- data.tar.gz: 70e2b1056a94d7a5168d930ce2d190ebaa4b618b
3
+ metadata.gz: 92d15eebfd8d46e234d93dc0868dfbfe0f69a2a0
4
+ data.tar.gz: 937b84068b58f036d19befa6c97df87aa4b390cb
5
5
  SHA512:
6
- metadata.gz: 48279c3090efc690a1df0c1f3eaac017890b4e0dbe8992314aff007b57f2b1438dbdddbfe78d6c2332d57ec2e8ca89780c200f4183b6bcf9f8b1286ff9b4e78c
7
- data.tar.gz: 1a06773b02e7b7677a3b6eb4417900c723861481b9620d04e79936dbbb8957ff625f55cf923af679d49ed1774b350cbdd4a6b73deaf31853da6c7ee96e13dd27
6
+ metadata.gz: 2aef2931dfc1b07cc8ccd5f522737d433db672657430347af66b8a8143b8d821371bb90a0743d365fb26137ca518bb1a918d30d9a4a3059e9e401c2f098f3277
7
+ data.tar.gz: ae8c5562157a305db99ce44229eafee4ee958b587ba4e9bd624d7306f932227805f8033473c61a1de5891857274b4086beb6bc86d7be85a44dc896a3d5d5ecfd
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ # Version 2.2.0 - October 20, 2017
2
+
3
+ * Add an optional command-line parameter for retries on timeout errors (thanks to David Henry!)
4
+
1
5
  # Version 2.1.0 - September 30, 2015
2
6
 
3
7
  * Dump index metadata along with data
data/README.md CHANGED
@@ -23,11 +23,11 @@ To dump an ElasticSearch index by type to a file:
23
23
 
24
24
  To restore an index to an ElasticSearch server:
25
25
 
26
- es_dump_restore restore ELASTIC_SEARCH_SERVER_URL DESTINATION_INDEX FILENAME_ZIP [SETTING_OVERRIDES] [BATCH_SIZE]
26
+ es_dump_restore restore ELASTIC_SEARCH_SERVER_URL DESTINATION_INDEX FILENAME_ZIP [SETTING_OVERRIDES] [BATCH_SIZE] [EXCEPTION_RETRIES]
27
27
 
28
28
  To restore an index and set an alias to point to it:
29
29
 
30
- es_dump_restore restore_alias ELASTIC_SEARCH_SERVER_URL DESTINATION_ALIAS DESTINATION_INDEX FILENAME_ZIP [SETTING_OVERRIDES] [BATCH_SIZE]
30
+ es_dump_restore restore_alias ELASTIC_SEARCH_SERVER_URL DESTINATION_ALIAS DESTINATION_INDEX FILENAME_ZIP [SETTING_OVERRIDES] [BATCH_SIZE] [EXCEPTION_RETRIES]
31
31
 
32
32
  This loads the dump into an index named `DESTINATION_INDEX`, and once the load
33
33
  is complete sets the alias `DESTINATION_ALIAS` to point to it. If
@@ -53,6 +53,9 @@ documents which will be sent to elasticsearch at once. This defaults to 1000,
53
53
  which is normally fine, but if you have particularly complex documents or
54
54
  mappings this might need reducing to avoid timeouts.
55
55
 
56
+ If `EXCEPTION_RETRIES` is set to an integer it tells the bulk load process how
57
+ many times is should retry when a timeout is raised. This defaults to 1.
58
+
56
59
  ## Contributing
57
60
 
58
61
  1. Fork it
@@ -26,8 +26,8 @@ module EsDumpRestore
26
26
  end
27
27
 
28
28
  desc "restore URL INDEX_NAME FILENAME", "Restores a dumpfile into the given ElasticSearch index"
29
- def restore(url, index_name, filename, overrides = nil, batch_size = 1000)
30
- client = EsClient.new(url, index_name, nil)
29
+ def restore(url, index_name, filename, overrides = nil, batch_size = 1000, exception_retries = 1)
30
+ client = EsClient.new(url, index_name, nil, exception_retries)
31
31
 
32
32
  Dumpfile.read(filename) do |dumpfile|
33
33
  client.create_index(dumpfile.index, overrides)
@@ -42,8 +42,8 @@ module EsDumpRestore
42
42
 
43
43
  desc "restore_alias URL ALIAS_NAME INDEX_NAME FILENAME", "Restores a dumpfile into the given ElasticSearch index, and then sets the alias to point at that index, removing any existing indexes pointed at by the alias"
44
44
  def restore_alias(url, alias_name, index_name, filename, overrides = nil,
45
- batch_size = 1000)
46
- client = EsClient.new(url, index_name, nil)
45
+ batch_size = 1000, exception_retries = 1)
46
+ client = EsClient.new(url, index_name, nil, exception_retries)
47
47
  client.check_alias alias_name
48
48
 
49
49
  Dumpfile.read(filename) do |dumpfile|
@@ -7,12 +7,13 @@ module EsDumpRestore
7
7
  attr_accessor :base_uri
8
8
  attr_accessor :index_name
9
9
 
10
- def initialize(base_uri, index_name, type)
10
+ def initialize(base_uri, index_name, type, exception_retries=1)
11
11
  @httpclient = HTTPClient.new
12
12
  @index_name = index_name
13
13
 
14
14
  @es_uri = base_uri
15
15
  @path_prefix = type.nil? ? index_name : index_name + "/" + type
16
+ @exception_retries = exception_retries
16
17
  end
17
18
 
18
19
  def mappings
@@ -124,7 +125,17 @@ module EsDumpRestore
124
125
  end
125
126
 
126
127
  def bulk_index(data)
127
- request(:post, "#{@path_prefix}/_bulk", :body => data)
128
+ retries = 0
129
+ begin
130
+ request(:post, "#{@path_prefix}/_bulk", :body => data)
131
+ rescue HTTPClient::TimeoutError => e
132
+ if retries < @exception_retries
133
+ retries += 1
134
+ puts "Retrying (#{retries} of #{@exception_retries}) '#{@path_prefix}/_bulk'"
135
+ retry
136
+ end
137
+ raise e
138
+ end
128
139
  end
129
140
 
130
141
  private
@@ -1,3 +1,3 @@
1
1
  module EsDumpRestore
2
- VERSION = "2.1.0"
2
+ VERSION = "2.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: es_dump_restore
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nat Budin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-30 00:00:00.000000000 Z
11
+ date: 2017-10-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: multi_json
@@ -135,7 +135,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
135
135
  version: '0'
136
136
  requirements: []
137
137
  rubyforge_project:
138
- rubygems_version: 2.4.5
138
+ rubygems_version: 2.6.4
139
139
  signing_key:
140
140
  specification_version: 4
141
141
  summary: Dump ElasticSearch indexes to files and restore them back