Ensure callers get errors when they happen

Previously we silently dropped portions or all of a block when a
duplicate quad is found. We still fail now, but we tell someone.

Fixes #201.
This commit is contained in:
kortschak 2015-01-26 14:53:52 +10:30
parent 9088fe376b
commit 9e378302f5
2 changed files with 10 additions and 5 deletions

View file

@ -82,15 +82,21 @@ func Load(qw graph.QuadWriter, cfg *config.Config, dec quad.Unmarshaler) error {
block = append(block, t) block = append(block, t)
if len(block) == cap(block) { if len(block) == cap(block) {
count += len(block) count += len(block)
qw.AddQuadSet(block) err := qw.AddQuadSet(block)
if err != nil {
return fmt.Errorf("db: failed to load data: %v", err)
}
block = block[:0]
if glog.V(2) { if glog.V(2) {
glog.V(2).Infof("Wrote %d quads.", count) glog.V(2).Infof("Wrote %d quads.", count)
} }
block = block[:0]
} }
} }
count += len(block) count += len(block)
qw.AddQuadSet(block) err := qw.AddQuadSet(block)
if err != nil {
return fmt.Errorf("db: failed to load data: %v", err)
}
if glog.V(2) { if glog.V(2) {
glog.V(2).Infof("Wrote %d quads.", count) glog.V(2).Infof("Wrote %d quads.", count)
} }

View file

@ -55,8 +55,7 @@ func (s *Single) AddQuadSet(set []quad.Quad) error {
Timestamp: time.Now(), Timestamp: time.Now(),
} }
} }
s.qs.ApplyDeltas(deltas) return s.qs.ApplyDeltas(deltas)
return nil
} }
func (s *Single) RemoveQuad(q quad.Quad) error { func (s *Single) RemoveQuad(q quad.Quad) error {