refactor error handling

Signed-off-by: Krasi Georgiev <kgeorgie@redhat.com>
This commit is contained in:
Krasi Georgiev 2019-02-11 12:22:11 +02:00
parent 0f8f5027ef
commit c3a5c1d891
2 changed files with 7 additions and 6 deletions

View file

@ -490,10 +490,8 @@ func (c *LeveledCompactor) write(dest string, meta *BlockMeta, blocks ...BlockRe
defer func(t time.Time) {
var merr MultiError
merr.Add(err)
merr.Add(closeAll(closers))
err = merr.Err()
for _, w := range closers {
merr.Add(w.Close())
}
// RemoveAll returns no error when tmp doesn't exist so it is safe to always run it.
if err := os.RemoveAll(tmp); err != nil {
@ -606,7 +604,7 @@ func (c *LeveledCompactor) write(dest string, meta *BlockMeta, blocks ...BlockRe
// populateBlock fills the index and chunk writers with new data gathered as the union
// of the provided blocks. It returns meta information for the new block.
func (c *LeveledCompactor) populateBlock(blocks []BlockReader, meta *BlockMeta, indexw IndexWriter, chunkw ChunkWriter) error {
func (c *LeveledCompactor) populateBlock(blocks []BlockReader, meta *BlockMeta, indexw IndexWriter, chunkw ChunkWriter) (err error) {
if len(blocks) == 0 {
return errors.New("cannot populate block from no readers")
}
@ -617,7 +615,10 @@ func (c *LeveledCompactor) populateBlock(blocks []BlockReader, meta *BlockMeta,
closers = []io.Closer{}
)
defer func() {
closeAll(closers...)
var merr MultiError
merr.Add(err)
merr.Add(closeAll(closers))
err = merr.Err()
c.metrics.populatingBlocks.Set(0)
}()

2
db.go
View file

@ -1091,7 +1091,7 @@ func (es MultiError) Err() error {
return es
}
func closeAll(cs ...io.Closer) error {
func closeAll(cs []io.Closer) error {
var merr MultiError
for _, c := range cs {