19504: Display parent process in breadcrumbs for output log collections
authorStephen Smith <stephen@curii.com>
Tue, 22 Nov 2022 15:40:23 +0000 (10:40 -0500)
committerStephen Smith <stephen@curii.com>
Tue, 22 Nov 2022 15:40:23 +0000 (10:40 -0500)
Arvados-DCO-1.1-Signed-off-by: Stephen Smith <stephen@curii.com>

src/store/breadcrumbs/breadcrumbs-actions.ts

index f482c1d48ae28cf4007fc9e702cee0f13540089a..4b0220a28b15eddf98695a4e29e91c9b84710e3c 100644 (file)
@@ -151,16 +151,22 @@ const getProcessParent = (childProcess: ContainerRequestResource) =>
 
 const getCollectionParent = (collection: CollectionResource) =>
     async (services: ServiceRepository): Promise<ContainerRequestResource | undefined> => {
-        const parentProcesses = await services.containerRequestService.list({
+        const parentOutputPromise = services.containerRequestService.list({
             order: new OrderBuilder<ProcessResource>().addAsc('createdAt').getOrder(),
             filters: new FilterBuilder().addEqual('output_uuid', collection.uuid).getFilters(),
             select: containerRequestFieldsNoMounts,
         });
-        if (parentProcesses.items.length > 0) {
-            return parentProcesses.items[0];
-        } else {
-            return undefined;
-        }
+        const parentLogPromise = services.containerRequestService.list({
+            order: new OrderBuilder<ProcessResource>().addAsc('createdAt').getOrder(),
+            filters: new FilterBuilder().addEqual('log_uuid', collection.uuid).getFilters(),
+            select: containerRequestFieldsNoMounts,
+        });
+        const [parentOutput, parentLog] = await Promise.all([parentOutputPromise, parentLogPromise]);
+        return parentOutput.items.length > 0 ?
+                parentOutput.items[0] :
+                parentLog.items.length > 0 ?
+                    parentLog.items[0] :
+                    undefined;
     }