| ... | ... |
@@ -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); |