mirror of
https://github.com/git/git
synced 2024-10-30 14:03:28 +00:00
maintenance: use random minute in cron scheduler
The get_random_minute() method was created to allow maintenance schedules to be fixed to a random minute of the hour. This randomness is only intended to spread out the load from a number of clients, but each client should have an hour between each maintenance cycle. Add this random minute to the cron integration. The cron schedule specification starts with a minute indicator, which was previously inserted as the "0" string but now takes the given minute as an integer parameter. Signed-off-by: Derrick Stolee <derrickstolee@github.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
62a239987c
commit
9b43399057
1 changed files with 5 additions and 4 deletions
|
@ -2174,6 +2174,7 @@ static int crontab_update_schedule(int run_maintenance, int fd)
|
|||
FILE *cron_list, *cron_in;
|
||||
struct strbuf line = STRBUF_INIT;
|
||||
struct tempfile *tmpedit = NULL;
|
||||
int minute = get_random_minute();
|
||||
|
||||
get_schedule_cmd(&cmd, NULL);
|
||||
strvec_split(&crontab_list.args, cmd);
|
||||
|
@ -2228,11 +2229,11 @@ static int crontab_update_schedule(int run_maintenance, int fd)
|
|||
"# replaced in the future by a Git command.\n\n");
|
||||
|
||||
strbuf_addf(&line_format,
|
||||
"%%s %%s * * %%s \"%s/git\" --exec-path=\"%s\" for-each-repo --config=maintenance.repo maintenance run --schedule=%%s\n",
|
||||
"%%d %%s * * %%s \"%s/git\" --exec-path=\"%s\" for-each-repo --config=maintenance.repo maintenance run --schedule=%%s\n",
|
||||
exec_path, exec_path);
|
||||
fprintf(cron_in, line_format.buf, "0", "1-23", "*", "hourly");
|
||||
fprintf(cron_in, line_format.buf, "0", "0", "1-6", "daily");
|
||||
fprintf(cron_in, line_format.buf, "0", "0", "0", "weekly");
|
||||
fprintf(cron_in, line_format.buf, minute, "1-23", "*", "hourly");
|
||||
fprintf(cron_in, line_format.buf, minute, "0", "1-6", "daily");
|
||||
fprintf(cron_in, line_format.buf, minute, "0", "0", "weekly");
|
||||
strbuf_release(&line_format);
|
||||
|
||||
fprintf(cron_in, "\n%s\n", END_LINE);
|
||||
|
|
Loading…
Reference in a new issue