32 lines
890 B
Diff
32 lines
890 B
Diff
|
Index: at-3.1.13/atd.c
|
||
|
===================================================================
|
||
|
--- at-3.1.13.orig/atd.c
|
||
|
+++ at-3.1.13/atd.c
|
||
|
@@ -103,6 +103,7 @@ int selinux_enabled=0;
|
||
|
|
||
|
#define BATCH_INTERVAL_DEFAULT 60
|
||
|
#define CHECK_INTERVAL 3600
|
||
|
+#define RETRY_INTERVAL CHECK_INTERVAL
|
||
|
|
||
|
/* Global variables */
|
||
|
|
||
|
@@ -845,12 +846,17 @@ run_loop()
|
||
|
|
||
|
/* Something went wrong the last time this was executed.
|
||
|
* Let's remove the lockfile and reschedule.
|
||
|
+ *
|
||
|
+ * To prevent pointless CPU heating with permanent errors,
|
||
|
+ * next execution is scheduled with RETRY_INTERVAL inserted.
|
||
|
*/
|
||
|
strncpy(lock_name, dirent->d_name, sizeof(lock_name)-1);
|
||
|
lock_name[sizeof(lock_name)-1] = 0;
|
||
|
lock_name[0] = '=';
|
||
|
unlink(lock_name);
|
||
|
- next_job = now;
|
||
|
+ if (next_job > now + RETRY_INTERVAL) {
|
||
|
+ next_job = now + RETRY_INTERVAL;
|
||
|
+ }
|
||
|
nothing_to_do = 0;
|
||
|
}
|
||
|
continue;
|