From 2774760a4ccdb65336e2aad32b5fd57fc7bc5bb3 Mon Sep 17 00:00:00 2001 From: Peter Amstutz Date: Fri, 10 Oct 2014 15:43:52 -0400 Subject: [PATCH] Websocket server side fix, perform database notify in after_save callback on the log object instead of in log_change on ArvadosBase because crunch-dispatch was creating Log objects directly and bypassing the notification in log_change. --- services/api/app/models/arvados_model.rb | 1 - services/api/app/models/log.rb | 5 +++++ services/api/config/initializers/eventbus.rb | 3 +++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/services/api/app/models/arvados_model.rb b/services/api/app/models/arvados_model.rb index 2e17747839..823fd55435 100644 --- a/services/api/app/models/arvados_model.rb +++ b/services/api/app/models/arvados_model.rb @@ -526,7 +526,6 @@ class ArvadosModel < ActiveRecord::Base log = Log.new(event_type: event_type).fill_object(self) yield log log.save! - connection.execute "NOTIFY logs, '#{log.id}'" log_start_state end diff --git a/services/api/app/models/log.rb b/services/api/app/models/log.rb index 34e6dfa354..39f789e69f 100644 --- a/services/api/app/models/log.rb +++ b/services/api/app/models/log.rb @@ -5,6 +5,7 @@ class Log < ArvadosModel serialize :properties, Hash before_validation :set_default_event_at attr_accessor :object, :object_kind + after_save :send_notify api_accessible :user, extend: :common do |t| t.add :id @@ -80,4 +81,8 @@ class Log < ArvadosModel # logs can have references to deleted objects end + def send_notify + connection.execute "NOTIFY logs, '#{self.id}'" + end + end diff --git a/services/api/config/initializers/eventbus.rb b/services/api/config/initializers/eventbus.rb index 4a6141ccf3..ea1c210385 100644 --- a/services/api/config/initializers/eventbus.rb +++ b/services/api/config/initializers/eventbus.rb @@ -12,5 +12,8 @@ Server::Application.configure do :mount => "/websocket", :websocket_only => (ENV['ARVADOS_WEBSOCKETS'] == "ws-only") } + Rails.logger.info "Websockets #{ENV['ARVADOS_WEBSOCKETS']}, running at /websocket" + else + Rails.logger.info "Websockets disabled" end end -- 2.30.2