wal/wal.go
func (w *WAL) Close() error {
	w.mu.Lock()
	defer w.mu.Unlock()

	if w.fp != nil {
		w.fp.Close()
		w.fp = nil
	}

	if w.tail() != nil {
		if err := w.sync(); err != nil {
			return err
		}
	}
	for _, l := range w.locks {
		if l == nil {
			continue
		}
		if err := l.Close(); err != nil {
			if w.lg != nil {
				w.lg.Warn("failed to close WAL", zap.Error(err))
			} else {
				plog.Errorf("failed to unlock during closing wal: %s", err)
			}
		}
	}

	return w.dirFile.Close()
}
func (w *WAL) Close() error {
	w.mu.Lock()
	defer w.mu.Unlock()

	if w.fp != nil {
		w.fp.Close()
		w.fp = nil
	}

	if w.tail() != nil {
		if err := w.sync(); err != nil {
			return err
		}
	}
	for _, l := range w.locks {
		if l == nil {
			continue
		}
		if err := l.Close(); err != nil {
			if w.lg != nil {
				w.lg.Warn("failed to close WAL", zap.Error(err))
			} else {
				plog.Errorf("failed to unlock during closing wal: %s", err)
			}
		}
	}

	return w.dirFile.Close()
}
func ( w * WAL ) Close ( ) error { w . mu . Lock ( ) defer w . mu . Unlock ( ) if w . fp != nil { w . fp . Close ( ) w . fp = nil } if w . tail ( ) != nil { if err := w . sync ( ) ; err != nil { return err } } for _ , l := range w . locks { if l == nil { continue } if err := l . Close ( ) ; err != nil { if w . lg != nil { w . lg . Warn ( " " , zap . Error ( err ) ) } else { plog . Errorf ( " " , err ) } } } return w . dirFile . Close ( ) }
// Close closes the current WAL file and directory.
Close closes the current WAL file and directory .