Stream logs if possible and remove size limit
This commit is contained in:
parent
f5548dc225
commit
0da08df4eb
|
@ -136,9 +136,12 @@ sub showLog {
|
|||
|
||||
notFound($c, "The build log of derivation ‘$drvPath’ is not available.") unless defined $logPath;
|
||||
|
||||
my $size = stat($logPath)->size;
|
||||
error($c, "This build log is too big to display ($size bytes).")
|
||||
if $size >= 64 * 1024 * 1024;
|
||||
# Don't send logs that we can't stream.
|
||||
my $size = stat($logPath)->size; # FIXME: not so meaningful for compressed logs
|
||||
error($c, "This build log is too big to display ($size bytes).") unless
|
||||
$mode eq "raw"
|
||||
|| (($mode eq "tail" || $mode eq "tail-reload") && $logPath !~ /\.bz2$/)
|
||||
|| $size < 64 * 1024 * 1024;
|
||||
|
||||
if (!$mode) {
|
||||
# !!! quick hack
|
||||
|
@ -150,12 +153,9 @@ sub showLog {
|
|||
}
|
||||
|
||||
elsif ($mode eq "raw") {
|
||||
if ($logPath !~ /.bz2$/) {
|
||||
$c->serve_static_file($logPath);
|
||||
} else {
|
||||
$c->stash->{'plain'} = { data => (scalar logContents($logPath)) || " " };
|
||||
$c->forward('Hydra::View::Plain');
|
||||
}
|
||||
$c->stash->{logPath} = $logPath;
|
||||
$c->forward('Hydra::View::NixLog');
|
||||
return;
|
||||
}
|
||||
|
||||
elsif ($mode eq "tail-reload") {
|
||||
|
|
|
@ -352,8 +352,8 @@ sub log :Local :Args(1) {
|
|||
my $logPath = findLog($c, $path, @outpaths);
|
||||
notFound($c, "The build log of $path is not available.") unless defined $logPath;
|
||||
|
||||
$c->stash->{'plain'} = { data => (scalar logContents($logPath)) || " " };
|
||||
$c->forward('Hydra::View::Plain');
|
||||
$c->stash->{logPath} = $logPath;
|
||||
$c->forward('Hydra::View::NixLog');
|
||||
}
|
||||
|
||||
|
||||
|
|
30
src/lib/Hydra/View/NixLog.pm
Normal file
30
src/lib/Hydra/View/NixLog.pm
Normal file
|
@ -0,0 +1,30 @@
|
|||
package Hydra::View::NixLog;
|
||||
|
||||
use strict;
|
||||
use base qw/Catalyst::View/;
|
||||
use Hydra::Helper::CatalystUtils;
|
||||
|
||||
sub process {
|
||||
my ($self, $c) = @_;
|
||||
|
||||
my $logPath = $c->stash->{logPath};
|
||||
|
||||
$c->response->content_type('text/plain');
|
||||
|
||||
my $fh = new IO::Handle;
|
||||
|
||||
if ($logPath =~ /\.bz2$/) {
|
||||
open $fh, "bzip2 -dc < '$logPath' |" or die;
|
||||
} else {
|
||||
open $fh, "<$logPath" or die;
|
||||
}
|
||||
binmode($fh);
|
||||
|
||||
setCacheHeaders($c, 365 * 24 * 60 * 60);
|
||||
|
||||
$c->response->body($fh);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
1;
|
Loading…
Reference in a new issue