From ac2d6fa5d054ca725a7268eb1a8e050525372c34 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sun, 24 Oct 2021 12:59:08 +0300 Subject: Fix deadlock around aggregating data + server max concurrent file read limiter --- integrationtests/commandutils.go | 36 ++++++++++++++++++++++++++-------- integrationtests/dmap_test.go | 42 ++++++++++++++++++++++++++++++---------- integrationtests/dtail_test.go | 1 - 3 files changed, 60 insertions(+), 19 deletions(-) (limited to 'integrationtests') diff --git a/integrationtests/commandutils.go b/integrationtests/commandutils.go index 23b9c37..d5b5987 100644 --- a/integrationtests/commandutils.go +++ b/integrationtests/commandutils.go @@ -12,9 +12,6 @@ import ( "time" ) -// The exit code and the Go error of the command terminated. -type exitPromise func() (int, error) - func runCommand(ctx context.Context, t *testing.T, stdoutFile, cmdStr string, args ...string) (int, error) { @@ -51,7 +48,7 @@ func runCommandRetry(ctx context.Context, t *testing.T, retries int, stdoutFile, } func startCommand(ctx context.Context, t *testing.T, cmdStr string, - args ...string) (<-chan string, <-chan string, exitPromise, error) { + args ...string) (<-chan string, <-chan string, <-chan error, error) { stdoutCh := make(chan string) stderrCh := make(chan string) @@ -90,10 +87,33 @@ func startCommand(ctx context.Context, t *testing.T, cmdStr string, close(stderrCh) }() - return stdoutCh, stderrCh, func() (int, error) { - err := cmd.Wait() - return exitCodeFromError(err), err - }, nil + cmdErrCh := make(chan error) + go func() { + cmdErrCh <- cmd.Wait() + }() + + return stdoutCh, stderrCh, cmdErrCh, nil +} + +func waitForCommand(ctx context.Context, t *testing.T, + stdoutCh, stderrCh <-chan string, cmdErrCh <-chan error) { + + for { + select { + case line, ok := <-stdoutCh: + if ok { + t.Log(line) + } + case line, ok := <-stderrCh: + if ok { + t.Log(line) + } + case cmdErr := <-cmdErrCh: + t.Log(fmt.Sprintf("Command finished with with exit code %d: %v", + exitCodeFromError(cmdErr), cmdErr)) + return + } + } } func exitCodeFromError(err error) int { diff --git a/integrationtests/dmap_test.go b/integrationtests/dmap_test.go index 7d8b8b5..2de679b 100644 --- a/integrationtests/dmap_test.go +++ b/integrationtests/dmap_test.go @@ -15,7 +15,6 @@ func TestDMap(t *testing.T) { return } inFile := "mapr_testdata.log" - stdoutFile := "dmap.stdout.tmp" csvFile := "dmap.csv.tmp" expectedCsvFile := "dmap.csv.expected" queryFile := fmt.Sprintf("%s.query", csvFile) @@ -25,14 +24,23 @@ func TestDMap(t *testing.T) { "avg($goroutines),min(concurrentConnections),max(lifetimeConnections) "+ "group by $hostname outfile %s", csvFile) - _, err := runCommand(context.TODO(), t, stdoutFile, - "../dmap", "--query", query, inFile) + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + stdoutCh, stderrCh, cmdErrCh, err := startCommand(ctx, t, "../dmap", + "--query", query, + "--logger", "stdout", + "--logLevel", "error", + "--noColor", + inFile) if err != nil { t.Error(err) return } + waitForCommand(ctx, t, stdoutCh, stderrCh, cmdErrCh) + if err := compareFiles(t, csvFile, expectedCsvFile); err != nil { t.Error(err) return @@ -42,7 +50,6 @@ func TestDMap(t *testing.T) { return } - os.Remove(stdoutFile) os.Remove(csvFile) os.Remove(queryFile) } @@ -100,16 +107,31 @@ func TestDMap3(t *testing.T) { "avg($goroutines),min($goroutines) group by $time order by count($time) "+ "outfile %s", csvFile) - // Read many input files at once. - args := []string{"--logLevel", "trace", "--pprof", "localhost:8080", "--query", query} - for i := 0; i < 100; i++ { - args = append(args, inFile) - } + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + stdoutCh, stderrCh, cmdErrCh, err := startCommand(ctx, t, "../dmap", + "--query", query, + "--logger", "stdout", + "--logLevel", "info", + "--noColor", + inFile, inFile, inFile, inFile, inFile, inFile, inFile, inFile, inFile, inFile, + inFile, inFile, inFile, inFile, inFile, inFile, inFile, inFile, inFile, inFile, + inFile, inFile, inFile, inFile, inFile, inFile, inFile, inFile, inFile, inFile, + inFile, inFile, inFile, inFile, inFile, inFile, inFile, inFile, inFile, inFile, + inFile, inFile, inFile, inFile, inFile, inFile, inFile, inFile, inFile, inFile, + inFile, inFile, inFile, inFile, inFile, inFile, inFile, inFile, inFile, inFile, + inFile, inFile, inFile, inFile, inFile, inFile, inFile, inFile, inFile, inFile, + inFile, inFile, inFile, inFile, inFile, inFile, inFile, inFile, inFile, inFile, + inFile, inFile, inFile, inFile, inFile, inFile, inFile, inFile, inFile, inFile, + inFile, inFile, inFile, inFile, inFile, inFile, inFile, inFile, inFile, inFile) - if _, err := runCommand(context.TODO(), t, stdoutFile, "../dmap", args...); err != nil { + if err != nil { t.Error(err) return } + waitForCommand(ctx, t, stdoutCh, stderrCh, cmdErrCh) + if err := compareFilesContents(t, csvFile, expectedCsvFile); err != nil { t.Error(err) return diff --git a/integrationtests/dtail_test.go b/integrationtests/dtail_test.go index c6d0107..2b4d6de 100644 --- a/integrationtests/dtail_test.go +++ b/integrationtests/dtail_test.go @@ -45,7 +45,6 @@ func TestDTailWithServer(t *testing.T) { return } - // TODO: In testmode, the client should not try to manipulate any known_hosts files. // TODO: In testmode, never read a config file (use none for all commands) clientCh, _, _, err := startCommand(ctx, t, "../dtail", -- cgit v1.2.3 From 14959ffba46282dd7b8ada53db0dfc0e1b26ab2e Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sun, 24 Oct 2021 13:34:06 +0300 Subject: Fix DCat color test. --- integrationtests/dcat_test.go | 5 +- integrationtests/dcatcolors.expected | 5508 +++++++++++++++++----------------- integrationtests/dtail_test.go | 2 +- 3 files changed, 2756 insertions(+), 2759 deletions(-) (limited to 'integrationtests') diff --git a/integrationtests/dcat_test.go b/integrationtests/dcat_test.go index 2516867..dc2234f 100644 --- a/integrationtests/dcat_test.go +++ b/integrationtests/dcat_test.go @@ -60,13 +60,11 @@ func TestDCat2(t *testing.T) { os.Remove(stdoutFile) } -/* -// TODO: The test currently fails as there is a hostname in the output. What needs -// to be done is to ignore the hostnames in the output (which is field 2 of the output) func TestDCatColors(t *testing.T) { if !config.Env("DTAIL_RUN_INTEGRATION_TESTS") { return } + testdataFile := "dcatcolors.txt" stdoutFile := "dcatcolors.out" expectedFile := "dcatcolors.expected" @@ -86,4 +84,3 @@ func TestDCatColors(t *testing.T) { os.Remove(stdoutFile) } -*/ diff --git a/integrationtests/dcatcolors.expected b/integrationtests/dcatcolors.expected index 3ccdeff..fcd8dbf 100644 --- a/integrationtests/dcatcolors.expected +++ b/integrationtests/dcatcolors.expected @@ -1,2754 +1,2754 @@ -REMOTE|earth|100|1|dcatcolors.txt|FATAL|20211015-053919|SSH relaxed-auth mode enabled -REMOTE|earth|100|2|dcatcolors.txt|INFO|20211015-053919|Creating server|DTail 4.0.0-RC1 Protocol 4 Have a lot of fun! -REMOTE|earth|100|3|dcatcolors.txt|INFO|20211015-053919|Generating private server RSA host key -REMOTE|earth|100|4|dcatcolors.txt|ERROR|20211015-053919|Unable to write private server RSA host key to file|cache/ssh_host_key|open cache/ssh_host_key: no such file or directory -REMOTE|earth|100|5|dcatcolors.txt|INFO|20211015-053919|Starting server -REMOTE|earth|100|6|dcatcolors.txt|INFO|20211015-053919|Binding server|0.0.0.0:2222 -REMOTE|earth|100|7|dcatcolors.txt|DEBUG|20211015-053919|Starting listener loop -REMOTE|earth|100|8|dcatcolors.txt|INFO|20211015-053919|Starting continuous job runner after 10s -REMOTE|earth|100|9|dcatcolors.txt|INFO|20211015-053919|Starting scheduled job runner after 10s -REMOTE|earth|100|10|dcatcolors.txt|INFO|20211015-053926|Handling connection -REMOTE|earth|100|11|dcatcolors.txt|INFO|20211015-053928|paul@172.17.0.1:33710|Incoming authorization -REMOTE|earth|100|12|dcatcolors.txt|FATAL|20211015-053928|paul@172.17.0.1:33710|Granting permissions via relaxed-auth -REMOTE|earth|100|13|dcatcolors.txt|INFO|20211015-053928|1|stats.go:53|8|16|7|1.34|781h28m6s|MAPREDUCE:STATS|currentConnections=1|lifetimeConnections=1 -REMOTE|earth|100|14|dcatcolors.txt|INFO|20211015-053928|paul@172.17.0.1:33710|Invoking channel handler -REMOTE|earth|100|15|dcatcolors.txt|INFO|20211015-053928|paul@172.17.0.1:33710|Invoking request handler -REMOTE|earth|100|16|dcatcolors.txt|DEBUG|20211015-053928|paul@172.17.0.1:33710|Creating new server handler -REMOTE|earth|100|17|dcatcolors.txt|DEBUG|20211015-053928|paul@172.17.0.1:33710|protocol 4 base64 dGFpbDogL3Zhci9sb2cvZHNlcnZlci8qIHJlZ2V4Om5vb3Ag -REMOTE|earth|100|18|dcatcolors.txt|TRACE|20211015-053928|paul@172.17.0.1:33710|Base64 decoded received command|tail: /var/log/dserver/* regex:noop |36|[tail: /var/log/dserver/* regex:noop ]|at /home/paul/git/dtail/internal/server/handlers/basehandler.go:225 -REMOTE|earth|100|19|dcatcolors.txt|DEBUG|20211015-053928|paul@172.17.0.1:33710|Handling user command|36|[tail: /var/log/dserver/* regex:noop ] -REMOTE|earth|100|20|dcatcolors.txt|DEBUG|20211015-053928|paul@172.17.0.1:33710|/var/log/dserver/dserver.log|readfiles|Checking config permissions -REMOTE|earth|100|21|dcatcolors.txt|FATAL|20211015-053928|paul@172.17.0.1:33710|/var/log/dserver/dserver.log|readfiles|Server releaxed auth enabled -REMOTE|earth|100|22|dcatcolors.txt|INFO|20211015-053928|paul@172.17.0.1:33710|Start reading file|/var/log/dserver/dserver.log|dserver.log -REMOTE|earth|100|23|dcatcolors.txt|DEBUG|20211015-053928|readFile|readFile(filePath:/var/log/dserver/dserver.log,globID:dserver.log,retry:true,canSkipLines:true,seekEOF:true) -REMOTE|earth|100|24|dcatcolors.txt|INFO|20211015-053929|1|stats.go:53|8|26|7|1.34|781h28m7s|MAPREDUCE:STATS|currentConnections=1|lifetimeConnections=1 -REMOTE|earth|100|25|dcatcolors.txt|DEBUG|20211015-053931|/var/log/dserver/dserver.log|File truncation check -REMOTE|earth|100|26|dcatcolors.txt|DEBUG|20211015-053934|/var/log/dserver/dserver.log|File truncation check -REMOTE|earth|100|27|dcatcolors.txt|DEBUG|20211015-053937|/var/log/dserver/dserver.log|File truncation check -REMOTE|earth|100|28|dcatcolors.txt|INFO|20211015-053939|1|stats.go:53|8|16|7|1.21|781h28m16s|MAPREDUCE:STATS|lifetimeConnections=1|currentConnections=0 -REMOTE|earth|100|29|dcatcolors.txt|INFO|20211015-053939|paul@172.17.0.1:33710|Good bye Mister! -REMOTE|earth|100|30|dcatcolors.txt|DEBUG|20211015-053939|paul@172.17.0.1:33710|shutdown() -REMOTE|earth|100|31|dcatcolors.txt|TRACE|20211015-053939|paul@172.17.0.1:33710|flush()|at /home/paul/git/dtail/internal/server/handlers/basehandler.go:278 -REMOTE|earth|100|32|dcatcolors.txt|DEBUG|20211015-053939|paul@172.17.0.1:33710|ALL lines sent|0xc0002aa000 -REMOTE|earth|100|33|dcatcolors.txt|INFO|20211015-053939|1|stats.go:53|8|11|7|1.21|781h28m17s|MAPREDUCE:STATS|currentConnections=0|lifetimeConnections=1 -REMOTE|earth|100|34|dcatcolors.txt|INFO|20211015-053942|Handling connection -REMOTE|earth|100|35|dcatcolors.txt|INFO|20211015-053942|paul@172.17.0.1:33712|Incoming authorization -REMOTE|earth|100|36|dcatcolors.txt|FATAL|20211015-053942|paul@172.17.0.1:33712|Granting permissions via relaxed-auth -REMOTE|earth|100|37|dcatcolors.txt|INFO|20211015-053942|1|stats.go:53|8|15|7|1.11|781h28m19s|MAPREDUCE:STATS|lifetimeConnections=2|currentConnections=1 -REMOTE|earth|100|38|dcatcolors.txt|INFO|20211015-053942|paul@172.17.0.1:33712|Invoking channel handler -REMOTE|earth|100|39|dcatcolors.txt|INFO|20211015-053942|paul@172.17.0.1:33712|Invoking request handler -REMOTE|earth|100|40|dcatcolors.txt|DEBUG|20211015-053942|paul@172.17.0.1:33712|Creating new server handler -REMOTE|earth|100|41|dcatcolors.txt|DEBUG|20211015-053942|paul@172.17.0.1:33712|protocol 4 base64 Y2F0OiAvZXRjL3Bhc3N3ZCByZWdleDpub29wIA== -REMOTE|earth|100|42|dcatcolors.txt|TRACE|20211015-053942|paul@172.17.0.1:33712|Base64 decoded received command|cat: /etc/passwd regex:noop |28|[cat: /etc/passwd regex:noop ]|at /home/paul/git/dtail/internal/server/handlers/basehandler.go:225 -REMOTE|earth|100|43|dcatcolors.txt|DEBUG|20211015-053942|paul@172.17.0.1:33712|Handling user command|28|[cat: /etc/passwd regex:noop ] -REMOTE|earth|100|44|dcatcolors.txt|DEBUG|20211015-053942|paul@172.17.0.1:33712|/etc/passwd|readfiles|Checking config permissions -REMOTE|earth|100|45|dcatcolors.txt|FATAL|20211015-053942|paul@172.17.0.1:33712|/etc/passwd|readfiles|Server releaxed auth enabled -REMOTE|earth|100|46|dcatcolors.txt|INFO|20211015-053942|paul@172.17.0.1:33712|Start reading file|/etc/passwd|passwd -REMOTE|earth|100|47|dcatcolors.txt|DEBUG|20211015-053942|readFile|readFile(filePath:/etc/passwd,globID:passwd,retry:false,canSkipLines:false,seekEOF:false) -REMOTE|earth|100|48|dcatcolors.txt|INFO|20211015-053942|/etc/passwd|End of file reached -REMOTE|earth|100|49|dcatcolors.txt|DEBUG|20211015-053942|paul@172.17.0.1:33712|shutdown() -REMOTE|earth|100|50|dcatcolors.txt|TRACE|20211015-053942|paul@172.17.0.1:33712|flush()|at /home/paul/git/dtail/internal/server/handlers/basehandler.go:278 -REMOTE|earth|100|51|dcatcolors.txt|DEBUG|20211015-053942|paul@172.17.0.1:33712|Still lines to be sent -REMOTE|earth|100|52|dcatcolors.txt|DEBUG|20211015-053942|paul@172.17.0.1:33712|ALL lines sent|0xc0002aa0e0 -REMOTE|earth|100|53|dcatcolors.txt|INFO|20211015-053942|1|stats.go:53|8|21|7|1.11|781h28m19s|MAPREDUCE:STATS|lifetimeConnections=2|currentConnections=0 -REMOTE|earth|100|54|dcatcolors.txt|INFO|20211015-053942|paul@172.17.0.1:33712|Good bye Mister! -REMOTE|earth|100|55|dcatcolors.txt|INFO|20211015-053949|Handling connection -REMOTE|earth|100|56|dcatcolors.txt|INFO|20211015-053949|paul@172.17.0.1:33714|Incoming authorization -REMOTE|earth|100|57|dcatcolors.txt|FATAL|20211015-053949|paul@172.17.0.1:33714|Granting permissions via relaxed-auth -REMOTE|earth|100|58|dcatcolors.txt|INFO|20211015-053949|1|stats.go:53|8|15|7|1.10|781h28m26s|MAPREDUCE:STATS|currentConnections=1|lifetimeConnections=3 -REMOTE|earth|100|59|dcatcolors.txt|INFO|20211015-053949|paul@172.17.0.1:33714|Invoking channel handler -REMOTE|earth|100|60|dcatcolors.txt|INFO|20211015-053949|paul@172.17.0.1:33714|Invoking request handler -REMOTE|earth|100|61|dcatcolors.txt|DEBUG|20211015-053949|paul@172.17.0.1:33714|Creating new server handler -REMOTE|earth|100|62|dcatcolors.txt|DEBUG|20211015-053949|paul@172.17.0.1:33714|protocol 4 base64 bWFwIGZyb20gc3RhdHMgc2VsZWN0IGF2ZygkZ29yb3V0aW5lcyksbWF4KCRnb3JvdXRpbmVzKSxtaW4oJGdvcm91dGluZXMpLGxhc3QoJGdvcm91dGluZXMpLGNvdW50KCRob3N0bmFtZSksJGhvc3RuYW1lIGdyb3VwIGJ5ICRob3N0bmFtZSBvcmRlciBieSBhdmcoJGdvcm91dGluZXMp -REMOTE|earth|100|63|dcatcolors.txt|TRACE|20211015-053949|paul@172.17.0.1:33714|Base64 decoded received command|map from stats select avg($goroutines),max($goroutines),min($goroutines),last($goroutines),count($hostname),$hostname group by $hostname order by avg($goroutines)|162|[map from stats select avg($goroutines),max($goroutines),min($goroutines),last($goroutines),count($hostname),$hostname group by $hostname order by avg($goroutines)]|at /home/paul/git/dtail/internal/server/handlers/basehandler.go:225 -REMOTE|earth|100|64|dcatcolors.txt|DEBUG|20211015-053949|paul@172.17.0.1:33714|Handling user command|162|[map from stats select avg($goroutines),max($goroutines),min($goroutines),last($goroutines),count($hostname),$hostname group by $hostname order by avg($goroutines)] -REMOTE|earth|100|65|dcatcolors.txt|INFO|20211015-053949|Creating log format parser|default -REMOTE|earth|100|66|dcatcolors.txt|DEBUG|20211015-053949|paul@172.17.0.1:33714|protocol 4 base64 Y2F0OiAvdmFyL2xvZy9kc2VydmVyLyogcmVnZXg6ZGVmYXVsdCBcfE1BUFJFRFVDRTpTVEFUU1x8 -REMOTE|earth|100|67|dcatcolors.txt|TRACE|20211015-053949|paul@172.17.0.1:33714|Base64 decoded received command|cat: /var/log/dserver/* regex:default \|MAPREDUCE:STATS\||57|[cat: /var/log/dserver/* regex:default \|MAPREDUCE:STATS\|]|at /home/paul/git/dtail/internal/server/handlers/basehandler.go:225 -REMOTE|earth|100|68|dcatcolors.txt|DEBUG|20211015-053949|paul@172.17.0.1:33714|Handling user command|57|[cat: /var/log/dserver/* regex:default \|MAPREDUCE:STATS\|] -REMOTE|earth|100|69|dcatcolors.txt|DEBUG|20211015-053949|paul@172.17.0.1:33714|/var/log/dserver/dserver.log|readfiles|Checking config permissions -REMOTE|earth|100|70|dcatcolors.txt|FATAL|20211015-053949|paul@172.17.0.1:33714|/var/log/dserver/dserver.log|readfiles|Server releaxed auth enabled -REMOTE|earth|100|71|dcatcolors.txt|INFO|20211015-053949|paul@172.17.0.1:33714|Start reading file|/var/log/dserver/dserver.log|dserver.log -REMOTE|earth|100|72|dcatcolors.txt|DEBUG|20211015-053949|readFile|readFile(filePath:/var/log/dserver/dserver.log,globID:dserver.log,retry:false,canSkipLines:false,seekEOF:false) -REMOTE|earth|100|73|dcatcolors.txt|INFO|20211015-053949|/var/log/dserver/dserver.log|End of file reached -REMOTE|earth|100|74|dcatcolors.txt|INFO|20211015-053949|Serializing mapreduce result -REMOTE|earth|100|75|dcatcolors.txt|TRACE|20211015-053949|Serialising mapr.AggregateSet|AggregateSet(Samples:7,FValues:map[avg($goroutines):120 count($hostname):7 max($goroutines):26 min($goroutines):11],SValues:map[$hostname:serv6 last($goroutines):15])|at /home/paul/git/dtail/internal/mapr/aggregateset.go:72 -REMOTE|earth|100|76|dcatcolors.txt|DEBUG|20211015-053949|paul@172.17.0.1:33714|shutdown() -REMOTE|earth|100|77|dcatcolors.txt|TRACE|20211015-053949|paul@172.17.0.1:33714|flush()|at /home/paul/git/dtail/internal/server/handlers/basehandler.go:278 -REMOTE|earth|100|78|dcatcolors.txt|DEBUG|20211015-053949|paul@172.17.0.1:33714|ALL lines sent|0xc0004f0000 -REMOTE|earth|100|79|dcatcolors.txt|INFO|20211015-053949|1|stats.go:53|8|13|7|1.10|781h28m26s|MAPREDUCE:STATS|currentConnections=0|lifetimeConnections=3 -REMOTE|earth|100|80|dcatcolors.txt|INFO|20211015-053949|paul@172.17.0.1:33714|Good bye Mister! -REMOTE|earth|100|81|dcatcolors.txt|INFO|20211015-053949|1|stats.go:53|8|12|7|1.10|781h28m27s|MAPREDUCE:STATS|currentConnections=0|lifetimeConnections=3 -REMOTE|earth|100|82|dcatcolors.txt|INFO|20211015-053959|1|stats.go:53|8|11|7|1.01|781h28m37s|MAPREDUCE:STATS|currentConnections=0|lifetimeConnections=3 -REMOTE|earth|100|83|dcatcolors.txt|INFO|20211015-054002|Handling connection -REMOTE|earth|100|84|dcatcolors.txt|INFO|20211015-054002|paul@172.17.0.1:33716|Incoming authorization -REMOTE|earth|100|85|dcatcolors.txt|FATAL|20211015-054002|paul@172.17.0.1:33716|Granting permissions via relaxed-auth -REMOTE|earth|100|86|dcatcolors.txt|INFO|20211015-054002|1|stats.go:53|8|15|7|1.09|781h28m39s|MAPREDUCE:STATS|currentConnections=1|lifetimeConnections=4 -REMOTE|earth|100|87|dcatcolors.txt|INFO|20211015-054002|paul@172.17.0.1:33716|Invoking channel handler -REMOTE|earth|100|88|dcatcolors.txt|INFO|20211015-054002|paul@172.17.0.1:33716|Invoking request handler -REMOTE|earth|100|89|dcatcolors.txt|DEBUG|20211015-054002|paul@172.17.0.1:33716|Creating new server handler -REMOTE|earth|100|90|dcatcolors.txt|DEBUG|20211015-054002|paul@172.17.0.1:33716|protocol 4 base64 Z3JlcDogL3Zhci9sb2cvZHNlcnZlci8qIHJlZ2V4OmRlZmF1bHQgTUFQUkVEVUNF -REMOTE|earth|100|91|dcatcolors.txt|TRACE|20211015-054002|paul@172.17.0.1:33716|Base64 decoded received command|grep: /var/log/dserver/* regex:default MAPREDUCE|48|[grep: /var/log/dserver/* regex:default MAPREDUCE]|at /home/paul/git/dtail/internal/server/handlers/basehandler.go:225 -REMOTE|earth|100|92|dcatcolors.txt|DEBUG|20211015-054002|paul@172.17.0.1:33716|Handling user command|48|[grep: /var/log/dserver/* regex:default MAPREDUCE] -REMOTE|earth|100|93|dcatcolors.txt|DEBUG|20211015-054002|paul@172.17.0.1:33716|/var/log/dserver/dserver.log|readfiles|Checking config permissions -REMOTE|earth|100|94|dcatcolors.txt|FATAL|20211015-054002|paul@172.17.0.1:33716|/var/log/dserver/dserver.log|readfiles|Server releaxed auth enabled -REMOTE|earth|100|95|dcatcolors.txt|INFO|20211015-054002|paul@172.17.0.1:33716|Start reading file|/var/log/dserver/dserver.log|dserver.log -REMOTE|earth|100|96|dcatcolors.txt|DEBUG|20211015-054002|readFile|readFile(filePath:/var/log/dserver/dserver.log,globID:dserver.log,retry:false,canSkipLines:false,seekEOF:false) -REMOTE|earth|100|97|dcatcolors.txt|INFO|20211015-054002|/var/log/dserver/dserver.log|End of file reached -REMOTE|earth|100|98|dcatcolors.txt|DEBUG|20211015-054002|paul@172.17.0.1:33716|shutdown() -REMOTE|earth|100|99|dcatcolors.txt|TRACE|20211015-054002|paul@172.17.0.1:33716|flush()|at /home/paul/git/dtail/internal/server/handlers/basehandler.go:278 -REMOTE|earth|100|100|dcatcolors.txt|DEBUG|20211015-054002|paul@172.17.0.1:33716|Still lines to be sent -REMOTE|earth|100|101|dcatcolors.txt|DEBUG|20211015-054002|paul@172.17.0.1:33716|ALL lines sent|0xc0004f00e0 -REMOTE|earth|100|102|dcatcolors.txt|ERROR|20211015-054002|paul@172.17.0.1:33716|read tcp 172.17.0.8:2222->172.17.0.1:33716: use of closed network connection -REMOTE|earth|100|103|dcatcolors.txt|INFO|20211015-054002|1|stats.go:53|8|15|7|1.09|781h28m39s|MAPREDUCE:STATS|currentConnections=0|lifetimeConnections=4 -REMOTE|earth|100|104|dcatcolors.txt|INFO|20211015-054002|paul@172.17.0.1:33716|Good bye Mister! -REMOTE|earth|100|105|dcatcolors.txt|INFO|20211015-054009|1|stats.go:53|8|11|7|1.00|781h28m47s|MAPREDUCE:STATS|currentConnections=0|lifetimeConnections=4 -REMOTE|earth|100|106|dcatcolors.txt|INFO|20211015-054019|1|stats.go:53|8|11|7|1.01|781h28m57s|MAPREDUCE:STATS|currentConnections=0|lifetimeConnections=4 -REMOTE|earth|100|107|dcatcolors.txt|INFO|20211015-054029|1|stats.go:53|8|11|7|0.85|781h29m7s|MAPREDUCE:STATS|currentConnections=0|lifetimeConnections=4 -REMOTE|earth|100|108|dcatcolors.txt|INFO|20211015-054039|1|stats.go:53|8|11|7|0.87|781h29m17s|MAPREDUCE:STATS|lifetimeConnections=4|currentConnections=0 -REMOTE|earth|100|109|dcatcolors.txt|INFO|20211015-054049|1|stats.go:53|8|11|7|0.73|781h29m27s|MAPREDUCE:STATS|currentConnections=0|lifetimeConnections=4 -REMOTE|earth|100|110|dcatcolors.txt|INFO|20211015-054059|1|stats.go:53|8|11|7|0.70|781h29m37s|MAPREDUCE:STATS|currentConnections=0|lifetimeConnections=4 -REMOTE|earth|100|111|dcatcolors.txt|INFO|20211015-054109|1|stats.go:53|8|11|7|0.59|781h29m47s|MAPREDUCE:STATS|currentConnections=0|lifetimeConnections=4 -REMOTE|earth|100|112|dcatcolors.txt|INFO|20211015-054119|1|stats.go:53|8|11|7|0.66|781h29m57s|MAPREDUCE:STATS|currentConnections=0|lifetimeConnections=4 -REMOTE|earth|100|113|dcatcolors.txt|INFO|20211015-054129|1|stats.go:53|8|11|7|0.56|781h30m7s|MAPREDUCE:STATS|lifetimeConnections=4|currentConnections=0 -REMOTE|earth|100|114|dcatcolors.txt|INFO|20211015-054139|1|stats.go:53|8|11|7|0.55|781h30m17s|MAPREDUCE:STATS|currentConnections=0|lifetimeConnections=4 -REMOTE|earth|100|115|dcatcolors.txt|INFO|20211015-054149|1|stats.go:53|8|11|7|0.54|781h30m27s|MAPREDUCE:STATS|currentConnections=0|lifetimeConnections=4 -REMOTE|earth|100|116|dcatcolors.txt|INFO|20211015-054159|1|stats.go:53|8|11|7|0.53|781h30m37s|MAPREDUCE:STATS|currentConnections=0|lifetimeConnections=4 -REMOTE|earth|100|117|dcatcolors.txt|INFO|20211015-054209|1|stats.go:53|8|11|7|0.68|781h30m47s|MAPREDUCE:STATS|lifetimeConnections=4|currentConnections=0 -REMOTE|earth|100|118|dcatcolors.txt|INFO|20211015-054219|1|stats.go:53|8|11|7|0.65|781h30m57s|MAPREDUCE:STATS|currentConnections=0|lifetimeConnections=4 -REMOTE|earth|100|119|dcatcolors.txt|INFO|20211015-054229|1|stats.go:53|8|11|7|0.70|781h31m7s|MAPREDUCE:STATS|currentConnections=0|lifetimeConnections=4 -REMOTE|earth|100|120|dcatcolors.txt|INFO|20211015-054239|1|stats.go:53|8|11|7|0.75|781h31m17s|MAPREDUCE:STATS|currentConnections=0|lifetimeConnections=4 -REMOTE|earth|100|121|dcatcolors.txt|INFO|20211015-054249|1|stats.go:53|8|11|7|0.87|781h31m27s|MAPREDUCE:STATS|currentConnections=0|lifetimeConnections=4 -REMOTE|earth|100|122|dcatcolors.txt|INFO|20211015-054259|1|stats.go:53|8|11|7|0.89|781h31m37s|MAPREDUCE:STATS|currentConnections=0|lifetimeConnections=4 -REMOTE|earth|100|123|dcatcolors.txt|INFO|20211015-054309|1|stats.go:53|8|11|7|0.90|781h31m47s|MAPREDUCE:STATS|currentConnections=0|lifetimeConnections=4 -REMOTE|earth|100|124|dcatcolors.txt|INFO|20211015-054319|1|stats.go:53|8|11|7|0.92|781h31m57s|MAPREDUCE:STATS|currentConnections=0|lifetimeConnections=4 -REMOTE|earth|100|125|dcatcolors.txt|INFO|20211015-054329|1|stats.go:53|8|11|7|0.78|781h32m7s|MAPREDUCE:STATS|currentConnections=0|lifetimeConnections=4 -REMOTE|earth|100|126|dcatcolors.txt|INFO|20211015-054339|1|stats.go:53|8|11|7|0.66|781h32m17s|MAPREDUCE:STATS|lifetimeConnections=4|currentConnections=0 -REMOTE|earth|100|127|dcatcolors.txt|INFO|20211015-054349|1|stats.go:53|8|11|7|0.78|781h32m27s|MAPREDUCE:STATS|currentConnections=0|lifetimeConnections=4 -REMOTE|earth|100|128|dcatcolors.txt|INFO|20211015-054359|1|stats.go:53|8|11|7|0.82|781h32m37s|MAPREDUCE:STATS|currentConnections=0|lifetimeConnections=4 -REMOTE|earth|100|129|dcatcolors.txt|INFO|20211015-054409|1|stats.go:53|8|11|7|0.69|781h32m47s|MAPREDUCE:STATS|currentConnections=0|lifetimeConnections=4 -REMOTE|earth|100|130|dcatcolors.txt|INFO|20211015-054419|1|stats.go:53|8|11|7|0.81|781h32m57s|MAPREDUCE:STATS|currentConnections=0|lifetimeConnections=4 -REMOTE|earth|100|131|dcatcolors.txt|INFO|20211015-054429|1|stats.go:53|8|11|7|0.77|781h33m7s|MAPREDUCE:STATS|lifetimeConnections=4|currentConnections=0 -REMOTE|earth|100|132|dcatcolors.txt|INFO|20211015-054439|1|stats.go:53|8|11|7|0.65|781h33m17s|MAPREDUCE:STATS|currentConnections=0|lifetimeConnections=4 -REMOTE|earth|100|133|dcatcolors.txt|INFO|20211015-054449|1|stats.go:53|8|11|7|0.62|781h33m27s|MAPREDUCE:STATS|currentConnections=0|lifetimeConnections=4 -REMOTE|earth|100|134|dcatcolors.txt|INFO|20211015-054459|1|stats.go:53|8|11|7|0.69|781h33m37s|MAPREDUCE:STATS|currentConnections=0|lifetimeConnections=4 -REMOTE