diff options
| author | Chris Lu <chris.lu@gmail.com> | 2019-04-18 19:22:13 -0700 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2019-04-18 19:22:13 -0700 |
| commit | fa176fe80f77e569d03b2975a5c15cc213f37ea4 (patch) | |
| tree | b3dea937371004d3a813f4b1f680a40a632b7230 /unmaintained/volume_tailer/volume_tailer.go | |
| parent | 3dce1016cb36a511e3ae0fa67c5eb5631f1ce4d6 (diff) | |
| download | seaweedfs-fa176fe80f77e569d03b2975a5c15cc213f37ea4.tar.xz seaweedfs-fa176fe80f77e569d03b2975a5c15cc213f37ea4.zip | |
volume tailing chunks large files
Diffstat (limited to 'unmaintained/volume_tailer/volume_tailer.go')
| -rw-r--r-- | unmaintained/volume_tailer/volume_tailer.go | 49 |
1 files changed, 47 insertions, 2 deletions
diff --git a/unmaintained/volume_tailer/volume_tailer.go b/unmaintained/volume_tailer/volume_tailer.go index 22c3ebab4..8a662ef5e 100644 --- a/unmaintained/volume_tailer/volume_tailer.go +++ b/unmaintained/volume_tailer/volume_tailer.go @@ -10,6 +10,7 @@ import ( weed_server "github.com/chrislusf/seaweedfs/weed/server" "github.com/chrislusf/seaweedfs/weed/storage" "github.com/spf13/viper" + "golang.org/x/tools/godoc/util" "io" "log" @@ -19,6 +20,7 @@ var ( master = flag.String("master", "localhost:9333", "master server host and port") volumeId = flag.Int("volumeId", -1, "a volume id") timeoutSeconds = flag.Int("timeoutSeconds", 0, "disconnect if no activity after these seconds") + showTextFile = flag.Bool("showTextFile", false, "display textual file content") ) func main() { @@ -59,7 +61,51 @@ func main() { } } - println("header:", len(resp.NeedleHeader), "body:", len(resp.NeedleBody)) + needleHeader := resp.NeedleHeader + needleBody := resp.NeedleBody + + if len(needleHeader) == 0 { + continue + } + + for !resp.IsLastChunk { + resp, recvErr = stream.Recv() + if recvErr != nil { + if recvErr == io.EOF { + break + } else { + return recvErr + } + } + needleBody = append(needleBody, resp.NeedleBody...) + } + + n := new(storage.Needle) + n.ParseNeedleHeader(needleHeader) + n.ReadNeedleBodyBytes(needleBody, storage.CurrentVersion) + + if n.Size == 0 { + println("-", n.String()) + continue + } else { + println("+", n.String()) + } + + if *showTextFile { + + data := n.Data + if n.IsGzipped() { + if data, err = operation.UnGzipData(data); err != nil { + continue + } + } + if util.IsText(data) { + println(string(data)) + } + + println("-", n.String(), "compressed", n.IsGzipped(), "original size", len(data)) + } + } return nil @@ -70,5 +116,4 @@ func main() { log.Printf("Error VolumeTail volume %d: %v", vid, err) } - } |
