Unverified Commit 81f9e6da authored by Marius van den Beek's avatar Marius van den Beek Committed by GitHub
Browse files

Merge pull request #20863 from mvdbeek/undo_eager_joinedload

[25.0] Drop eager argument from invocation related methods
parents 7c2be774 e412cdc7
Loading
Loading
Loading
Loading
+3 −14
Original line number Diff line number Diff line
@@ -66,9 +66,6 @@ from galaxy.managers.context import ProvidesUserContext
from galaxy.managers.executables import artifact_class
from galaxy.model import (
    History,
    ImplicitCollectionJobs,
    ImplicitCollectionJobsJobAssociation,
    Job,
    StoredWorkflow,
    StoredWorkflowTagAssociation,
    StoredWorkflowUserShareAssociation,
@@ -422,9 +419,9 @@ class WorkflowsManager(sharable.SharableModelManager[model.StoredWorkflow], dele
        return workflow_canvas.finish(for_embed=for_embed)

    def get_invocation(
        self, trans, decoded_invocation_id: int, eager=False, check_ownership=True, check_accessible=True
        self, trans, decoded_invocation_id: int, check_ownership=True, check_accessible=True
    ) -> WorkflowInvocation:
        workflow_invocation = _get_invocation(trans.sa_session, eager, decoded_invocation_id)
        workflow_invocation = _get_invocation(trans.sa_session, decoded_invocation_id)
        if not workflow_invocation:
            encoded_wfi_id = trans.security.encode_id(decoded_invocation_id)
            message = f"'{encoded_wfi_id}' is not a valid workflow invocation id"
@@ -2259,16 +2256,8 @@ def _get_stored_workflow(session, workflow_uuid, workflow_id, by_stored_id):
    return session.scalars(stmt).first()


def _get_invocation(session, eager, invocation_id):
def _get_invocation(session, invocation_id):
    stmt = select(WorkflowInvocation)
    if eager:
        stmt = stmt.options(
            subqueryload(WorkflowInvocation.steps)
            .joinedload(WorkflowInvocationStep.implicit_collection_jobs)
            .joinedload(ImplicitCollectionJobs.jobs)
            .joinedload(ImplicitCollectionJobsJobAssociation.job)
            .joinedload(Job.input_datasets)
        )
    stmt = stmt.where(WorkflowInvocation.id == invocation_id).limit(1)
    return session.scalars(stmt).first()

+1 −1
Original line number Diff line number Diff line
@@ -8964,7 +8964,7 @@ class WorkflowInvocation(Base, UsesCreateAndUpdateTime, Dictifiable, Serializabl
        back_populates="parent_workflow_invocation",
        uselist=True,
    )
    steps = relationship(
    steps: Mapped[list["WorkflowInvocationStep"]] = relationship(
        "WorkflowInvocationStep",
        back_populates="workflow_invocation",
        order_by=lambda: WorkflowInvocationStep.order_index,
+7 −5
Original line number Diff line number Diff line
@@ -2848,10 +2848,12 @@ class BcoModelExportStore(FileSourceModelExportStore, WorkflowInvocationOnlyExpo
        parametric_domain_items: List[ParametricDomainItem] = []
        for inv_step in workflow_invocation.steps:
            try:
                for k, v in inv_step.workflow_step.tool_inputs.items():
                    param, value, step = k, v, inv_step.workflow_step.order_index
                tool_inputs = inv_step.workflow_step.tool_inputs
                if tool_inputs:
                    for k, v in tool_inputs.items():
                        param, value, step_index = k, v, inv_step.workflow_step.order_index
                        parametric_domain_items.append(
                        ParametricDomainItem(param=str(param), value=str(value), step=str(step))
                            ParametricDomainItem(param=str(param), value=str(value), step=str(step_index))
                        )
            except Exception:
                continue
+1 −1
Original line number Diff line number Diff line
@@ -1459,7 +1459,7 @@ class FastAPIInvocations:
        serialization_params = InvocationSerializationParams(
            step_details=step_details, legacy_job_state=legacy_job_state
        )
        return self.invocations_service.show(trans, invocation_id, serialization_params, eager=True)
        return self.invocations_service.show(trans, invocation_id, serialization_params)

    @router.get(
        "/api/invocations/{invocation_id}/request",
+5 −9
Original line number Diff line number Diff line
@@ -138,16 +138,12 @@ class InvocationsService(ServiceBase, ConsumesModelStores):
        invocation_dict = self.serialize_workflow_invocations(invocations, serialization_params)
        return invocation_dict, total_matches

    def show(self, trans, invocation_id, serialization_params, eager=False):
        wfi = self._workflows_manager.get_invocation(
            trans, invocation_id, eager, check_ownership=False, check_accessible=True
        )
    def show(self, trans, invocation_id, serialization_params):
        wfi = self._workflows_manager.get_invocation(trans, invocation_id, check_ownership=False, check_accessible=True)
        return self.serialize_workflow_invocation(wfi, serialization_params)

    def as_request(self, trans: ProvidesUserContext, invocation_id) -> WorkflowInvocationRequestModel:
        wfi = self._workflows_manager.get_invocation(
            trans, invocation_id, True, check_ownership=True, check_accessible=True
        )
        wfi = self._workflows_manager.get_invocation(trans, invocation_id, check_ownership=True, check_accessible=True)
        return self.serialize_workflow_invocation_to_request(trans, wfi)

    def cancel(self, trans, invocation_id, serialization_params):
@@ -210,7 +206,7 @@ class InvocationsService(ServiceBase, ConsumesModelStores):
        ensure_celery_tasks_enabled(trans.app.config)
        model_store_format = payload.model_store_format
        workflow_invocation = self._workflows_manager.get_invocation(
            trans, invocation_id, eager=True, check_ownership=False, check_accessible=True
            trans, invocation_id, check_ownership=False, check_accessible=True
        )
        if not workflow_invocation:
            raise ObjectNotFound()
@@ -238,7 +234,7 @@ class InvocationsService(ServiceBase, ConsumesModelStores):
    ) -> AsyncTaskResultSummary:
        ensure_celery_tasks_enabled(trans.app.config)
        workflow_invocation = self._workflows_manager.get_invocation(
            trans, invocation_id, eager=True, check_ownership=False, check_accessible=True
            trans, invocation_id, check_ownership=False, check_accessible=True
        )
        if not workflow_invocation:
            raise ObjectNotFound()