potiuk commented on code in PR #30308:
URL: https://github.com/apache/airflow/pull/30308#discussion_r1162093688
##########
airflow/jobs/job.py:
##########
@@ -285,12 +273,59 @@ def most_recent_job(job_type: str, session: Session =
NEW_SESSION) -> BaseJob |
:param session: Database session
"""
return (
- session.query(BaseJob)
- .filter(BaseJob.job_type == job_type)
+ session.query(Job)
+ .filter(Job.job_type == job_type)
.order_by(
# Put "running" jobs at the front.
- case({State.RUNNING: 0}, value=BaseJob.state, else_=1),
- BaseJob.latest_heartbeat.desc(),
+ case({State.RUNNING: 0}, value=Job.state, else_=1),
+ Job.latest_heartbeat.desc(),
)
.first()
)
+
+
+@provide_session
+def prepare_for_execution(job: Job | JobPydantic, session=NEW_SESSION):
+ """
+ Prepare execution of a job.
+
+ :param job: Job to prepare execution for
+ :param session: Database session
+ """
+ if isinstance(job, Job):
+ job.prepare_for_execution()
+ else:
+ Job.get(job.id, session=session).prepare_for_execution()
+
+
+def execute_job(job: Job) -> int | None:
+ """Executes the job - does not matter if there is a session or not"""
+ ret = None
+ try:
+ ret = job.job_runner._execute()
+ # In case of max runs or max duration
+ job.state = State.SUCCESS
+ except SystemExit:
+ # In case of ^C or SIGTERM
+ job.state = State.SUCCESS
+ except Exception:
+ job.state = State.FAILED
+ raise
+ return ret
+
+
+@provide_session
+def complete_execution(job: Job | JobPydantic, session=NEW_SESSION):
Review Comment:
yep
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]