@@ -89,7 +89,18 @@ def execute_async(
89
89
@provide_session
90
90
def sync (self , session : Session = NEW_SESSION ) -> None :
91
91
"""Sync will get called periodically by the heartbeat method."""
92
- jobs : list [EdgeJobModel ] = session .query (EdgeJobModel ).all ()
92
+ purged_marker = False
93
+ job_success_purge = conf .getint ("edge" , "job_success_purge" )
94
+ job_fail_purge = conf .getint ("edge" , "job_fail_purge" )
95
+ jobs : list [EdgeJobModel ] = (
96
+ session .query (EdgeJobModel )
97
+ .filter (
98
+ EdgeJobModel .state .in_ (
99
+ [TaskInstanceState .RUNNING , TaskInstanceState .SUCCESS , TaskInstanceState .FAILED ]
100
+ )
101
+ )
102
+ .all ()
103
+ )
93
104
for job in jobs :
94
105
if job .key in self .running :
95
106
if job .state == TaskInstanceState .RUNNING :
@@ -109,8 +120,6 @@ def sync(self, session: Session = NEW_SESSION) -> None:
109
120
self .fail (job .key )
110
121
else :
111
122
self .last_reported_state [job .key ] = job .state
112
- job_success_purge = conf .getint ("edge" , "job_success_purge" )
113
- job_fail_purge = conf .getint ("edge" , "job_fail_purge" )
114
123
if (
115
124
job .state == TaskInstanceState .SUCCESS
116
125
and job .last_update_t < (datetime .now () - timedelta (minutes = job_success_purge )).timestamp ()
@@ -120,6 +129,7 @@ def sync(self, session: Session = NEW_SESSION) -> None:
120
129
):
121
130
if job .key in self .last_reported_state :
122
131
del self .last_reported_state [job .key ]
132
+ purged_marker = True
123
133
session .delete (job )
124
134
session .execute (
125
135
delete (EdgeLogsModel ).where (
@@ -130,7 +140,8 @@ def sync(self, session: Session = NEW_SESSION) -> None:
130
140
EdgeLogsModel .try_number == job .try_number ,
131
141
)
132
142
)
133
- session .commit ()
143
+ if purged_marker :
144
+ session .commit ()
134
145
135
146
def end (self ) -> None :
136
147
"""End the executor."""
0 commit comments