waistband 0.15.2 → 0.16.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YjFjYjExMGYzNDE5ZWY0ZWVhMTM2OTY4MWQ2NTljYzg4NjM2MzQ1OA==
4
+ ODI0YzRhY2YwNjFlYzU5ZTA4NmVjYTVhM2RjZjMyY2JlN2RiNTdmYw==
5
5
  data.tar.gz: !binary |-
6
- NTQ1ZTM0NzNmNWVjYmJkMmVmNTM5NzhmOTE3MjE1Yjk3MDVlMDIxMA==
6
+ ZDZiMDgwZGQ0MGQ1NGM0ODdmMGNkODU4NWYwNWQyNzBjZGMxZWJjNg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MDk2NmYzYThhZDc4ZWEwNTM1M2I0OTQ2MmJhNTM3YjAxMTAwZjU2YzU3MWRj
10
- NzlhM2VhZTk0NGRkZDZmZGRiNGM0ZDFkNGU3MTAxZTVmNTgxMDc0ZTQ1YTZh
11
- OWI0YTRmNDljN2FiNTg0MzE1NmZlYzNlZmNjZDFiYjI3NDU1MmE=
9
+ NDQ3ZmJlZmZkYzQ5MjgzNGQyMTM5MmJhYTQ3YThhN2JkZGQ5YWNjOTk4ZThi
10
+ ZWM4MjNiYTc5ODVmYTIxYzUwOTc0ZmViZjY3OTU0ZGExYzA2Y2E5YmQ5YjI0
11
+ YmM0Y2M2ZjM4MzYxNWNhODI2OWMzODE3MDdhOTc5ZjAzNTRjZDI=
12
12
  data.tar.gz: !binary |-
13
- NWYwNjZiODQyZTgyZDI5OGRiY2NhOTg5ZmJmYjBlNjg2ZjkxZmMzNDI1M2E3
14
- ODI0N2NkNmY1NjFjNjc2Y2I3MWUxNjUzZmQ4ODNhZDFmYTEyMzgyYjBjYTlm
15
- MzYwNWJiMTQ0MGQ5NjAyMmI5YmMwMmI4MmYyMTI5MjEyNTAzMGE=
13
+ MDVjMzAxZjcwN2QwNGYzM2I5N2JmZDA3ODEwYTZmNGU3NWRlNTY5Y2Y5MmI4
14
+ NWJkZTgxNGMwYzFiZDY3NTFhMTc2ZTlhOGZlMmNjZWE4ZDcxZGY1YWU5M2Jm
15
+ MWEwZTk3YWExOGJhZTk0MGIyYTM5NWMxMDI2NWRkMGUxNTQyMDY=
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Waistband
2
- VERSION = "0.15.2"
2
+ VERSION = "0.16.1"
3
3
  end
@@ -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
@@ -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
@@ -0,0 +1,12 @@
1
+ class FakeLog
2
+ attr_reader :level
3
+
4
+ def level=(val)
5
+ @level = val
6
+ end
7
+
8
+ def info(val); end
9
+ def debug(val); end
10
+ def fatal(val); end
11
+ def warn(val); end
12
+ 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.15.2
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-16 00:00:00.000000000 Z
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