[ARVADOS] created: 2.1.0-780-gfc0e9f360

Git user git at public.arvados.org
Tue May 11 20:38:49 UTC 2021


        at  fc0e9f360dd51c5c508426846f2caed9f1c2ec66 (commit)


commit fc0e9f360dd51c5c508426846f2caed9f1c2ec66
Author: Peter Amstutz <peter.amstutz at curii.com>
Date:   Tue May 11 16:29:40 2021 -0400

    17589: Use more efficient & stable keyset paging.
    
    Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <peter.amstutz at curii.com>

diff --git a/services/fuse/arvados_fuse/fusedir.py b/services/fuse/arvados_fuse/fusedir.py
index e8da789fa..a2e3ac139 100644
--- a/services/fuse/arvados_fuse/fusedir.py
+++ b/services/fuse/arvados_fuse/fusedir.py
@@ -895,15 +895,17 @@ class ProjectDirectory(Directory):
                     self.project_object = self.api.users().get(
                         uuid=self.project_uuid).execute(num_retries=self.num_retries)
                 # do this in 2 steps until #17424 is fixed
-                contents = arvados.util.list_all(self.api.groups().contents,
-                                                 self.num_retries,
-                                                 uuid=self.project_uuid,
-                                                 filters=[["uuid", "is_a", "arvados#group"],
-                                                          ["groups.group_class", "in", ["project","filter"]]])
-                contents.extend(arvados.util.list_all(self.api.groups().contents,
-                                                      self.num_retries,
-                                                      uuid=self.project_uuid,
-                                                      filters=[["uuid", "is_a", "arvados#collection"]]))
+                contents = list(arvados.util.keyset_list_all(self.api.groups().contents,
+                                                        order_key="uuid",
+                                                        num_retries=self.num_retries,
+                                                        uuid=self.project_uuid,
+                                                        filters=[["uuid", "is_a", "arvados#group"],
+                                                                 ["groups.group_class", "in", ["project","filter"]]]))
+                contents.extend(arvados.util.keyset_list_all(self.api.groups().contents,
+                                                             order_key="uuid",
+                                                             num_retries=self.num_retries,
+                                                             uuid=self.project_uuid,
+                                                             filters=[["uuid", "is_a", "arvados#collection"]]))
 
             # end with llfuse.lock_released, re-acquire lock
 
@@ -1118,10 +1120,12 @@ class SharedDirectory(Directory):
                             objects[r["uuid"]] = r
                             root_owners.add(r["uuid"])
                 else:
-                    all_projects = arvados.util.list_all(
-                        self.api.groups().list, self.num_retries,
+                    all_projects = list(arvados.util.keyset_list_all(
+                        self.api.groups().list,
+                        order_key="uuid",
+                        num_retries=self.num_retries,
                         filters=[['group_class','in',['project','filter']]],
-                        select=["uuid", "owner_uuid"])
+                        select=["uuid", "owner_uuid"]))
                     for ob in all_projects:
                         objects[ob['uuid']] = ob
 
@@ -1131,11 +1135,15 @@ class SharedDirectory(Directory):
                             roots.append(ob['uuid'])
                             root_owners.add(ob['owner_uuid'])
 
-                    lusers = arvados.util.list_all(
-                        self.api.users().list, self.num_retries,
+                    lusers = arvados.util.keyset_list_all(
+                        self.api.users().list,
+                        order_key="uuid",
+                        num_retries=self.num_retries,
                         filters=[['uuid','in', list(root_owners)]])
-                    lgroups = arvados.util.list_all(
-                        self.api.groups().list, self.num_retries,
+                    lgroups = arvados.util.keyset_list_all(
+                        self.api.groups().list,
+                        order_key="uuid",
+                        num_retries=self.num_retries,
                         filters=[['uuid','in', list(root_owners)+roots]])
 
                     for l in lusers:

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


hooks/post-receive
-- 




More information about the arvados-commits mailing list