wait for replication before discussion materialized view

Change-Id: I5af02c5e5a99c6bb40480352aeb857031d7ead84
Reviewed-on: https://gerrit.instructure.com/138106
Reviewed-by: Mysti Sadler <mysti@instructure.com>
Tested-by: Jenkins
Reviewed-by: Cody Cutrer <cody@instructure.com>
Product-Review: James Williams  <jamesw@instructure.com>
QA-Review: James Williams  <jamesw@instructure.com>
This commit is contained in:
James Williams 2018-01-16 14:23:22 -07:00
parent 920d30a2bb
commit 8e573f1ed7
2 changed files with 6 additions and 6 deletions

View File

@ -321,7 +321,7 @@ class DiscussionTopic < ActiveRecord::Base
def update_materialized_view
# kick off building of the view
DiscussionTopic::MaterializedView.for(self).update_materialized_view
DiscussionTopic::MaterializedView.for(self).update_materialized_view(xlog_location: self.class.current_xlog_location)
end
def group_category_deleted_with_entries?
@ -1424,6 +1424,6 @@ class DiscussionTopic < ActiveRecord::Base
# synchronously create/update the materialized view
def create_materialized_view
DiscussionTopic::MaterializedView.for(self).update_materialized_view_without_send_later
DiscussionTopic::MaterializedView.for(self).update_materialized_view_without_send_later(xlog_location: self.class.current_xlog_location)
end
end

View File

@ -77,7 +77,7 @@ class DiscussionTopic::MaterializedView < ActiveRecord::Base
# that have been created or updated since the view was generated.
def materialized_view_json(opts = {})
if !up_to_date?
update_materialized_view
update_materialized_view(xlog_location: self.class.current_xlog_location)
end
if json_structure.present?
@ -101,7 +101,8 @@ class DiscussionTopic::MaterializedView < ActiveRecord::Base
end
end
def update_materialized_view
def update_materialized_view(xlog_location: nil)
self.class.wait_for_replication(start: xlog_location)
self.generation_started_at = Time.zone.now
view_json, user_ids, entry_lookup =
self.build_materialized_view
@ -112,8 +113,7 @@ class DiscussionTopic::MaterializedView < ActiveRecord::Base
end
handle_asynchronously :update_materialized_view,
:singleton => proc { |o| "materialized_discussion:#{ Shard.birth.activate { o.discussion_topic_id } }" },
:run_at => proc { 10.seconds.from_now } # delay for replication to slave
:singleton => proc { |o| "materialized_discussion:#{ Shard.birth.activate { o.discussion_topic_id } }" }
def build_materialized_view
entry_lookup = {}