[ARVADOS] updated: c088fcf0b5aaf31195ec1b94873e93f1fd3ee8ed
git at public.curoverse.com
git at public.curoverse.com
Fri Oct 10 16:14:22 EDT 2014
Summary of changes:
services/api/app/models/arvados_model.rb | 1 -
services/api/app/models/log.rb | 5 +++++
services/api/config/initializers/eventbus.rb | 3 +++
services/api/lib/eventbus.rb | 16 +++++++++++-----
4 files changed, 19 insertions(+), 6 deletions(-)
via c088fcf0b5aaf31195ec1b94873e93f1fd3ee8ed (commit)
via 67f00f6ddc4570f878fcc64d4bbdc3eb198a48a3 (commit)
from 4fe672034a740836e930733d741017d07f6ffa0c (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
commit c088fcf0b5aaf31195ec1b94873e93f1fd3ee8ed
Author: Peter Amstutz <peter.amstutz at curoverse.com>
Date: Fri Oct 10 16:14:15 2014 -0400
3692: Explicitly incorporate sequence number test into where clause
diff --git a/services/api/lib/eventbus.rb b/services/api/lib/eventbus.rb
index 9f74b5d..96e9d04 100644
--- a/services/api/lib/eventbus.rb
+++ b/services/api/lib/eventbus.rb
@@ -57,20 +57,24 @@ class EventBus
# Start with log rows readable by user, sorted in ascending order
logs = Log.readable_by(ws.user).order("id asc")
+ cond_id = nil
+ cond_out = []
+ param_out = []
+
if ws.last_log_id
# Client is only interested in log rows that are newer than the
# last log row seen by the client.
- logs = logs.where("logs.id > ?", ws.last_log_id)
+ cond_id = "logs.id > ?"
+ param_out << ws.last_log_id
elsif id
# No last log id, so only look at the most recently changed row
- logs = logs.where("logs.id = ?", id.to_i)
+ cond_id = "logs.id = ?"
+ param_out << id.to_i
else
return
end
# Now process filters provided by client
- cond_out = []
- param_out = []
ws.filters.each do |filter|
ft = record_filters filter.filters, Log
if ft[:cond_out].any?
@@ -81,7 +85,9 @@ class EventBus
# Add filters to query
if cond_out.any?
- logs = logs.where("(#{cond_out.join ') OR ('})", *param_out)
+ logs = logs.where(cond_id + " AND (#{cond_out.join ') OR ('})", *param_out)
+ else
+ logs = logs.where(cond_id, *param_out)
end
# Finally execute query and actually send the matching log rows
commit 67f00f6ddc4570f878fcc64d4bbdc3eb198a48a3
Author: Peter Amstutz <peter.amstutz at curoverse.com>
Date: Fri Oct 10 15:43:52 2014 -0400
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.
diff --git a/services/api/app/models/arvados_model.rb b/services/api/app/models/arvados_model.rb
index 2e17747..823fd55 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 34e6dfa..39f789e 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 4a6141c..ea1c210 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
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list