mirror of
https://github.com/git/git
synced 2024-09-14 05:45:13 +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
|
@ -2174,6 +2174,7 @@ static int crontab_update_schedule(int run_maintenance, int fd)
|
||||||
FILE *cron_list, *cron_in;
|
FILE *cron_list, *cron_in;
|
||||||
struct strbuf line = STRBUF_INIT;
|
struct strbuf line = STRBUF_INIT;
|
||||||
struct tempfile *tmpedit = NULL;
|
struct tempfile *tmpedit = NULL;
|
||||||
|
int minute = get_random_minute();
|
||||||
|
|
||||||
get_schedule_cmd(&cmd, NULL);
|
get_schedule_cmd(&cmd, NULL);
|
||||||
strvec_split(&crontab_list.args, cmd);
|
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");
|
"# replaced in the future by a Git command.\n\n");
|
||||||
|
|
||||||
strbuf_addf(&line_format,
|
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);
|
exec_path, exec_path);
|
||||||
fprintf(cron_in, line_format.buf, "0", "1-23", "*", "hourly");
|
fprintf(cron_in, line_format.buf, minute, "1-23", "*", "hourly");
|
||||||
fprintf(cron_in, line_format.buf, "0", "0", "1-6", "daily");
|
fprintf(cron_in, line_format.buf, minute, "0", "1-6", "daily");
|
||||||
fprintf(cron_in, line_format.buf, "0", "0", "0", "weekly");
|
fprintf(cron_in, line_format.buf, minute, "0", "0", "weekly");
|
||||||
strbuf_release(&line_format);
|
strbuf_release(&line_format);
|
||||||
|
|
||||||
fprintf(cron_in, "\n%s\n", END_LINE);
|
fprintf(cron_in, "\n%s\n", END_LINE);
|
||||||
|
|
Loading…
Reference in a new issue