... | ... |
@@ -347,7 +347,7 @@ sub startup { |
347 | 347 |
} |
348 | 348 |
|
349 | 349 |
# Smart HTTP Buffer size |
350 |
- $ENV{GITPREP_SMART_HTTP_BUFFER_SIZE} ||= 8192; |
|
350 |
+ $ENV{GITPREP_SMART_HTTP_BUFFER_SIZE} ||= 16384; |
|
351 | 351 |
} |
352 | 352 |
|
353 | 353 |
1; |
... | ... |
@@ -33,18 +33,21 @@ |
33 | 33 |
$self->render_later; |
34 | 34 |
|
35 | 35 |
# Write |
36 |
- my $buf = ''; |
|
37 | 36 |
my $s = IO::Select->new($cout, $cerr); |
38 | 37 |
my $buffer_size = $ENV{GITPREP_SMART_HTTP_BUFFER_SIZE}; |
39 | 38 |
my $cb; |
39 |
+ my $error; |
|
40 |
+ my $output; |
|
41 |
+ my @ready; |
|
40 | 42 |
$cb = sub { |
41 | 43 |
my $c = shift; |
42 |
- if (my @ready = $s->can_read) { |
|
43 |
- my $error; |
|
44 |
- my $output = ''; |
|
45 |
- |
|
44 |
+ if (@ready = $s->can_read) { |
|
45 |
+ $output = ''; |
|
46 | 46 |
for my $handle (@ready) { |
47 |
- while (sysread($handle, $buf, $buffer_size)) { |
|
47 |
+ |
|
48 |
+ if (sysread($handle, my $buf, $buffer_size)) { |
|
49 |
+ #warn `ps axuww|grep gitprep` if $k % 3000 == 0; |
|
50 |
+ |
|
48 | 51 |
if ($handle == $cerr) { |
49 | 52 |
$error .= $buf; |
50 | 53 |
} |
... | ... |
@@ -54,10 +57,11 @@ |
54 | 57 |
} |
55 | 58 |
$s->remove($handle) if eof($handle); |
56 | 59 |
} |
57 |
- app->log->error($error) if defined $error; |
|
58 | 60 |
$c->write_chunk($output, $cb); |
59 | 61 |
} |
60 | 62 |
else { |
63 |
+ app->log->error($error) if defined $error; |
|
64 |
+ $c->finish; |
|
61 | 65 |
close $cout; |
62 | 66 |
close $cerr; |
63 | 67 |
waitpid($pid, 0); |