From dba222b53c8c2554fa5d7f181ec9bba3a03728cd Mon Sep 17 00:00:00 2001 From: Brian Brazil Date: Tue, 18 Apr 2017 17:22:13 +0100 Subject: [PATCH] Make rollback actually rollback. Also add tests for basic commit/rollback functionality. Fixes #39 --- db.go | 2 +- db_test.go | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+), 1 deletion(-) diff --git a/db.go b/db.go index 3ef983745..e51a5bcec 100644 --- a/db.go +++ b/db.go @@ -654,7 +654,7 @@ func (a *dbAppender) Rollback() error { var g errgroup.Group for _, h := range a.heads { - g.Go(h.app.Commit) + g.Go(h.app.Rollback) } return g.Wait() diff --git a/db_test.go b/db_test.go index e75d4ac3f..e38e6902f 100644 --- a/db_test.go +++ b/db_test.go @@ -12,3 +12,78 @@ // limitations under the License. package tsdb + +import ( + "io/ioutil" + "os" + "testing" + + "github.com/prometheus/tsdb/labels" +) + +func TestDataAvailableOnlyAfterCommit(t *testing.T) { + tmpdir, _ := ioutil.TempDir("", "test") + defer os.RemoveAll(tmpdir) + + db, err := Open(tmpdir, nil, nil, nil) + if err != nil { + t.Fatalf("Error opening database: %q", err) + } + defer db.Close() + + app := db.Appender() + _, err = app.Add(labels.FromStrings("foo", "bar"), 0, 0) + if err != nil { + t.Fatalf("Error adding sample: %q", err) + } + + querier := db.Querier(0, 1) + defer querier.Close() + seriesSet := querier.Select(labels.NewEqualMatcher("foo", "bar")) + if seriesSet.Next() { + t.Fatalf("Error, was expecting no matching series.") + } + + err = app.Commit() + if err != nil { + t.Fatalf("Error committing: %q", err) + } + + querier = db.Querier(0, 1) + defer querier.Close() + + seriesSet = querier.Select(labels.NewEqualMatcher("foo", "bar")) + if !seriesSet.Next() { + t.Fatalf("Error, was expecting a matching series.") + } +} + +func TestDataNotAvailableAfterRollback(t *testing.T) { + tmpdir, _ := ioutil.TempDir("", "test") + defer os.RemoveAll(tmpdir) + + db, err := Open(tmpdir, nil, nil, nil) + if err != nil { + t.Fatalf("Error opening database: %q", err) + } + defer db.Close() + + app := db.Appender() + _, err = app.Add(labels.FromStrings("foo", "bar"), 0, 0) + if err != nil { + t.Fatalf("Error adding sample: %q", err) + } + + err = app.Rollback() + if err != nil { + t.Fatalf("Error rolling back: %q", err) + } + + querier := db.Querier(0, 1) + defer querier.Close() + + seriesSet := querier.Select(labels.NewEqualMatcher("foo", "bar")) + if seriesSet.Next() { + t.Fatalf("Error, was expecting no matching series.") + } +}