[ARVADOS] updated: 1.1.0-144-ge48ebb4

Git user git at public.curoverse.com
Thu Nov 16 14:04:45 EST 2017


Summary of changes:
 .../app/controllers/arvados/v1/api_client_authorizations_controller.rb  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

  discards  93bc61c084e834f0c258057be84632f2bf676bd5 (commit)
       via  e48ebb43f6e9810d8a2762b49da49fa7bf635a0a (commit)

This update added new revisions after undoing existing revisions.  That is
to say, the old revision is not a strict subset of the new revision.  This
situation occurs when you --force push a change and generate a repository
containing something like this:

 * -- * -- B -- O -- O -- O (93bc61c084e834f0c258057be84632f2bf676bd5)
            \
             N -- N -- N (e48ebb43f6e9810d8a2762b49da49fa7bf635a0a)

When this happens we assume that you've already had alert emails for all
of the O revisions, and so we here report only the revisions in the N
branch from the common base, B.

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 e48ebb43f6e9810d8a2762b49da49fa7bf635a0a
Author: Tom Clegg <tclegg at veritasgenetics.com>
Date:   Thu Nov 16 13:59:05 2017 -0500

    12530: Speed up query by skipping unneeded ActiveRecord loading.
    
    Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tclegg at veritasgenetics.com>

diff --git a/services/api/app/controllers/arvados/v1/api_client_authorizations_controller.rb b/services/api/app/controllers/arvados/v1/api_client_authorizations_controller.rb
index 9c1c587..826ced1 100644
--- a/services/api/app/controllers/arvados/v1/api_client_authorizations_controller.rb
+++ b/services/api/app/controllers/arvados/v1/api_client_authorizations_controller.rb
@@ -94,8 +94,24 @@ class Arvados::V1::ApiClientAuthorizationsController < ApplicationController
       @offset = 0
       super
       wanted_scopes.compact.each do |scope_list|
-        sorted_scopes = scope_list.sort
-        @objects = @objects.select { |auth| auth.scopes.sort == sorted_scopes }
+        if @objects.respond_to?(:where) && scope_list.length < 2
+          @objects = @objects.
+                     where('scopes in (?)',
+                           [scope_list.to_yaml, SafeJSON.dump(scope_list)])
+        else
+          if @objects.respond_to?(:where)
+            # Eliminate rows with scopes=['all'] before doing the
+            # expensive filter. They are typically the majority of
+            # rows, and they obviously won't match given
+            # scope_list.length>=2, so loading them all into
+            # ActiveRecord objects is a huge waste of time.
+            @objects = @objects.
+                       where('scopes not in (?)',
+                             [['all'].to_yaml, SafeJSON.dump(['all'])])
+          end
+          sorted_scopes = scope_list.sort
+          @objects = @objects.select { |auth| auth.scopes.sort == sorted_scopes }
+        end
       end
       @limit = @request_limit
       @offset = @request_offset

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list