fluent-plugin-scalyr 0.8.14 → 0.8.15

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
  SHA256:
3
- metadata.gz: f9f9a9d2d7c0086b3885e3c3962fcd7271b84b79cbd1dd937cfb27f1d24e16d8
4
- data.tar.gz: d99dd0b487a8f4920a2abc53b00fb2f75499647ed6cb75bcd0ffa9a0a0dd0871
3
+ metadata.gz: b707a6d76dc806731c45f6a96915936e559c49c79e873c3c5ea5dce4ffbaf288
4
+ data.tar.gz: a328a42722469673e69d9e7a77e84c65cb1f7235a566076a1316216937a54405
5
5
  SHA512:
6
- metadata.gz: b6374eb7cb7e4eb1fa3ba3c7342999f176743b07b3293ff3a34f87e127004db50502fb3989117873b68702600fdb6072f4fe39f1f78fef2d280d37a86fa04dc8
7
- data.tar.gz: 8964f56c050fa025825ef3bb4c74d7ef593d32eee86930f9bb9847bedd5048a1851767cc1d3d9d67f064dc1b08622b479add48cab6f395519f08e692c2f57154
6
+ metadata.gz: fad3abf458ae0f215f7a29ca3aa4cc167d05811e270c3eace46057ce291307f3b76ef8c13c269b8c43b4564909001e2421dd6ef591188e52c6ed44c22a5ef946
7
+ data.tar.gz: b8a3268ce7d4d71178ea3356ba47ffd9247cbe3c55d49d436916868076710c4f66719266235d926e314b936bed5544a92de6afdad93a0b33be5d4d0fe0d473cb
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.8.14
1
+ 0.8.15
@@ -358,13 +358,37 @@ module Scalyr
358
358
  # generate new request if json size of events in the array exceed maximum request buffer size
359
359
  append_event = true
360
360
  if total_bytes + event_json.bytesize > @max_request_buffer
361
- # make sure we always have at least one event
361
+ # the case where a single event causes us to exceed the @max_request_buffer
362
362
  if events.empty?
363
- events << event
363
+ # if we are able to truncate the content (and append an ellipsis)
364
+ # inside the @message_field we do so here
365
+ if record.key?(@message_field) &&
366
+ record[@message_field].is_a?(String) &&
367
+ record[@message_field].bytesize > event_json.bytesize - @max_request_buffer &&
368
+ record[@message_field].bytesize >= 3
369
+
370
+ @log.warn "Received a record that cannot fit within max_request_buffer "\
371
+ "(#{@max_request_buffer}) from #{record['logfile']}, serialized event size "\
372
+ "is #{event_json.bytesize}. The #{@message_field} field will be truncated to fit."
373
+ max_msg_size = @max_request_buffer - event_json.bytesize - 3
374
+ truncated_msg = event[:attrs][@message_field][0...max_msg_size] + "..."
375
+ event[:attrs][@message_field] = truncated_msg
376
+ events << event
377
+
378
+ # otherwise we drop the event and save ourselves hitting a 4XX response from the server
379
+ else
380
+ @log.warn "Received a record that cannot fit within max_request_buffer "\
381
+ "(#{@max_request_buffer}) from #{record['logfile']}, serialized event size "\
382
+ "is #{event_json.bytesize}. The #{@message_field} field too short to truncate, "\
383
+ "dropping event."
384
+ end
364
385
  append_event = false
365
386
  end
366
- request = create_request(events, current_threads)
367
- requests << request
387
+
388
+ unless events.empty?
389
+ request = create_request(events, current_threads)
390
+ requests << request
391
+ end
368
392
 
369
393
  total_bytes = 0
370
394
  current_threads = {}
@@ -380,8 +404,12 @@ module Scalyr
380
404
  }
381
405
 
382
406
  # create a final request with any left over events
383
- request = create_request(events, current_threads)
384
- requests << request
407
+ unless events.empty?
408
+ request = create_request(events, current_threads)
409
+ requests << request
410
+ end
411
+
412
+ requests
385
413
  end
386
414
 
387
415
  def create_request(events, current_threads)
data/test/test_events.rb CHANGED
@@ -357,4 +357,48 @@ class EventsTest < Scalyr::ScalyrOutTest
357
357
  d.feed(time, attrs)
358
358
  end
359
359
  end
360
+
361
+ def test_truncated_large_event
362
+ d = create_driver CONFIG + "max_request_buffer 4000"
363
+
364
+ time = event_time("2015-04-01 10:00:00 UTC")
365
+ attrs = {"log" => "this is a test", "message" => "0123456789" * 500}
366
+
367
+ response = flexmock(Net::HTTPResponse, code: "200", body: '{ "status":"success" }')
368
+ mock = flexmock(d.instance)
369
+
370
+ mock.should_receive(:post_request).with(
371
+ URI,
372
+ on {|request_body|
373
+ body = JSON.parse(request_body)
374
+ events = body["events"]
375
+ assert(events[0]["attrs"].key?("message"), "'message' field not found in event")
376
+ assert_equal(
377
+ "0123456789" * 388 + "012...",
378
+ events[0]["attrs"]["message"],
379
+ "'message' field incorrect"
380
+ )
381
+ true
382
+ }
383
+ ).once.and_return(response)
384
+
385
+ d.run(default_tag: "test") do
386
+ d.feed(time, attrs)
387
+ end
388
+ end
389
+
390
+ def test_dropped_large_event
391
+ d = create_driver CONFIG + "max_request_buffer 4000"
392
+
393
+ time = event_time("2015-04-01 10:00:00 UTC")
394
+ attrs = {"message" => "this is a test", "not_message" => "0123456789" * 500}
395
+
396
+ mock = flexmock(d.instance)
397
+
398
+ mock.should_receive(:post_request).never
399
+
400
+ d.run(default_tag: "test") do
401
+ d.feed(time, attrs)
402
+ end
403
+ end
360
404
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-scalyr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.14
4
+ version: 0.8.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Imron Alston
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-10-28 00:00:00.000000000 Z
11
+ date: 2022-02-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi