Przeglądaj źródła

Compact database on startup (ref #2400)

Jakob Borg 10 lat temu
rodzic
commit
fa4b4dece1
2 zmienionych plików z 11 dodań i 0 usunięć
  1. 7 0
      cmd/syncthing/main.go
  2. 4 0
      lib/db/leveldb_dbinstance.go

+ 7 - 0
cmd/syncthing/main.go

@@ -639,6 +639,13 @@ func syncthingMain() {
 		}
 	}
 
+	// Pack and optimize the database
+	if err := ldb.Compact(); err != nil {
+		// I don't think this is fatal, but who knows. If it is, we'll surely
+		// get an error when trying to write to the db later.
+		l.Infoln("Compacting database:", err)
+	}
+
 	m := model.NewModel(cfg, myID, myName, "syncthing", Version, ldb, protectedFiles)
 	cfg.Subscribe(m)
 

+ 4 - 0
lib/db/leveldb_dbinstance.go

@@ -65,6 +65,10 @@ func newDBInstance(db *leveldb.DB) *Instance {
 	}
 }
 
+func (db *Instance) Compact() error {
+	return db.CompactRange(util.Range{})
+}
+
 func (db *Instance) genericReplace(folder, device []byte, fs []protocol.FileInfo, localSize, globalSize *sizeTracker, deleteFn deletionHandler) int64 {
 	sort.Sort(fileList(fs)) // sort list on name, same as in the database