From 4c06e26d8593f5d68cfe6a8981bcb1165b682dbd Mon Sep 17 00:00:00 2001 From: Andrey Smirnov Date: Thu, 23 Feb 2017 01:01:17 +0300 Subject: [PATCH] Throttle compaction on temporary DB --- database/leveldb.go | 18 ++++++++++++++---- deb/contents.go | 2 +- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/database/leveldb.go b/database/leveldb.go index ab90e1ff..8b065725 100644 --- a/database/leveldb.go +++ b/database/leveldb.go @@ -51,18 +51,24 @@ var ( _ Storage = &levelDB{} ) -func internalOpen(path string) (*leveldb.DB, error) { +func internalOpen(path string, throttleCompaction bool) (*leveldb.DB, error) { o := &opt.Options{ Filter: filter.NewBloomFilter(10), OpenFilesCacheCapacity: 256, } + if throttleCompaction { + o.CompactionL0Trigger = 32 + o.WriteL0PauseTrigger = 96 + o.WriteL0SlowdownTrigger = 64 + } + return leveldb.OpenFile(path, o) } // OpenDB opens (creates) LevelDB database func OpenDB(path string) (Storage, error) { - db, err := internalOpen(path) + db, err := internalOpen(path, false) if err != nil { return nil, err } @@ -94,7 +100,11 @@ func (l *levelDB) CreateTemporary() (Storage, error) { return nil, err } - return OpenDB(tempdir) + db, err := internalOpen(tempdir, true) + if err != nil { + return nil, err + } + return &levelDB{db: db, path: tempdir}, nil } // Get key value from database @@ -212,7 +222,7 @@ func (l *levelDB) ReOpen() error { } var err error - l.db, err = internalOpen(l.path) + l.db, err = internalOpen(l.path, false) return err } diff --git a/deb/contents.go b/deb/contents.go index 30dc3e0e..e3dc8eb7 100644 --- a/deb/contents.go +++ b/deb/contents.go @@ -50,7 +50,7 @@ func (index *ContentsIndex) Empty() bool { // WriteTo dumps sorted mapping of files to qualified package names func (index *ContentsIndex) WriteTo(w io.Writer) (int64, error) { // For performance reasons push method wrote on key per path and package - // in this method we now need to merge all pkg with have the same path + // in this method we now need to merge all packages which have the same path // and write it to contents index file var n int64