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 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