From: Johannes Sixt <j6t@kdbg.org>
To: Junio C Hamano <gitster@pobox.com>
Cc: Git Mailing List <git@vger.kernel.org>,
Michael Haggerty <mhagger@alum.mit.edu>
Subject: Re: [PATCH mh/lockfile-retry] lockfile: replace random() by rand()
Date: Thu, 04 Jun 2015 10:40:48 +0200 [thread overview]
Message-ID: <55700F10.8030806@kdbg.org> (raw)
In-Reply-To: <xmqq7frqat0m.fsf@gitster.dls.corp.google.com>
Am 30.05.2015 um 19:12 schrieb Junio C Hamano:
> Johannes Sixt <j6t@kdbg.org> writes:
>
>> There you have it: Look the other way for a while, and people start
>> using exotic stuff... ;)
>
> Is it exotic to have random/srandom? Both are in POSIX and 4BSD;
> admittedly rand/srand are written down in C89 and later, so they
> might be more portable, but I recall the prevailing wisdom is to
> favor random over rand for quality of randomness and portability, so
> I am wondering if it may be a better approach to keep the code as-is
> and do a compat/random.c based on either rand/srand (or use posix
> sample implementation [*1*]).
For our purposes here, the linear congruence of rand() is certainly
sufficient. At this time, compatibility functions for random/srandom
would just mean a lot of work for little gain.
>
>
> [Reference]
>
> *1* http://pubs.opengroup.org/onlinepubs/9699919799/functions/rand.html
>
>
>
>>
>> This is a build breakage of master on Windows. There are also a few
>> new test suite failures. On of them is in t1404#2, indicating that
>> a DF conflict takes a different error path. I haven't debugged, yet.
>> The lock file retry test fails, too. I'll report back as time permits.
>>
>> lockfile.c | 4 ++--
>> 1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/lockfile.c b/lockfile.c
>> index 5a93bc7..ee5cb01 100644
>> --- a/lockfile.c
>> +++ b/lockfile.c
>> @@ -191,7 +191,7 @@ static int lock_file_timeout(struct lock_file *lk, const char *path,
>> return lock_file(lk, path, flags);
>>
>> if (!random_initialized) {
>> - srandom((unsigned int)getpid());
>> + srand((unsigned int)getpid());
>> random_initialized = 1;
>> }
>>
>> @@ -218,7 +218,7 @@ static int lock_file_timeout(struct lock_file *lk, const char *path,
>>
>> backoff_ms = multiplier * INITIAL_BACKOFF_MS;
>> /* back off for between 0.75*backoff_ms and 1.25*backoff_ms */
>> - wait_us = (750 + random() % 500) * backoff_ms;
>> + wait_us = (750 + rand() % 500) * backoff_ms;
>> sleep_microseconds(wait_us);
>> remaining_us -= wait_us;
>
-- Hannes
next prev parent reply other threads:[~2015-06-04 8:41 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-30 6:23 [PATCH mh/lockfile-retry] lockfile: replace random() by rand() Johannes Sixt
2015-05-30 17:12 ` Junio C Hamano
2015-06-04 8:40 ` Johannes Sixt [this message]
2015-06-04 11:42 ` Michael Haggerty
2015-06-04 15:57 ` Junio C Hamano
2015-06-05 19:45 ` [PATCH 0/4] Fix file locking with retry and timeout on Windows Johannes Sixt
2015-06-05 19:45 ` [PATCH 1/4] lockfile: replace random() by rand() Johannes Sixt
2015-06-05 19:45 ` [PATCH 2/4] help.c: wrap wait-only poll() invocation in sleep_millisec() Johannes Sixt
2015-06-05 19:45 ` [PATCH 3/4] lockfile: convert retry timeout computations to millisecond Johannes Sixt
2015-06-05 19:45 ` [PATCH 4/4] lockfile: wait using sleep_millisec() instead of select() Johannes Sixt
2015-06-05 19:57 ` [PATCH 0/4] Fix file locking with retry and timeout on Windows Junio C Hamano
2015-06-05 20:14 ` Michael Haggerty
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=55700F10.8030806@kdbg.org \
--to=j6t@kdbg.org \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=mhagger@alum.mit.edu \
/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.