Skip to content

Commit 6ce21a4

Browse files
rjl493456442karalabe
authored andcommitted
vendor, ethdb: print warning log if leveldb is performing compaction (#16766)
* vendor: update leveldb package * ethdb: print warning log if db is performing compaction * ethdb: update annotation and log
1 parent 9af364e commit 6ce21a4

File tree

4 files changed

+90
-5
lines changed

4 files changed

+90
-5
lines changed

ethdb/database.go

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,7 @@ func (db *LDBDatabase) meter(refresh time.Duration) {
207207
delaystats [2]int64
208208
lastWriteDelay time.Time
209209
lastWriteDelayN time.Time
210+
lastWritePaused time.Time
210211
)
211212

212213
// Iterate ad infinitum and collect the stats
@@ -267,8 +268,9 @@ func (db *LDBDatabase) meter(refresh time.Duration) {
267268
delayN int64
268269
delayDuration string
269270
duration time.Duration
271+
paused bool
270272
)
271-
if n, err := fmt.Sscanf(writedelay, "DelayN:%d Delay:%s", &delayN, &delayDuration); n != 2 || err != nil {
273+
if n, err := fmt.Sscanf(writedelay, "DelayN:%d Delay:%s Paused:%t", &delayN, &delayDuration, &paused); n != 3 || err != nil {
272274
db.log.Error("Write delay statistic not found")
273275
return
274276
}
@@ -301,6 +303,14 @@ func (db *LDBDatabase) meter(refresh time.Duration) {
301303
lastWriteDelay = time.Now()
302304
}
303305
}
306+
// If a warning that db is performing compaction has been displayed, any subsequent
307+
// warnings will be withheld for one minute not to overwhelm the user.
308+
if paused && delayN-delaystats[0] == 0 && duration.Nanoseconds()-delaystats[1] == 0 &&
309+
time.Now().After(lastWritePaused.Add(writeDelayWarningThrottler)) {
310+
db.log.Warn("Database compacting, degraded performance")
311+
lastWritePaused = time.Now()
312+
}
313+
304314
delaystats[0], delaystats[1] = delayN, duration.Nanoseconds()
305315

306316
// Retrieve the database iostats.

vendor/github.com/syndtr/goleveldb/leveldb/db.go

Lines changed: 72 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/syndtr/goleveldb/leveldb/db_write.go

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/vendor.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -418,10 +418,10 @@
418418
"revisionTime": "2017-07-05T02:17:15Z"
419419
},
420420
{
421-
"checksumSHA1": "k13cCuMJO7+KhR8ZXx5oUqDKGQA=",
421+
"checksumSHA1": "TJV50D0q8E3vtc90ibC+qOYdjrw=",
422422
"path": "github.com/syndtr/goleveldb/leveldb",
423-
"revision": "ae970a0732be3a1f5311da86118d37b9f4bd2a5a",
424-
"revisionTime": "2018-05-02T07:23:49Z"
423+
"revision": "59047f74db0d042c8d8dd8e30bb030bc774a7d7a",
424+
"revisionTime": "2018-05-21T04:45:49Z"
425425
},
426426
{
427427
"checksumSHA1": "EKIow7XkgNdWvR/982ffIZxKG8Y=",

0 commit comments

Comments
 (0)