From 929b4f539bd0c0423f5c77ab17a0ebe84ad10d31 Mon Sep 17 00:00:00 2001 From: Barak Michener Date: Thu, 24 Jul 2014 16:59:38 -0400 Subject: [PATCH] update the triplestore interface and local replication --- graph/triplestore.go | 8 ++++++++ replication/local.go | 13 +++++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/graph/triplestore.go b/graph/triplestore.go index a640b1d..e72c09d 100644 --- a/graph/triplestore.go +++ b/graph/triplestore.go @@ -70,6 +70,14 @@ type TripleStore interface { // Returns the number of triples currently stored. Size() int64 + // The last replicated transaction ID that this triplestore has verified. + Horizon() int64 + + // Inform the triplestore of a new replication strategy. Happens at startup and, + // perhaps in the future, if replication changes mid-run. Writes without any replication + // strategy are not allowed. + SetReplication(Replication) + // Creates a fixed iterator which can compare Values FixedIterator() FixedIterator diff --git a/replication/local.go b/replication/local.go index 0749d55..6f7d684 100644 --- a/replication/local.go +++ b/replication/local.go @@ -15,8 +15,9 @@ package local import ( - "github.com/google/cayley/graph" "sync" + + "github.com/google/cayley/graph" ) type LocalReplication struct { @@ -25,7 +26,7 @@ type LocalReplication struct { mut sync.Mutex } -func NewLocalReplication(ts graph.TripleStore, opts graph.Options) (*LocalReplication, error) { +func NewLocalReplication(ts graph.TripleStore, opts graph.Options) (graph.Replication, error) { rep := &LocalReplication{lastId: ts.Horizon(), ts: ts} ts.SetReplication(rep) return rep, nil @@ -44,8 +45,12 @@ func (l *LocalReplication) GetLastId() int64 { return l.lastId } -func (l *LocalReplication) Replicate([]*graph.Transaction) {} -func (l *LocalReplication) RequestTransactionRange(int64, int64) {} +func (l *LocalReplication) Replicate([]*graph.Transaction) { + // Noop, single-machines don't replicate out anywhere. +} +func (l *LocalReplication) RequestTransactionRange(int64, int64) { + // Single machines also can't catch up. +} func init() { graph.RegisterReplication("local", NewLocalReplication)