From: Derrick Stolee <derrickstolee@github.com>
To: Taylor Blau <me@ttaylorr.com>,
Derrick Stolee via GitGitGadget <gitgitgadget@gmail.com>
Cc: git@vger.kernel.org, gitster@pobox.com,
sandals@crustytoothpaste.net, lenaic@lhuard.fr
Subject: Re: [PATCH 1/6] maintenance: add get_random_minute()
Date: Tue, 8 Aug 2023 13:28:50 -0400 [thread overview]
Message-ID: <8854e369-fabb-4044-a06c-eaf5b9fbde4a@github.com> (raw)
In-Reply-To: <ZNFgIyuhlNd8I9Y2@nand.local>
On 8/7/2023 5:20 PM, Taylor Blau wrote:
> On Mon, Aug 07, 2023 at 06:51:35PM +0000, Derrick Stolee via GitGitGadget wrote:
>> + if (!random_initialized) {
>> + srand((unsigned int)getpid());
>> + random_initialized = 1;
>> + }
>
> I was wondering where else we call srand() within Git, and it looks like
> the only other spot is in `lock_file_timeout()`.
>
> I doubt it, but is there a chance that that code depends on only calling
> srand() once? I think the answer is "no", since we only use rand()
> within that function to generate a random-ish backoff period, so I think
> the repeatability of it doesn't matter all that much.
The main point would be to avoid the cost of spinning up the number
generator, but there is potential for a bug if we run both initializers:
the lockfile would re-use the same filenames after the generator is
reset.
> So I think this is kind of outside the scope of your series, but I
> wonder if we should have a git_rand() that automatically initializes the
> PRNG with the value of getpid()? Then multiple callers can grab random
> values at will without reinitializing the PRNG.
I see you're moving ahead with removing the srand() from the lockfile code,
so I'll focus on creating a `git_rand()` that centralizes the use of
srand(), but won't touch the code in the lockfile so your patch applies
independently.
Thanks,
-Stolee
next prev parent reply other threads:[~2023-08-08 19:25 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-07 18:51 [PATCH 0/6] maintenance: schedule maintenance on a random minute Derrick Stolee via GitGitGadget
2023-08-07 18:51 ` [PATCH 1/6] maintenance: add get_random_minute() Derrick Stolee via GitGitGadget
2023-08-07 21:20 ` Taylor Blau
2023-08-07 23:53 ` Junio C Hamano
2023-08-08 0:22 ` Junio C Hamano
2023-08-08 14:48 ` Taylor Blau
2023-08-08 16:34 ` Junio C Hamano
2023-08-08 16:49 ` Junio C Hamano
2023-08-08 20:01 ` Taylor Blau
2023-08-08 17:28 ` Derrick Stolee [this message]
2023-08-08 20:04 ` Taylor Blau
2023-08-09 12:17 ` Derrick Stolee
2023-08-09 18:50 ` Junio C Hamano
2023-08-09 20:34 ` Taylor Blau
2023-08-07 18:51 ` [PATCH 2/6] maintenance: use random minute in launchctl scheduler Derrick Stolee via GitGitGadget
2023-08-07 21:23 ` Taylor Blau
2023-08-07 18:51 ` [PATCH 3/6] maintenance: use random minute in Windows scheduler Derrick Stolee via GitGitGadget
2023-08-07 18:51 ` [PATCH 4/6] maintenance: use random minute in cron scheduler Derrick Stolee via GitGitGadget
2023-08-07 18:51 ` [PATCH 5/6] maintenance: swap method locations Derrick Stolee via GitGitGadget
2023-08-07 21:24 ` Taylor Blau
2023-08-07 18:51 ` [PATCH 6/6] maintenance: use random minute in systemd scheduler Derrick Stolee via GitGitGadget
2023-08-07 21:31 ` Taylor Blau
2023-08-08 13:49 ` Derrick Stolee
2023-08-08 20:05 ` Taylor Blau
2023-08-08 9:53 ` Phillip Wood
2023-08-08 13:03 ` Phillip Wood
2023-08-08 13:56 ` Derrick Stolee
2023-08-08 17:24 ` Derrick Stolee
2023-08-09 10:03 ` Phillip Wood
2023-08-08 12:08 ` Phillip Wood
2023-08-08 17:06 ` Derrick Stolee
2023-08-08 17:14 ` Derrick Stolee
2023-08-09 10:00 ` Phillip Wood
2023-08-10 20:39 ` [PATCH v2 0/8] maintenance: schedule maintenance on a random minute Derrick Stolee via GitGitGadget
2023-08-10 20:39 ` [PATCH v2 1/8] maintenance: add get_random_minute() Derrick Stolee via GitGitGadget
2023-08-10 21:25 ` Taylor Blau
2023-08-10 20:39 ` [PATCH v2 2/8] maintenance: use random minute in launchctl scheduler Derrick Stolee via GitGitGadget
2023-08-10 20:39 ` [PATCH v2 3/8] maintenance: use random minute in Windows scheduler Derrick Stolee via GitGitGadget
2023-08-10 20:39 ` [PATCH v2 4/8] maintenance: use random minute in cron scheduler Derrick Stolee via GitGitGadget
2023-08-10 20:39 ` [PATCH v2 5/8] maintenance: swap method locations Derrick Stolee via GitGitGadget
2023-08-10 20:39 ` [PATCH v2 6/8] maintenance: use random minute in systemd scheduler Derrick Stolee via GitGitGadget
2023-08-14 11:26 ` Phillip Wood
2023-08-10 20:39 ` [PATCH v2 7/8] maintenance: fix systemd schedule overlaps Derrick Stolee via GitGitGadget
2023-08-10 21:22 ` Junio C Hamano
2023-08-14 11:27 ` Phillip Wood
2023-08-10 20:39 ` [PATCH v2 8/8] maintenance: update schedule before config Derrick Stolee via GitGitGadget
2023-08-14 11:28 ` Phillip Wood
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=8854e369-fabb-4044-a06c-eaf5b9fbde4a@github.com \
--to=derrickstolee@github.com \
--cc=git@vger.kernel.org \
--cc=gitgitgadget@gmail.com \
--cc=gitster@pobox.com \
--cc=lenaic@lhuard.fr \
--cc=me@ttaylorr.com \
--cc=sandals@crustytoothpaste.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.