diff --git a/holder.go b/holder.go index 794104e53..05d21b3c7 100644 --- a/holder.go +++ b/holder.go @@ -101,6 +101,9 @@ func NewHolder() *Holder { // Open initializes the root data directory for the holder. func (h *Holder) Open() error { + // Reset closing in case Holder is being reopened. + h.closing = make(chan struct{}) + h.setFileLimit() h.Logger.Printf("open holder path: %s", h.Path) @@ -178,6 +181,9 @@ func (h *Holder) Close() error { } } + // Reset opened in case Holder needs to be reopened. + h.opened = make(chan struct{}) + return nil } diff --git a/holder_internal_test.go b/holder_internal_test.go index c4230e9aa..0e61b87a5 100644 --- a/holder_internal_test.go +++ b/holder_internal_test.go @@ -287,3 +287,13 @@ func TestHolderCleaner_CleanHolder(t *testing.T) { } } } + +// Ensure holder can reopen. +func TestHolderCleaner_Reopen(t *testing.T) { + h := NewHolder() + h.Path = "path" + h.Open() + h.Close() + h.Open() + h.Close() +}