From 1dc156b96577bf352eff27e570742c5a6ee5fe91 Mon Sep 17 00:00:00 2001 From: Philip O'Toole Date: Sat, 6 Feb 2021 16:52:18 -0500 Subject: [PATCH 1/3] Add total Raft directory size to Store stats --- store/store.go | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/store/store.go b/store/store.go index 30c40c4dc..bb78bbde4 100644 --- a/store/store.go +++ b/store/store.go @@ -498,6 +498,11 @@ func (s *Store) Stats() (map[string]interface{}, error) { return nil, err } + dirSz, err := dirSize(s.raftDir) + if err != nil { + return nil, err + } + status := map[string]interface{}{ "node_id": s.raftID, "raft": raftStats, @@ -516,6 +521,7 @@ func (s *Store) Stats() (map[string]interface{}, error) { "metadata": s.meta, "nodes": nodes, "dir": s.raftDir, + "dir_size": dirSz, "sqlite3": dbStatus, "db_conf": s.dbConf, } @@ -1421,3 +1427,18 @@ func pathExists(p string) bool { } return true } + +// dirSize returns the total size of all files in the given directory +func dirSize(path string) (int64, error) { + var size int64 + err := filepath.Walk(path, func(_ string, info os.FileInfo, err error) error { + if err != nil { + return err + } + if !info.IsDir() { + size += info.Size() + } + return err + }) + return size, err +} From 73663ccc58ca62dcec5d9f66d187e2867673ea97 Mon Sep 17 00:00:00 2001 From: Philip O'Toole Date: Sat, 6 Feb 2021 19:10:32 -0500 Subject: [PATCH 2/3] Shutdown gracefully to prevent races See https://app.circleci.com/pipelines/github/rqlite/rqlite/428/workflows/794131c2-372b-4fb0-8c92-6e3dc0709cb9/jobs/4512 --- system_test/helpers.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system_test/helpers.go b/system_test/helpers.go index 06854efbd..c8dee4cd1 100644 --- a/system_test/helpers.go +++ b/system_test/helpers.go @@ -54,7 +54,7 @@ func (n *Node) Close(graceful bool) error { // Deprovision shuts down and removes all resources associated with the node. func (n *Node) Deprovision() { - n.Store.Close(false) + n.Store.Close(true) n.Service.Close() os.RemoveAll(n.Dir) } From b579e5c59fbf073fccfaafb5c790d2d125c34605 Mon Sep 17 00:00:00 2001 From: Philip O'Toole Date: Sat, 6 Feb 2021 19:18:23 -0500 Subject: [PATCH 3/3] Shut down Raft first --- store/store.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/store/store.go b/store/store.go index bb78bbde4..a6d675a3b 100644 --- a/store/store.go +++ b/store/store.go @@ -290,16 +290,16 @@ func (s *Store) Open(enableBootstrap bool) error { // Close closes the store. If wait is true, waits for a graceful shutdown. func (s *Store) Close(wait bool) error { - if err := s.db.Close(); err != nil { - return err - } f := s.raft.Shutdown() if wait { if e := f.(raft.Future); e.Error() != nil { return e.Error() } } - // Only shutdown Bolt when Raft is done with it. + // Only shutdown Bolt and SQLite when Raft is done. + if err := s.db.Close(); err != nil { + return err + } if err := s.boltStore.Close(); err != nil { return err }