From 4afb98ba8b7cf8d16f7a26cdceab7ab420a89572 Mon Sep 17 00:00:00 2001 From: Jason Wilder Date: Mon, 26 Oct 2015 09:35:05 -0600 Subject: [PATCH] Return error instead of panicing if we can't create a new WAL segment If a drop database is executed while writes are in flight, a panic could occur because the WAL would fail to write to the DB dirs where had been removed. Partil fix for #4538 --- tsdb/engine/tsm1/wal.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tsdb/engine/tsm1/wal.go b/tsdb/engine/tsm1/wal.go index 4f3bacbaf6..40cd204ec2 100644 --- a/tsdb/engine/tsm1/wal.go +++ b/tsdb/engine/tsm1/wal.go @@ -431,8 +431,9 @@ func (l *Log) writeToLog(writeType walEntryType, data []byte) error { if l.currentSegmentFile == nil || l.currentSegmentSize > DefaultSegmentSize { if err := l.newSegmentFile(); err != nil { - // fail hard since we can't write data - panic(fmt.Sprintf("error opening new segment file for wal: %s", err.Error())) + // A drop database or RP call could trigger this error if writes were in-flight + // when the drop statement executes. + return fmt.Errorf("error opening new segment file for wal: %s", err.Error()) } }