fluent-plugin-cloudwatch-logs 0.4.2 → 0.4.3.pre1

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,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: df90aca722066e72f7e3901d87abc5bbe416798f
4
- data.tar.gz: 39a30c862da3e02461ccd26ff7d33703c3a9ca37
2
+ SHA256:
3
+ metadata.gz: d3fc9af570c6757d34aa84c9205ac2f0b8544d9d583e25bff8cf1722b9130f1f
4
+ data.tar.gz: 627d217aff2db666bd07b23de643b4d1664776840967d14aba7f3e45b517b5e3
5
5
  SHA512:
6
- metadata.gz: 3e60f711c0c5ba080646d1ea2ef22dd31ba3afa453f457147077714f83c90b5107981d6a4aff97ce9a98faff70ec7de2fa889fd49d5342a3713dca6cd57a536b
7
- data.tar.gz: 54d7b1ad8aace95b7f9eeb05dea7426015314a711dd156c2f61c47c829f0168939b061bb01a3575f9c8ca87ce3150fe0c23b391b83bc43a234a43c229ab30251
6
+ metadata.gz: 3714ed8c7a2c8ca44aa7d7843ab21d1dea32b7b136b5416d74c5733e4c1651231ef89581f3775f468381bce415094cc39b0a02ee5a785812687a097d8360276b
7
+ data.tar.gz: 9059d211dc518c7f15009c8f30dcfe514977b26d4d85abf4f439da1751c21ffcb5933e76c3f10adeed50deb7373ffcc655fc377069584039126b9555a4353917
@@ -2,7 +2,7 @@ module Fluent
2
2
  module Plugin
3
3
  module Cloudwatch
4
4
  module Logs
5
- VERSION = "0.4.2"
5
+ VERSION = "0.4.3.pre1"
6
6
  end
7
7
  end
8
8
  end
@@ -191,6 +191,10 @@ module Fluent
191
191
  end
192
192
  end
193
193
 
194
+ def delete_sequence_token(group_name, stream_name)
195
+ @sequence_tokens[group_name].delete(stream_name)
196
+ end
197
+
194
198
  def next_sequence_token(group_name, stream_name)
195
199
  @sequence_tokens[group_name][stream_name]
196
200
  end
@@ -235,16 +239,17 @@ module Fluent
235
239
  end
236
240
 
237
241
  def put_events(group_name, stream_name, events, events_bytesize)
238
- args = {
239
- log_events: events,
240
- log_group_name: group_name,
241
- log_stream_name: stream_name,
242
- }
243
- token = next_sequence_token(group_name, stream_name)
244
-
245
242
  response = nil
246
243
  retry_count = 0
244
+
247
245
  until response
246
+ args = {
247
+ log_events: events,
248
+ log_group_name: group_name,
249
+ log_stream_name: stream_name,
250
+ }
251
+
252
+ token = next_sequence_token(group_name, stream_name)
248
253
  args[:sequence_token] = token if token
249
254
 
250
255
  begin
@@ -262,13 +267,25 @@ module Fluent
262
267
  rescue Aws::CloudWatchLogs::Errors::InvalidSequenceTokenException, Aws::CloudWatchLogs::Errors::DataAlreadyAcceptedException => err
263
268
  sleep 1 # to avoid too many API calls
264
269
  log_stream = find_log_stream(group_name, stream_name)
265
- token = log_stream.upload_sequence_token
270
+ store_next_sequence_token(group_name, stream_name, log_stream.upload_sequence_token)
266
271
  log.warn "updating upload sequence token forcefully because unrecoverable error occured", {
267
272
  "error" => err,
268
273
  "log_group" => group_name,
269
274
  "log_stream" => stream_name,
270
275
  "new_sequence_token" => token,
271
276
  }
277
+ rescue Aws::CloudWatchLogs::Errors::ResourceNotFoundException => err
278
+ if @auto_create_stream && err.message == 'The specified log stream does not exist.'
279
+ log.warn 'Creating log stream because "The specified log stream does not exist." error is got', {
280
+ "error" => err,
281
+ "log_group" => group_name,
282
+ "log_stream" => stream_name,
283
+ }
284
+ create_log_stream(group_name, stream_name)
285
+ delete_sequence_token(group_name, stream_name)
286
+ else
287
+ raise err
288
+ end
272
289
  rescue Aws::CloudWatchLogs::Errors::ThrottlingException => err
273
290
  if !@put_log_events_disable_retry_limit && @put_log_events_retry_limit < retry_count
274
291
  log.error "failed to PutLogEvents and discard logs because retry count exceeded put_log_events_retry_limit", {
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-cloudwatch-logs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.4.3.pre1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryota Arai
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-11-10 00:00:00.000000000 Z
11
+ date: 2017-11-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fluentd
@@ -144,12 +144,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
144
144
  version: '0'
145
145
  required_rubygems_version: !ruby/object:Gem::Requirement
146
146
  requirements:
147
- - - ">="
147
+ - - ">"
148
148
  - !ruby/object:Gem::Version
149
- version: '0'
149
+ version: 1.3.1
150
150
  requirements: []
151
151
  rubyforge_project:
152
- rubygems_version: 2.6.8
152
+ rubygems_version: 2.7.0
153
153
  signing_key:
154
154
  specification_version: 4
155
155
  summary: CloudWatch Logs Plugin for Fluentd