@@ -162,9 +162,8 @@ def start
162
162
end
163
163
options [ :http_proxy ] = @http_proxy if @http_proxy
164
164
@logs ||= Aws ::CloudWatchLogs ::Client . new ( options )
165
- @sequence_tokens = { }
166
- @store_next_sequence_token_mutex = Mutex . new
167
-
165
+ @log_groups = { }
166
+
168
167
log . debug "Aws::CloudWatchLogs::Client initialized: log.level #{ log . level } => #{ options [ :log_level ] } "
169
168
170
169
@json_handler = case @json_handler
@@ -356,20 +355,6 @@ def scrub_record!(record)
356
355
end
357
356
end
358
357
359
- def delete_sequence_token ( group_name , stream_name )
360
- @sequence_tokens [ group_name ] . delete ( stream_name )
361
- end
362
-
363
- def next_sequence_token ( group_name , stream_name )
364
- @sequence_tokens [ group_name ] [ stream_name ]
365
- end
366
-
367
- def store_next_sequence_token ( group_name , stream_name , token )
368
- @store_next_sequence_token_mutex . synchronize do
369
- @sequence_tokens [ group_name ] [ stream_name ] = token
370
- end
371
- end
372
-
373
358
def put_events_by_chunk ( group_name , stream_name , events )
374
359
chunk = [ ]
375
360
@@ -413,9 +398,6 @@ def put_events(group_name, stream_name, events, events_bytesize)
413
398
log_stream_name : stream_name ,
414
399
}
415
400
416
- token = next_sequence_token ( group_name , stream_name )
417
- args [ :sequence_token ] = token if token
418
-
419
401
begin
420
402
t = Time . now
421
403
response = @logs . put_log_events ( args )
@@ -424,7 +406,6 @@ def put_events(group_name, stream_name, events, events_bytesize)
424
406
"stream" => stream_name ,
425
407
"events_count" => events . size ,
426
408
"events_bytesize" => events_bytesize ,
427
- "sequence_token" => token ,
428
409
"thread" => Thread . current . object_id ,
429
410
"request_sec" => Time . now - t ,
430
411
}
@@ -434,16 +415,6 @@ def put_events(group_name, stream_name, events, events_bytesize)
434
415
else
435
416
log . debug "Called PutLogEvents API" , request
436
417
end
437
- rescue Aws ::CloudWatchLogs ::Errors ::InvalidSequenceTokenException , Aws ::CloudWatchLogs ::Errors ::DataAlreadyAcceptedException => err
438
- sleep 1 # to avoid too many API calls
439
- store_next_sequence_token ( group_name , stream_name , err . expected_sequence_token )
440
- log . warn "updating upload sequence token forcefully because unrecoverable error occured" , {
441
- "error" => err ,
442
- "log_group" => group_name ,
443
- "log_stream" => stream_name ,
444
- "new_sequence_token" => token ,
445
- }
446
- retry_count += 1
447
418
rescue Aws ::CloudWatchLogs ::Errors ::ResourceNotFoundException => err
448
419
if @auto_create_stream && err . message == 'The specified log stream does not exist.'
449
420
log . warn 'Creating log stream because "The specified log stream does not exist." error is got' , {
@@ -452,7 +423,6 @@ def put_events(group_name, stream_name, events, events_bytesize)
452
423
"log_stream" => stream_name ,
453
424
}
454
425
create_log_stream ( group_name , stream_name )
455
- delete_sequence_token ( group_name , stream_name )
456
426
retry_count += 1
457
427
else
458
428
raise err
@@ -487,8 +457,6 @@ def put_events(group_name, stream_name, events, events_bytesize)
487
457
if 0 < retry_count
488
458
log . warn "retry succeeded"
489
459
end
490
-
491
- store_next_sequence_token ( group_name , stream_name , response . next_sequence_token )
492
460
end
493
461
494
462
def create_log_group ( group_name , log_group_aws_tags = nil , retention_in_days = nil )
@@ -497,7 +465,7 @@ def create_log_group(group_name, log_group_aws_tags = nil, retention_in_days = n
497
465
unless retention_in_days . nil?
498
466
put_retention_policy ( group_name , retention_in_days )
499
467
end
500
- @sequence_tokens [ group_name ] = { }
468
+ @log_groups [ group_name ] = [ ]
501
469
rescue Aws ::CloudWatchLogs ::Errors ::ResourceAlreadyExistsException
502
470
log . debug "Log group '#{ group_name } ' already exists"
503
471
end
@@ -517,18 +485,18 @@ def put_retention_policy(group_name, retention_in_days)
517
485
def create_log_stream ( group_name , stream_name )
518
486
begin
519
487
@logs . create_log_stream ( log_group_name : group_name , log_stream_name : stream_name )
520
- @sequence_tokens [ group_name ] ||= { }
521
- @sequence_tokens [ group_name ] [ stream_name ] = nil
488
+ @sequence_tokens [ group_name ] ||= [ ]
489
+ @sequence_tokens [ group_name ] . push ( stream_name )
522
490
rescue Aws ::CloudWatchLogs ::Errors ::ResourceAlreadyExistsException
523
491
log . debug "Log stream '#{ stream_name } ' already exists"
524
492
end
525
493
end
526
494
527
495
def log_group_exists? ( group_name )
528
- if @sequence_tokens [ group_name ]
496
+ if @log_groups [ group_name ]
529
497
true
530
498
elsif check_log_group_existence ( group_name )
531
- @sequence_tokens [ group_name ] = { }
499
+ @log_groups [ group_name ] = [ ]
532
500
true
533
501
else
534
502
false
@@ -547,12 +515,12 @@ def check_log_group_existence(group_name)
547
515
end
548
516
549
517
def log_stream_exists? ( group_name , stream_name )
550
- if not @sequence_tokens [ group_name ]
518
+ if not @log_groups [ group_name ]
551
519
false
552
- elsif @sequence_tokens [ group_name ] . has_key ?( stream_name )
520
+ elsif @log_groups [ group_name ] . include ?( stream_name )
553
521
true
554
522
elsif ( log_stream = find_log_stream ( group_name , stream_name ) )
555
- @sequence_tokens [ group_name ] [ stream_name ] = log_stream . upload_sequence_token
523
+ @log_groups [ group_name ] . push ( stream_name )
556
524
true
557
525
else
558
526
false
0 commit comments