X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/6241cccaeba4413883699c360bde08e0e544a10e..442d78e1fb39f5d18f728f083e04f320ced44ebb:/services/api/app/controllers/arvados/v1/collections_controller.rb?ds=inline diff --git a/services/api/app/controllers/arvados/v1/collections_controller.rb b/services/api/app/controllers/arvados/v1/collections_controller.rb index d4860cce15..ad1771a87e 100644 --- a/services/api/app/controllers/arvados/v1/collections_controller.rb +++ b/services/api/app/controllers/arvados/v1/collections_controller.rb @@ -82,7 +82,7 @@ class Arvados::V1::CollectionsController < ApplicationController select_attrs = (@select || ["manifest_text"]) | ["portable_data_hash", "trash_at"] model = Collection - if with_lock + if with_lock && Rails.configuration.API.LockBeforeUpdate model = model.lock end if c = model. @@ -183,12 +183,12 @@ class Arvados::V1::CollectionsController < ApplicationController end end - Container.readable_by(*@read_users).where(output: loc.to_s).each do |c| - search_edges(visited, c.uuid, :search_up) + Container.readable_by(*@read_users).where(output: loc.to_s).pluck(:uuid).each do |c_uuid| + search_edges(visited, c_uuid, :search_up) end - Container.readable_by(*@read_users).where(log: loc.to_s).each do |c| - search_edges(visited, c.uuid, :search_up) + Container.readable_by(*@read_users).where(log: loc.to_s).pluck(:uuid).each do |c_uuid| + search_edges(visited, c_uuid, :search_up) end elsif direction == :search_down if loc.to_s == "d41d8cd98f00b204e9800998ecf8427e+0" @@ -207,7 +207,7 @@ class Arvados::V1::CollectionsController < ApplicationController end end - Container.readable_by(*@read_users).where([Container.full_text_trgm + " like ?", "%#{loc.to_s}%"]).each do |c| + Container.readable_by(*@read_users).where([Container.full_text_trgm + " like ?", "%#{loc.to_s}%"]).select("output, log, uuid").each do |c| if c.output != loc.to_s && c.log != loc.to_s search_edges(visited, c.uuid, :search_down) end @@ -276,12 +276,12 @@ class Arvados::V1::CollectionsController < ApplicationController end end - ContainerRequest.readable_by(*@read_users).where(output_uuid: uuid).each do |cr| - search_edges(visited, cr.uuid, :search_up) + ContainerRequest.readable_by(*@read_users).where(output_uuid: uuid).pluck(:uuid).each do |cr_uuid| + search_edges(visited, cr_uuid, :search_up) end - ContainerRequest.readable_by(*@read_users).where(log_uuid: uuid).each do |cr| - search_edges(visited, cr.uuid, :search_up) + ContainerRequest.readable_by(*@read_users).where(log_uuid: uuid).pluck(:uuid).each do |cr_uuid| + search_edges(visited, cr_uuid, :search_up) end elsif direction == :search_down search_edges(visited, c.portable_data_hash, :search_down)