waistband 0.15.2 → 0.16.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/lib/waistband/index.rb +27 -0
- data/lib/waistband/version.rb +1 -1
- data/spec/lib/body_size_logging_spec.rb +25 -0
- data/spec/lib/index_spec.rb +0 -12
- data/spec/support/fake_log.rb +12 -0
- metadata +6 -2
checksums.yaml
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
!binary "U0hBMQ==":
|
|
3
3
|
metadata.gz: !binary |-
|
|
4
|
-
|
|
4
|
+
ODI0YzRhY2YwNjFlYzU5ZTA4NmVjYTVhM2RjZjMyY2JlN2RiNTdmYw==
|
|
5
5
|
data.tar.gz: !binary |-
|
|
6
|
-
|
|
6
|
+
ZDZiMDgwZGQ0MGQ1NGM0ODdmMGNkODU4NWYwNWQyNzBjZGMxZWJjNg==
|
|
7
7
|
SHA512:
|
|
8
8
|
metadata.gz: !binary |-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
NDQ3ZmJlZmZkYzQ5MjgzNGQyMTM5MmJhYTQ3YThhN2JkZGQ5YWNjOTk4ZThi
|
|
10
|
+
ZWM4MjNiYTc5ODVmYTIxYzUwOTc0ZmViZjY3OTU0ZGExYzA2Y2E5YmQ5YjI0
|
|
11
|
+
YmM0Y2M2ZjM4MzYxNWNhODI2OWMzODE3MDdhOTc5ZjAzNTRjZDI=
|
|
12
12
|
data.tar.gz: !binary |-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
MDVjMzAxZjcwN2QwNGYzM2I5N2JmZDA3ODEwYTZmNGU3NWRlNTY5Y2Y5MmI4
|
|
14
|
+
NWJkZTgxNGMwYzFiZDY3NTFhMTc2ZTlhOGZlMmNjZWE4ZDcxZGY1YWU5M2Jm
|
|
15
|
+
MWEwZTk3YWExOGJhZTk0MGIyYTM5NWMxMDI2NWRkMGUxNTQyMDY=
|
data/lib/waistband/index.rb
CHANGED
|
@@ -8,6 +8,8 @@ require 'elasticsearch'
|
|
|
8
8
|
module Waistband
|
|
9
9
|
class Index
|
|
10
10
|
|
|
11
|
+
BODY_SIZE_LIMIT = 100_000
|
|
12
|
+
|
|
11
13
|
def initialize(index_name, options = {})
|
|
12
14
|
options = options.stringify_keys
|
|
13
15
|
|
|
@@ -95,6 +97,8 @@ module Waistband
|
|
|
95
97
|
# map everything to strings if need be
|
|
96
98
|
body_hash = stringify_all(body_hash) if @stringify
|
|
97
99
|
|
|
100
|
+
verify_body_size(config_name, _type, id, body_hash)
|
|
101
|
+
|
|
98
102
|
saved = client.index(
|
|
99
103
|
index: config_name,
|
|
100
104
|
type: _type,
|
|
@@ -215,6 +219,29 @@ module Waistband
|
|
|
215
219
|
|
|
216
220
|
private
|
|
217
221
|
|
|
222
|
+
def verify_body_size(index_config_name, type, id, body_hash)
|
|
223
|
+
body_json = body_hash.to_json
|
|
224
|
+
size = body_json.bytesize
|
|
225
|
+
|
|
226
|
+
if size > BODY_SIZE_LIMIT
|
|
227
|
+
msg = "verify_body_size: Body size larger than limit. "
|
|
228
|
+
msg << "Current size: #{size}. Limit: #{BODY_SIZE_LIMIT}. "
|
|
229
|
+
msg << "index_config_name: #{index_config_name}. _type: #{type}. id: #{id}. "
|
|
230
|
+
msg << "body: #{body_json[0, 1000]}"
|
|
231
|
+
log_warning(msg)
|
|
232
|
+
end
|
|
233
|
+
end
|
|
234
|
+
|
|
235
|
+
def log_warning(msg)
|
|
236
|
+
return unless logger
|
|
237
|
+
|
|
238
|
+
logger.warn "[WAISTBAND :: WARNING] #{msg}"
|
|
239
|
+
end
|
|
240
|
+
|
|
241
|
+
def logger
|
|
242
|
+
client.transport.logger
|
|
243
|
+
end
|
|
244
|
+
|
|
218
245
|
def client_config_hash
|
|
219
246
|
config['connection']
|
|
220
247
|
end
|
data/lib/waistband/version.rb
CHANGED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Waistband::Index do
|
|
4
|
+
|
|
5
|
+
let(:index) { Waistband::Index.new('search') }
|
|
6
|
+
|
|
7
|
+
before do
|
|
8
|
+
Waistband.config.logger = FakeLog.new
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it "logs a warning when the body size of a document to store is too large" do
|
|
12
|
+
thing_string = ("a" * 150_000).to_s
|
|
13
|
+
|
|
14
|
+
expect(Waistband.config.logger).to receive(:warn).with(
|
|
15
|
+
"[WAISTBAND :: WARNING] verify_body_size: Body size larger than limit. Current size: 150012. Limit: 100000. index_config_name: search_test. _type: search. id: test_large_body. body: {\"thing\":\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
|
16
|
+
).once
|
|
17
|
+
|
|
18
|
+
body = {thing: thing_string}
|
|
19
|
+
index.save('test_large_body', body)
|
|
20
|
+
data = index.read('test_large_body')
|
|
21
|
+
|
|
22
|
+
expect(data).to be_present
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
data/spec/lib/index_spec.rb
CHANGED
|
@@ -332,18 +332,6 @@ describe Waistband::Index do
|
|
|
332
332
|
|
|
333
333
|
describe 'logging' do
|
|
334
334
|
|
|
335
|
-
class FakeLog
|
|
336
|
-
attr_reader :level
|
|
337
|
-
|
|
338
|
-
def level=(val)
|
|
339
|
-
@level = val
|
|
340
|
-
end
|
|
341
|
-
|
|
342
|
-
def info(val); end
|
|
343
|
-
def debug(val); end
|
|
344
|
-
def fatal(val); end
|
|
345
|
-
end
|
|
346
|
-
|
|
347
335
|
before do
|
|
348
336
|
Waistband.config.logger = FakeLog.new
|
|
349
337
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: waistband
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.16.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- David Jairala
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2014-10-
|
|
11
|
+
date: 2014-10-29 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activesupport
|
|
@@ -112,12 +112,14 @@ files:
|
|
|
112
112
|
- spec/config/waistband/waistband_geo.yml
|
|
113
113
|
- spec/config/waistband/waistband_multi_connection_events.yml
|
|
114
114
|
- spec/config/waistband/waistband_search.yml
|
|
115
|
+
- spec/lib/body_size_logging_spec.rb
|
|
115
116
|
- spec/lib/configuration_spec.rb
|
|
116
117
|
- spec/lib/index_multi_connection_spec.rb
|
|
117
118
|
- spec/lib/index_spec.rb
|
|
118
119
|
- spec/lib/result_spec.rb
|
|
119
120
|
- spec/lib/search_results_spec.rb
|
|
120
121
|
- spec/spec_helper.rb
|
|
122
|
+
- spec/support/fake_log.rb
|
|
121
123
|
- spec/support/index_helper.rb
|
|
122
124
|
- waistband.gemspec
|
|
123
125
|
homepage: https://github.com/taskrabbit/waistband
|
|
@@ -151,10 +153,12 @@ test_files:
|
|
|
151
153
|
- spec/config/waistband/waistband_geo.yml
|
|
152
154
|
- spec/config/waistband/waistband_multi_connection_events.yml
|
|
153
155
|
- spec/config/waistband/waistband_search.yml
|
|
156
|
+
- spec/lib/body_size_logging_spec.rb
|
|
154
157
|
- spec/lib/configuration_spec.rb
|
|
155
158
|
- spec/lib/index_multi_connection_spec.rb
|
|
156
159
|
- spec/lib/index_spec.rb
|
|
157
160
|
- spec/lib/result_spec.rb
|
|
158
161
|
- spec/lib/search_results_spec.rb
|
|
159
162
|
- spec/spec_helper.rb
|
|
163
|
+
- spec/support/fake_log.rb
|
|
160
164
|
- spec/support/index_helper.rb
|