Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
mix: multiple bug fixes and refactorings for both mix or non-mix logics
* move most data structres in the closer places for readability.
* bug fixes for fetch, propagation, and backfilling for mix aggregation.
* fix tests for mix aggregation.
* when fetching from lower archives, if the time range overlapped data in base/1st
  archive, cwhipser would do a dynamic filling (for both mix and classic aggregations).
  this would slow some reads but for good reason.
* add cmd/read.go.
* cmd/dump.go: print date times along side with timestamps.
  • Loading branch information
bom-d-van committed Dec 8, 2019
commit 93d9efc4c0c7bbc43f7afbc2f2a4556e450f6037
65 changes: 65 additions & 0 deletions cmd/read.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
package main

import (
"fmt"
"io/ioutil"
"os"
"strconv"
"strings"

whisper "github.com/go-graphite/go-whisper"
)

func main() {
var body string
if len(os.Args) < 2 {
fmt.Println("write: write data points to a whisper file.\nwrite file.wsp [1572940800:3,1572940801:5]\n")
os.Exit(1)
} else if len(os.Args) > 2 {
body = os.Args[2]
} else {
in, err := ioutil.ReadAll(os.Stdin)
if err != nil {
panic(err)
}
body = string(in)
}

db, err := whisper.OpenWithOptions(os.Args[1], &whisper.Options{FLock: true})
if err != nil {
panic(err)
}

if err := db.UpdateMany(parse(body)); err != nil {
panic(err)
}

if err := db.Close(); err != nil {
panic(err)
}

if db.Extended {
fmt.Println("file is extended.")
}
}

func parse(str string) []*whisper.TimeSeriesPoint {
var ps []*whisper.TimeSeriesPoint
for _, p := range strings.Split(str, ",") {
p = strings.TrimSpace(p)
if p == "" {
continue
}
pp := strings.Split(p, ":")
t, err := strconv.Atoi(pp[0])
if err != nil {
panic(err)
}
v, err := strconv.ParseFloat(pp[1], 64)
if err != nil {
panic(err)
}
ps = append(ps, &whisper.TimeSeriesPoint{Time: t, Value: v})
}
return ps
}
Loading