From 1fb0fcf51ac78da810d24a3c846876086e331586 Mon Sep 17 00:00:00 2001 From: Marc Phillips Date: Tue, 8 Oct 2019 13:59:34 -0600 Subject: [PATCH] Fix live events on exit bug This should ensure we capture live events on exit correctly. Test Plan: - clear your dev logs on your canvas - start canvas, make some live events calls - stop canvas, grep your dev logs for live events output - should not see anything that is an error Change-Id: I5faf89eb1b3d288287978680195a3fe3c0c35eb5 Reviewed-on: https://gerrit.instructure.com/212483 Tested-by: Jenkins Reviewed-by: Weston Dransfield QA-Review: Weston Dransfield Product-Review: Marc Phillips --- gems/live_events/lib/live_events/async_worker.rb | 2 +- gems/live_events/spec/live_events/async_worker_spec.rb | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/gems/live_events/lib/live_events/async_worker.rb b/gems/live_events/lib/live_events/async_worker.rb index 2e4456764a3..2f23dbdd95e 100644 --- a/gems/live_events/lib/live_events/async_worker.rb +++ b/gems/live_events/lib/live_events/async_worker.rb @@ -95,7 +95,7 @@ module LiveEvents begin # r will be nil on first pass records = [r].compact - total_bytes = r&.fetch(:total_bytes) || 0 + total_bytes = (r.is_a?(Hash) && r[:total_bytes]) || 0 while @queue.size > 0 && total_bytes < MAX_BYTE_THRESHOLD r = @queue.pop break if r == :stop diff --git a/gems/live_events/spec/live_events/async_worker_spec.rb b/gems/live_events/spec/live_events/async_worker_spec.rb index 2852762cf8c..10ae49ded53 100644 --- a/gems/live_events/spec/live_events/async_worker_spec.rb +++ b/gems/live_events/spec/live_events/async_worker_spec.rb @@ -20,7 +20,7 @@ require 'spec_helper' describe LiveEvents::AsyncWorker do let(:put_records_return) { [] } - let(:stream_client) { double(stream_name: stream_name) } + let(:stream_client) { double(stream_name: stream_name, put_records: OpenStruct.new(records: [], error_code: nil, error_message: nil)) } let(:stream_name) { 'stream_name_x' } let(:event_name) { 'event_name' } let(:event) do @@ -139,6 +139,7 @@ describe LiveEvents::AsyncWorker do it "should drain the queue" do @worker.push(event, partition_key) expect(@worker).to receive(:at_exit).and_yield + expect(LiveEvents.logger).not_to receive(:error) @worker.start! @worker.send(:at_exit) end