Ensure tmp files cleaned up when compaction disabled

pull/8562/head
Edd Robinson 2017-07-04 20:04:23 +01:00
parent 8550fabf89
commit 0748d28986
1 changed files with 28 additions and 0 deletions

View File

@ -748,6 +748,11 @@ func (c *Compactor) CompactFull(tsmFiles []string) ([]string, error) {
c.mu.RUnlock()
if !enabled {
c.mu.Lock()
defer c.mu.Unlock()
if err := c.cleanupDisabledCompaction(tsmFiles); err != nil {
return nil, err
}
return nil, errCompactionsDisabled
}
@ -777,6 +782,11 @@ func (c *Compactor) CompactFast(tsmFiles []string) ([]string, error) {
c.mu.RUnlock()
if !enabled {
c.mu.Lock()
defer c.mu.Unlock()
if err := c.cleanupDisabledCompaction(tsmFiles); err != nil {
return nil, err
}
return nil, errCompactionsDisabled
}
@ -784,6 +794,24 @@ func (c *Compactor) CompactFast(tsmFiles []string) ([]string, error) {
}
// cleanupDisabledCompaction is responsible for cleaning up a compaction that
// was started, but then abandoned before the temporary files were dealt with.
func (c *Compactor) cleanupDisabledCompaction(tsmFiles []string) error {
for _, f := range tsmFiles {
files, err := filepath.Glob(filepath.Join(filepath.Dir(f), fmt.Sprintf("*.%s", CompactionTempExtension)))
if err != nil {
return fmt.Errorf("error cleaning up compaction temp files: %s", err.Error())
}
for _, f := range files {
if err := os.Remove(f); err != nil {
return fmt.Errorf("error removing temp compaction file: %v", err)
}
}
}
return nil
}
// writeNewFiles writes from the iterator into new TSM files, rotating
// to a new file once it has reached the max TSM file size.
func (c *Compactor) writeNewFiles(generation, sequence int, iter KeyIterator) ([]string, error) {