unofficial mirror of meta@public-inbox.org
 help / color / mirror / Atom feed
* [PATCH] git: calculate MAX_INFLIGHT properly in Perl
@ 2023-09-29  2:44 Eric Wong
  0 siblings, 0 replies; only message in thread
From: Eric Wong @ 2023-09-29  2:44 UTC (permalink / raw)
  To: meta

Unlike C, Perl automatically converts quotients to double-precision
floating point even with UV/IV numerators and denominators.  So
force the intermediate quotient to be an integer before
multiplying it by the size of each inflight array element.

This bug was inconsequential for all platforms since d4ba8828ab23f278
(git: fix asynchronous batching for deep pipelines, 2023-01-04)
and inconsequential on most (or all?) Linux even before that due
to the larger 4096-byte PIPE_BUF on Linux.
---
 lib/PublicInbox/Git.pm | 4 ++--
 t/git.t                | 2 ++
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/lib/PublicInbox/Git.pm b/lib/PublicInbox/Git.pm
index 764e38d7..53887e3d 100644
--- a/lib/PublicInbox/Git.pm
+++ b/lib/PublicInbox/Git.pm
@@ -35,10 +35,10 @@ my @MODIFIED_DATE = qw[for-each-ref --sort=-committerdate
 			--format=%(committerdate:raw) --count=1];
 
 # 512: POSIX PIPE_BUF minimum (see pipe(7))
-# 3: @$inflight is flattened [ $OID, $cb, $arg ]
 # 65: SHA-256 hex size + "\n" in preparation for git using non-SHA1
+# 3: @$inflight is flattened [ $OID, $cb, $arg ]
 use constant {
-	MAX_INFLIGHT => 512 * 3 / (65 + length('contents ')),
+	MAX_INFLIGHT => int(512 / (65 + length('contents '))) * 3,
 	BATCH_CMD_VER => v2.36.0, # git 2.36+
 };
 
diff --git a/t/git.t b/t/git.t
index dfa5eab2..bde6d35b 100644
--- a/t/git.t
+++ b/t/git.t
@@ -8,6 +8,8 @@ my ($dir, $for_destroy) = tmpdir();
 use PublicInbox::Import;
 use POSIX qw(strftime);
 use PublicInbox::Git;
+is(PublicInbox::Git::MAX_INFLIGHT,
+	int(PublicInbox::Git::MAX_INFLIGHT), 'MAX_INFLIGHT is an integer');
 
 {
 	PublicInbox::Import::init_bare($dir, 'master');

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2023-09-29  2:44 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-09-29  2:44 [PATCH] git: calculate MAX_INFLIGHT properly in Perl Eric Wong

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).