Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ethdb: print warning log if leveldb is performing compaction #16766

Merged
merged 3 commits into from
May 22, 2018

Conversation

rjl493456442
Copy link
Member

I'm running an experiment to import 2500000 blocks from mainnet to check whether the log will be printed correctly.

@rjl493456442
Copy link
Member Author

26952 INFO [05-22|04:49:20] Imported new state entries               count=1024 elapsed=4.405ms    processed=12875492 pending=14570 retry=0   duplicate=2530 unexpected=8339
26953 WARN [05-22|04:49:23] Database is performing the compaction, all write operations will be paused database=/home/hyperchain/.ethereum/geth/chaindata
26954 WARN [05-22|04:50:23] Database is performing the compaction, all write operations will be paused database=/home/hyperchain/.ethereum/geth/chaindata
26955 WARN [05-22|04:51:23] Database is performing the compaction, all write operations will be paused database=/home/hyperchain/.ethereum/geth/chaindata
26956 WARN [05-22|04:52:23] Database is performing the compaction, all write operations will be paused database=/home/hyperchain/.ethereum/geth/chaindata
26957 WARN [05-22|04:53:23] Database is performing the compaction, all write operations will be paused database=/home/hyperchain/.ethereum/geth/chaindata
26958 WARN [05-22|04:54:23] Database is performing the compaction, all write operations will be paused database=/home/hyperchain/.ethereum/geth/chaindata
26959 WARN [05-22|04:55:23] Database is performing the compaction, all write operations will be paused database=/home/hyperchain/.ethereum/geth/chaindata
26960 WARN [05-22|04:56:23] Database is performing the compaction, all write operations will be paused database=/home/hyperchain/.ethereum/geth/chaindata
26961 WARN [05-22|04:57:23] Database is performing the compaction, all write operations will be paused database=/home/hyperchain/.ethereum/geth/chaindata
26962 WARN [05-22|04:58:23] Database is performing the compaction, all write operations will be paused database=/home/hyperchain/.ethereum/geth/chaindata
26963 INFO [05-22|04:58:52] Imported new state entries               count=880  elapsed=9m31.865s  processed=12876372 pending=13748 retry=78  duplicate=2530 unexpected=8339
26964 INFO [05-22|04:58:52] Imported new state entries               count=1094 elapsed=5.390ms    processed=12877466 pending=15228 retry=0   duplicate=2530 unexpected=8339
26965 INFO [05-22|04:58:52] Imported new state entries               count=886  elapsed=1.782ms    processed=12878352 pending=15100 retry=77  duplicate=2530 unexpected=8339

The warning logs look like this.

@rjl493456442 rjl493456442 requested review from karalabe and holiman and removed request for karalabe May 22, 2018 02:03
Copy link
Member

@karalabe karalabe left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor tweaks please.

@@ -301,6 +303,15 @@ func (db *LDBDatabase) meter(refresh time.Duration) {
lastWriteDelay = time.Now()
}
}
// If leveldb's compaction has been going on for a long time, print a warning log here.
// If a warning that db is performing compaction has been displayed,
// any subsequent warnings will be withhold for 1 minute to don't overwhelm the user.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor grammar:

// If a warning that db is performing compaction has been displayed, any subsequent
// warnings will be withheld for one minute not to overwhelm the user.

// any subsequent warnings will be withhold for 1 minute to don't overwhelm the user.
if paused && delayN-delaystats[0] == 0 && duration.Nanoseconds()-delaystats[1] == 0 &&
time.Now().After(lastWritePaused.Add(writeDelayWarningThrottler)) {
db.log.Warn("Database is performing the compaction, all write operations will be paused")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd go with a shorter warning so it looks tidy among the other logs.

db.log.Warn("Database compacting, degraded performance")

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@eqzip Hey, when geth receives a CTRL+C signal, it will try to exit.
Unfortunately, your local node is performance a chain insert operation, while the db write operation is stuck by level db compaction. So geth will wait the chain insert operation and then exit gratefully.

So that is the reason why your geth node still prints warning log.

But I got to think that if I use Ctrl-c to exit then it should at least stop printing , it need a signal or context implementation when loop blocked .

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it may like sth in loop:
// to make a signal listen
select {
case <- printSignal:
log.Warn("xxx")
case <- quitSignal:
return
}

@karalabe karalabe added this to the 1.8.9 milestone May 22, 2018
@rjl493456442
Copy link
Member Author

@karalabe Updated.

Copy link
Member

@karalabe karalabe left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@karalabe karalabe merged commit 6ce21a4 into ethereum:master May 22, 2018
gbalint referenced this pull request in ethersphere/swarm May 23, 2018
…(#16766)

* vendor: update leveldb package

* ethdb: print warning log if db is performing compaction

* ethdb: update annotation and log
gbalint referenced this pull request in ethersphere/swarm May 24, 2018
* core/types: avoid duplicating transactions on changing signer (#16435)

* core/state: cache missing storage entries (#16584)

* cmd/utils: point users to --syncmode under DEPRECATED (#16572)

Indicate that --light and --fast options are replaced by --syncmode

* trie: remove unused `buf` parameter (#16583)

* core, eth: fix tracer dirty finalization

* travis.yml: remove obsolete brew-cask install

* whisper: Golint fixes in whisper packages (#16637)

* vendor: fix leveldb crash when bigger than 1 TiB

* core: ensure local transactions aren't discarded as underpriced

This fixes an issue where local transactions are discarded as
underpriced when the pool and queue are full.

* evm/main: use blocknumber from genesis

* accounts: golint updates for this or self warning (#16627)

* tests: golint fixes for tests directory (#16640)

* trie: golint iterator fixes (#16639)

* internal: golint updates for this or self warning (#16634)

* core: golint updates for this or self warning (#16633)

* build: Add ldflags -s -w when building aar

Smaller size on mobile is always good.
Might also solve our maven central upload problem

* cmd/clef: documentation about setup (#16568)

clef: documentation about setup

* params: release geth 1.8.7

* VERSION, params: begin v1.8.8 release cycle

* log: changed if-else blocks to conform with golint (#16661)

* p2p: changed if-else blocks to conform with golint (#16660)

* les: changed if-else blocks to conform with golint (#16658)

* accounts: changed if-else blocks to conform with golint (#16654)

* rpc: golint error with context as last parameter (#16657)

* rpc/*: golint error with context as last parameter

* Update json.go

* metrics: golint updates for this or self warning (#16635)

* metrics/*: golint updates for this or self warning

* metrics/*: golint updates for this or self warning, updated pr from feedback

* consensus/ethash: fixed typo (#16665)

* event: golint updates for this or self warning (#16631)

* event/*: golint updates for this or self warning

* event/*: golint updates for this or self warning, pr updated per feedback

* eth: golint updates for this or self warning (#16632)

* eth/*:golint updates for this or self warning

* eth/*: golint updates for this or self warning, pr updated per feedback

* signer: fix golint errors (#16653)

* signer/*: golint fixes

Specifically naming and comment formatting for documentation

* signer/*: fixed naming error crashing build

* signer/*: corrected error

* signer/core: fix tiny error whitespace

* signer/rules: fix test refactor

* whisper/mailserver: pass init error to the caller (#16671)

* whisper/mailserver: pass init error to the caller

* whisper/mailserver: add returns to fmt.Errorf

* whisper/mailserver: check err in mailserver init test

* common: changed if-else blocks to conform with golint (#16656)

* mobile: add GetStatus Method for Receipt (#16598)

* core/rawdb: separate raw database access to own package (#16666)

* rlp: fix some golint warnings (#16659)

* p2p: fix some golint warnings (#16577)

* eth/filters: derive FilterCriteria from ethereum.FilterQuery (#16629)

* p2p/simulations/adapters: fix websocket log line parsing in exec adapter (#16667)

* build: specify the key to use when invoking gpg:sign-and-deploy-file (#16696)

* crypto: fix golint warnings (#16710)

* p2p: don't discard reason set by Disconnect (#16559)

Peer.run was discarding the reason for disconnection sent to the disc
channel by Disconnect.

* cmd: various golint fixes (#16700)

* cmd: various golint fixes

* cmd: update to pr change request

* cmd: update to pr change request

* eth: golint fixes to variable names (#16711)

* eth/filter: check nil pointer when unsubscribe (#16682)

* eth/filter: check nil pointer when unsubscribe

* eth/filters, accounts, rpc: abort system if subscribe failed

* eth/filter: add crit log before exit

* eth/filter, event: minor fixes

* whisper/shhclient: update call to shh_generateSymKeyFromPassword to pass a string (#16668)

* all: get rid of error when creating memory database (#16716)

* all: get rid of error when create mdb

* core: clean up variables definition

* all: inline mdb definition

* event: document select case slice use and add edge case test (#16680)

Feed keeps active subscription channels in a slice called 'f.sendCases'.
The Send method tracks the active cases in a local variable 'cases'
whose value is f.sendCases initially. 'cases' shrinks to a shorter
prefix of f.sendCases every time a send succeeds, moving the successful
case out of range of the active case list.

This can be confusing because the two slices share a backing array. Add
more comments to document what is going on. Also add a test for removing
a case that is in 'f.sentCases' but not 'cases'.

* travis: use Android NDK 16b (#16562)

* bmt: golint updates for this or self warning (#16628)

* bmt/*: golint updates for this or self warning

* Update bmt.go

* light: new CHT for mainnet and ropsten (#16736)

* params: release go-ethereum v1.8.8

* VERSION, params: start 1.8.9 release cycle

* accounts/abi: allow abi: tags when unpacking structs

Go code users can now tag event struct members with `abi:` to specify in what fields the event will be de-serialized.

See PR #16648 for details.

* travis: try to upgrade android builder to trusty

* p2p/enr: updates for discovery v4 compatibility (#16679)

This applies spec changes from ethereum/EIPs#1049 and adds support for
pluggable identity schemes.

Some care has been taken to make the "v4" scheme standalone. It uses
public APIs only and could be moved out of package enr at any time.

A couple of minor changes were needed to make identity schemes work:

- The sequence number is now updated in Set instead of when signing.
- Record is now copy-safe, i.e. calling Set on a shallow copy doesn't
  modify the record it was copied from.

* all: collate new transaction events together

* core, eth: minor txpool event cleanups

* travis, appveyor: bump Go release to 1.10.2

* core, consensus: fix some typos in comment code and output log

* eth: propagate blocks and transactions async

* trie: fixes to comply with golint (#16771)

* log: fixes for golint warnings (#16775)

* node: all golint warnings fixed (#16773)

* node: all golint warnings fixed

* node: rm per peter

* node: rm per peter

* 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

* core/types: convert status type from uint to uint64 (#16784)

* trie: support proof generation from the iterator

* core/vm: fix typo in instructions.go (#16788)

* core: use a wrapped map to remove contention in `TxPool.Get`. (#16670)

* core: use a wrapped `map` and `sync.RWMutex` for `TxPool.all` to remove contention in `TxPool.Get`.

* core: Remove redundant `txLookup.Find` and improve comments on txLookup methods.
firmianavan pushed a commit to firmianavan/go-ethereum that referenced this pull request May 30, 2018
…thereum#16766)

* vendor: update leveldb package

* ethdb: print warning log if db is performing compaction

* ethdb: update annotation and log
@eqzip
Copy link

eqzip commented Jun 8, 2018

Hi all I meet the similar problems in:
Starting peer-to-peer node instance=Geth/v1.8.10-stable/darwin-amd64/go1.10.2

The following is the error log:
ERROR[06-08|12:01:19] Bootstrap URL invalid enode=enode://0d73df66207a4f4c000b8b7b8c8fa8cbb55783a31273c481c15ffb16775032134db9d7857701bec2ad45e55d88f2ac4f070ebfe9bd19f4db3b1f2b9e2abf330@23.88.147.138:30303 err="invalid node ID (encoding/hex: odd length hex string)"
ERROR[06-08|12:01:19] Bootstrap URL invalid enode=enode://0d73df66207a4f4c000b8b7b8c8fa8cbb55783a31273c481c15ffb16775032134db9d7857701bec2ad45e55d88f2ac4f070ebfe9bd19f4db3b1f2b9e2abf330@23.88.147.138:30303 err="invalid node ID (encoding/hex: odd length hex string)"
INFO [06-08|12:01:19] Maximum peer count ETH=500 LES=0 total=500
INFO [06-08|12:01:21] Starting peer-to-peer node instance=Geth/v1.8.10-stable/darwin-amd64/go1.10.2
INFO [06-08|12:01:21] Allocated cache and file handles database=/Volumes/C/Ethereum/geth/chaindata cache=384 handles=128
INFO [06-08|12:02:09] Initialised chain configuration config="{ChainID: 1 Homestead: 1150000 DAO: 1920000 DAOSupport: true EIP150: 2463000 EIP155: 2675000 EIP158: 2675000 Byzantium: 4370000 Constantinople: Engine: ethash}"
INFO [06-08|12:02:09] Disk storage enabled for ethash caches dir=/Volumes/C/Ethereum/geth/ethash count=3
INFO [06-08|12:02:09] Disk storage enabled for ethash DAGs dir=/Users/apple/.ethash count=2
INFO [06-08|12:02:09] Initialising Ethereum protocol versions="[63 62]" network=1
INFO [06-08|12:02:18] Loaded most recent local header number=3838580 hash=b2c248…8ba877 td=329349854742663666261
INFO [06-08|12:02:18] Loaded most recent local full block number=0 hash=d4e567…cb8fa3 td=17179869184
INFO [06-08|12:02:18] Loaded most recent local fast block number=3807822 hash=7d37e2…3a9f9b td=310819402003838834057
INFO [06-08|12:02:18] Upgrading chain index type=bloombits percentage=93
INFO [06-08|12:02:18] Loaded local transaction journal transactions=0 dropped=0
INFO [06-08|12:02:18] Regenerated local transaction journal transactions=0 accounts=0
INFO [06-08|12:02:18] Starting P2P networking
INFO [06-08|12:02:48] Upgrading chain index type=bloombits percentage=94
INFO [06-08|12:02:54] UDP listener up self=enode://0cb318eb896990d48b5be002b3044929003973f3c101c2a0814d6f739976f5616184366c1ce46ec96d4b377119cce296a7c5baa06e278ab17ecddc4e97fc0ea3@[::]:30303
INFO [06-08|12:02:54] RLPx listener up self=enode://0cb318eb896990d48b5be002b3044929003973f3c101c2a0814d6f739976f5616184366c1ce46ec96d4b377119cce296a7c5baa06e278ab17ecddc4e97fc0ea3@[::]:30303
INFO [06-08|12:02:54] IPC endpoint opened url=/Users/apple/Library/Ethereum/geth.ipc
INFO [06-08|12:03:14] Upgrading chain index type=bloombits percentage=94
INFO [06-08|12:03:50] Upgrading chain index type=bloombits percentage=94
INFO [06-08|12:04:03] Upgrading chain index type=bloombits percentage=94
INFO [06-08|12:04:18] Upgrading chain index type=bloombits percentage=94
INFO [06-08|12:04:49] Upgrading chain index type=bloombits percentage=94
INFO [06-08|12:04:54] Block synchronisation started
INFO [06-08|12:05:09] Upgrading chain index type=bloombits percentage=94
INFO [06-08|12:05:10] Imported new block headers count=0 elapsed=27.820ms number=3808014 hash=2c288e…b61451 ignored=192
INFO [06-08|12:05:10] Imported new block headers count=0 elapsed=13.024ms number=3808206 hash=6dd8f3…964a24 ignored=192
INFO [06-08|12:05:10] Imported new block receipts count=0 elapsed=250.754ms number=3807824 hash=2bc662…8c1b6f size=0.00B ignored=2
INFO [06-08|12:05:10] Imported new block headers count=0 elapsed=105.468ms number=3810254 hash=a8ad37…6359e0 ignored=2048
INFO [06-08|12:05:11] Imported new block headers count=0 elapsed=110.230ms number=3812302 hash=957fd8…2d07ba ignored=2048
INFO [06-08|12:05:11] Imported new block headers count=0 elapsed=262.884ms number=3814350 hash=f46b87…c7614f ignored=2048
INFO [06-08|12:05:11] Imported new block headers count=0 elapsed=133.137ms number=3816398 hash=bc07d3…c17ce3 ignored=2048
INFO [06-08|12:05:14] Imported new block headers count=0 elapsed=63.476ms number=3817038 hash=3ea60a…4b5d9e ignored=640
INFO [06-08|12:05:17] Upgrading chain index type=bloombits percentage=95
INFO [06-08|12:05:18] Imported new block receipts count=0 elapsed=339.466ms number=3807951 hash=ea778d…bf55b4 size=0.00B ignored=127
INFO [06-08|12:05:18] Imported new block headers count=0 elapsed=334.547ms number=3819086 hash=6376cd…cbaf03 ignored=2048
INFO [06-08|12:05:18] Imported new block headers count=0 elapsed=169.844ms number=3821134 hash=3a97dc…a859d2 ignored=2048
INFO [06-08|12:05:21] Imported new block headers count=0 elapsed=350.386ms number=3823182 hash=42078f…0f27b7 ignored=2048
INFO [06-08|12:05:22] Imported new block headers count=0 elapsed=224.016ms number=3825230 hash=3dcc91…e749ea ignored=2048
INFO [06-08|12:05:27] Imported new block receipts count=0 elapsed=5.204s number=3808140 hash=917fd0…1e502e size=0.00B ignored=189
INFO [06-08|12:05:30] Imported new block receipts count=99 elapsed=3.012s number=3808284 hash=978e48…ffadd2 size=3.15mB ignored=45
INFO [06-08|12:05:33] Imported new block headers count=0 elapsed=204.608ms number=3827278 hash=6e8350…aa9cb9 ignored=2048
INFO [06-08|12:05:33] Upgrading chain index type=bloombits percentage=95
INFO [06-08|12:05:39] Imported new block headers count=0 elapsed=174.223ms number=3829326 hash=9d2fb6…ae80b8 ignored=2048
INFO [06-08|12:05:40] Imported new block headers count=0 elapsed=110.870ms number=3830862 hash=84318f…6135d9 ignored=1536
INFO [06-08|12:05:40] Imported new block headers count=0 elapsed=17.920ms number=3831246 hash=a2e279…2fc254 ignored=384
INFO [06-08|12:05:40] Imported new block headers count=0 elapsed=89.678ms number=3832398 hash=541662…3bcc41 ignored=1152
INFO [06-08|12:05:41] Imported new block receipts count=282 elapsed=8.630s number=3808566 hash=9bf6e3…8d1b2d size=6.00mB ignored=0
INFO [06-08|12:05:58] Imported new block headers count=0 elapsed=9.736ms number=3832590 hash=abe2fb…e1be1b ignored=192
INFO [06-08|12:06:05] Upgrading chain index type=bloombits percentage=96
INFO [06-08|12:06:05] Imported new block headers count=0 elapsed=121.711ms number=3833742 hash=321467…68eafe ignored=1152
INFO [06-08|12:06:05] Imported new block receipts count=265 elapsed=23.477s number=3808831 hash=78ff36…e8fdb9 size=7.47mB ignored=0
INFO [06-08|12:06:06] Imported new block receipts count=547 elapsed=1.599s number=3809378 hash=eb8c4f…efbad3 size=16.25mB ignored=0
INFO [06-08|12:06:08] Imported new block headers count=0 elapsed=26.464ms number=3834318 hash=bb7032…9330ee ignored=576
INFO [06-08|12:06:09] Imported new block receipts count=135 elapsed=1.862s number=3809513 hash=c911a4…c1bbce size=4.22mB ignored=0
INFO [06-08|12:06:09] Imported new block receipts count=139 elapsed=500.580ms number=3809652 hash=3b58af…24d032 size=4.24mB ignored=0
INFO [06-08|12:06:14] Imported new block headers count=0 elapsed=9.835ms number=3834510 hash=b71751…43086f ignored=192
INFO [06-08|12:06:14] Imported new block headers count=0 elapsed=10.273ms number=3834702 hash=eb0939…392709 ignored=192
INFO [06-08|12:06:15] Imported new block headers count=0 elapsed=41.590ms number=3835086 hash=3b27d9…a690df ignored=384
INFO [06-08|12:06:16] Imported new block headers count=0 elapsed=7.375ms number=3835278 hash=9baac5…16ad35 ignored=192
INFO [06-08|12:06:19] Imported new block headers count=0 elapsed=8.102ms number=3835470 hash=609c10…727f31 ignored=192
WARN [06-08|12:06:27] Stalling state sync, dropping peer peer=6d88fe32bb67a70a
INFO [06-08|12:06:32] Imported new block headers count=0 elapsed=37.668ms number=3836238 hash=945957…f33325 ignored=768
INFO [06-08|12:06:34] Imported new block headers count=0 elapsed=7.532ms number=3836430 hash=f12db2…a5f0e0 ignored=192
INFO [06-08|12:06:38] Imported new block headers count=0 elapsed=8.629ms number=3836622 hash=8d98b2…90747d ignored=192
INFO [06-08|12:06:38] Imported new block headers count=0 elapsed=7.519ms number=3836814 hash=e81f45…8cdc0a ignored=192
INFO [06-08|12:06:40] Imported new block headers count=0 elapsed=14.992ms number=3837198 hash=e7bdf2…c8df93 ignored=384
INFO [06-08|12:06:41] Imported new block headers count=0 elapsed=6.882ms number=3837390 hash=45c86d…af5684 ignored=192
INFO [06-08|12:06:43] Imported new block headers count=0 elapsed=9.606ms number=3837582 hash=707c53…439aff ignored=192
INFO [06-08|12:07:08] Upgrading chain index type=bloombits percentage=96
INFO [06-08|12:07:14] Imported new block headers count=345 elapsed=11.285s number=3838926 hash=1c7bb8…8a38bf ignored=999
INFO [06-08|12:07:14] Imported new block headers count=192 elapsed=86.790ms number=3839118 hash=514181…9b3bf1 ignored=0
INFO [06-08|12:07:31] Upgrading chain index type=bloombits percentage=96
INFO [06-08|12:07:55] Upgrading chain index type=bloombits percentage=96
INFO [06-08|12:07:56] Imported new block receipts count=1287 elapsed=1m24.664s number=3810939 hash=058040…c73af3 size=33.43mB ignored=0
INFO [06-08|12:08:45] Upgrading chain index type=bloombits percentage=96
INFO [06-08|12:08:52] Imported new block headers count=1536 elapsed=1m36.916s number=3840654 hash=a62be3…372c34 ignored=0
WARN [06-08|12:08:52] Rolled back headers count=2048 header=3840654->3838606 fast=3810939->3810939 block=0->0
WARN [06-08|12:08:52] Synchronisation failed, dropping peer peer=184ba64eabfe6d50 err="retrieved hash chain is invalid"
INFO [06-08|12:09:00] Upgrading chain index type=bloombits percentage=97
WARN [06-08|12:09:21] Synchronisation failed, retrying err="block download canceled (requested)"
INFO [06-08|12:09:21] Upgrading chain index type=bloombits percentage=97
INFO [06-08|12:09:35] Upgrading chain index type=bloombits percentage=97
INFO [06-08|12:09:47] Imported new block headers count=0 elapsed=7.996ms number=3811131 hash=73fdab…09fb49 ignored=192
INFO [06-08|12:09:47] Imported new block headers count=0 elapsed=8.079ms number=3811323 hash=ba8668…12cad6 ignored=192
INFO [06-08|12:09:48] Imported new block headers count=0 elapsed=9.031ms number=3811515 hash=225940…e9cce9 ignored=192
INFO [06-08|12:09:49] Imported new block headers count=0 elapsed=8.280ms number=3811707 hash=98f121…3e1ed8 ignored=192
INFO [06-08|12:09:53] Imported new block headers count=0 elapsed=8.973ms number=3811899 hash=455703…1846a0 ignored=192
INFO [06-08|12:09:53] Imported new block headers count=0 elapsed=9.833ms number=3812091 hash=3b652f…a7b802 ignored=192
INFO [06-08|12:09:53] Upgrading chain index type=bloombits percentage=98
INFO [06-08|12:09:55] Imported new block headers count=0 elapsed=7.941ms number=3812283 hash=131846…9e25c6 ignored=192
INFO [06-08|12:10:00] Imported new block headers count=0 elapsed=9.161ms number=3812475 hash=af39f5…59886d ignored=192
INFO [06-08|12:10:06] Upgrading chain index type=bloombits percentage=98
INFO [06-08|12:10:09] Imported new block headers count=0 elapsed=8.055ms number=3812667 hash=10bac2…e40793 ignored=192
INFO [06-08|12:10:17] Upgrading chain index type=bloombits percentage=98
INFO [06-08|12:10:21] Imported new block headers count=0 elapsed=8.375ms number=3812859 hash=d2e877…97fcc3 ignored=192
INFO [06-08|12:10:28] Upgrading chain index type=bloombits percentage=99
INFO [06-08|12:10:38] Upgrading chain index type=bloombits percentage=99
INFO [06-08|12:10:41] Finished upgrading chain index type=bloombits
WARN [06-08|12:10:45] Stalling state sync, dropping peer peer=6d88fe32bb67a70a
INFO [06-08|12:11:59] Imported new block receipts count=1410 elapsed=11.949s number=3812349 hash=8a312f…09088a size=29.50mB ignored=0
INFO [06-08|12:12:16] Imported new block headers count=0 elapsed=117.339ms number=3814907 hash=9e1412…7fc215 ignored=2048
INFO [06-08|12:12:16] Imported new block headers count=0 elapsed=130.621ms number=3816955 hash=87216b…326bfc ignored=2048
INFO [06-08|12:12:17] Imported new block headers count=0 elapsed=154.457ms number=3819003 hash=9e4487…e8c21f ignored=2048
INFO [06-08|12:12:17] Imported new block headers count=0 elapsed=255.573ms number=3821051 hash=01330b…075b8c ignored=2048
INFO [06-08|12:12:17] Imported new block headers count=0 elapsed=152.408ms number=3823099 hash=bc8065…566baf ignored=2048
INFO [06-08|12:12:18] Imported new block headers count=0 elapsed=120.264ms number=3825147 hash=b63de8…7bcf9f ignored=2048
INFO [06-08|12:12:18] Imported new block headers count=0 elapsed=125.502ms number=3827195 hash=8c9aa1…4d2ba1 ignored=2048
INFO [06-08|12:12:18] Imported new block headers count=0 elapsed=123.541ms number=3829243 hash=a6296b…a624d9 ignored=2048
INFO [06-08|12:12:18] Imported new block headers count=0 elapsed=128.975ms number=3831291 hash=d2bb07…4e8bb4 ignored=2048
INFO [06-08|12:12:18] Imported new block headers count=0 elapsed=154.749ms number=3833339 hash=78f003…41395d ignored=2048
INFO [06-08|12:12:19] Imported new block headers count=0 elapsed=168.280ms number=3835387 hash=0221c9…ae0db4 ignored=2048
INFO [06-08|12:12:19] Imported new block headers count=0 elapsed=6.098ms number=3835515 hash=ef1a29…23c0cc ignored=128
INFO [06-08|12:12:21] Imported new block headers count=0 elapsed=22.069ms number=3835899 hash=3f8ae6…7f968f ignored=384
INFO [06-08|12:12:21] Imported new block headers count=0 elapsed=26.345ms number=3836091 hash=ed9ab8…7b3ee5 ignored=192
INFO [06-08|12:12:21] Imported new block headers count=0 elapsed=12.652ms number=3836283 hash=6aa51e…dd701e ignored=192
INFO [06-08|12:12:25] Imported new block headers count=0 elapsed=7.777ms number=3836475 hash=645cb7…149b72 ignored=192
INFO [06-08|12:12:27] Imported new block headers count=0 elapsed=24.969ms number=3837051 hash=f2ab51…43fecc ignored=576
WARN [06-08|12:12:28] Stalling state sync, dropping peer peer=6d88fe32bb67a70a
INFO [06-08|12:13:03] Imported new block headers count=0 elapsed=44.248ms number=3838011 hash=91ede8…7ba1f7 ignored=960
INFO [06-08|12:13:07] Imported new block headers count=0 elapsed=247.621ms number=3840059 hash=f291ed…3c37ab ignored=2048
INFO [06-08|12:13:34] Imported new block receipts count=510 elapsed=1m34.950s number=3812859 hash=d2e877…97fcc3 size=13.13mB ignored=0
INFO [06-08|12:13:40] Imported new block headers count=1453 elapsed=32.889s number=3842107 hash=aca51f…ea0e8f ignored=595
WARN [06-08|12:14:05] Stalling state sync, dropping peer peer=6d88fe32bb67a70a
INFO [06-08|12:14:08] Imported new block headers count=2048 elapsed=28.313s number=3844155 hash=bb658a…35d00e ignored=0
WARN [06-08|12:14:13] Stalling state sync, dropping peer peer=975bb11cc74a0807
INFO [06-08|12:14:21] Imported new block headers count=2048 elapsed=12.731s number=3846203 hash=82f390…606c66 ignored=0
INFO [06-08|12:14:36] Imported new block headers count=2048 elapsed=14.815s number=3848251 hash=c609e2…561de9 ignored=0
INFO [06-08|12:15:11] Imported new block headers count=2048 elapsed=34.856s number=3850299 hash=9b98ee…89a93b ignored=0
INFO [06-08|12:15:24] Imported new block receipts count=2048 elapsed=1m49.728s number=3814907 hash=9e1412…7fc215 size=48.80mB ignored=0
INFO [06-08|12:15:24] Imported new block headers count=2048 elapsed=12.627s number=3852347 hash=c94d0c…c24ffd ignored=0
INFO [06-08|12:15:25] Imported new block headers count=2048 elapsed=1.031s number=3854395 hash=dd9bf4…a38771 ignored=0
INFO [06-08|12:15:41] Imported new block receipts count=2048 elapsed=16.585s number=3816955 hash=87216b…326bfc size=44.62mB ignored=0
INFO [06-08|12:15:44] Imported new block receipts count=716 elapsed=3.130s number=3817671 hash=3fd320…5d4230 size=13.95mB ignored=0
INFO [06-08|12:15:46] Imported new block headers count=2048 elapsed=1.767s number=3856443 hash=3e9ec7…d18d7f ignored=0
INFO [06-08|12:17:35] Imported new block headers count=2048 elapsed=1m26.785s number=3858491 hash=fe2aa6…661b5b ignored=0
INFO [06-08|12:18:24] Imported new block receipts count=2048 elapsed=2m24.782s number=3819719 hash=16909a…c3eac8 size=50.19mB ignored=0
WARN [06-08|12:18:24] Stalling state sync, dropping peer peer=6d88fe32bb67a70a
INFO [06-08|12:18:43] Imported new block headers count=1600 elapsed=4.390s number=3860091 hash=355b7e…be9c75 ignored=0
INFO [06-08|12:18:47] Imported new block receipts count=2048 elapsed=23.003s number=3821767 hash=8fc511…ddd131 size=48.34mB ignored=0
INFO [06-08|12:19:13] Imported new block receipts count=956 elapsed=26.145s number=3822723 hash=7f8d13…ec1f7e size=22.51mB ignored=0
INFO [06-08|12:19:14] Imported new block receipts count=201 elapsed=823.202ms number=3822924 hash=b5d545…bdf169 size=3.70mB ignored=0
INFO [06-08|12:19:25] Imported new block headers count=192 elapsed=203.395ms number=3860283 hash=206053…336195 ignored=0
INFO [06-08|12:20:17] Imported new block headers count=2048 elapsed=38.750s number=3862331 hash=5acd15…e6246b ignored=0
INFO [06-08|12:20:43] Imported new block headers count=2048 elapsed=26.388s number=3864379 hash=69ecf9…7338a3 ignored=0
INFO [06-08|12:21:28] Imported new block receipts count=2048 elapsed=1m55.632s number=3824972 hash=bab253…35b377 size=51.55mB ignored=0
INFO [06-08|12:22:07] Imported new state entries count=592 elapsed=9.922s processed=2553397 pending=914 retry=0 duplicate=0 unexpected=0
INFO [06-08|12:22:16] Imported new block headers count=2048 elapsed=25.432s number=3866427 hash=0eb6a7…84654e ignored=0
INFO [06-08|12:22:28] Imported new block receipts count=2048 elapsed=59.655s number=3827020 hash=1a4d52…adc247 size=48.67mB ignored=0
INFO [06-08|12:22:51] Imported new block receipts count=2048 elapsed=22.455s number=3829068 hash=ae2093…2015e0 size=53.43mB ignored=0
INFO [06-08|12:22:59] Imported new block headers count=2048 elapsed=6.465s number=3868475 hash=7700c1…98b8fb ignored=0
INFO [06-08|12:23:30] Imported new block receipts count=1407 elapsed=38.861s number=3830475 hash=2c59ba…1ef62a size=36.00mB ignored=0
INFO [06-08|12:24:11] Generating ethash verification cache epoch=130 percentage=0 elapsed=21.071s
INFO [06-08|12:24:15] Generating ethash verification cache epoch=130 percentage=1 elapsed=25.027s
INFO [06-08|12:24:19] Generating ethash verification cache epoch=130 percentage=6 elapsed=29.475s
INFO [06-08|12:24:25] Generating ethash verification cache epoch=130 percentage=7 elapsed=34.962s
INFO [06-08|12:24:42] Generating ethash verification cache epoch=130 percentage=16 elapsed=51.996s
INFO [06-08|12:24:44] Imported new block receipts count=1718 elapsed=1m14.827s number=3832193 hash=1b17dd…a57603 size=43.84mB ignored=0
INFO [06-08|12:24:45] Generating ethash verification cache epoch=130 percentage=28 elapsed=55.023s
INFO [06-08|12:24:48] Generating ethash verification cache epoch=130 percentage=66 elapsed=58.031s
INFO [06-08|12:24:49] Generated ethash verification cache epoch=130 elapsed=59.384s
INFO [06-08|12:24:58] Imported new block headers count=2048 elapsed=1m11.000s number=3870523 hash=9074a4…12f9a1 ignored=0
INFO [06-08|12:25:03] Imported new block headers count=2048 elapsed=4.728s number=3872571 hash=30c73b…8cf0e9 ignored=0
INFO [06-08|12:25:19] Imported new block receipts count=1464 elapsed=34.183s number=3833657 hash=d25600…46c55f size=39.23mB ignored=0
INFO [06-08|12:25:54] Imported new block headers count=2048 elapsed=29.020s number=3874619 hash=7227ab…d85b97 ignored=0
INFO [06-08|12:26:21] Imported new block receipts count=2048 elapsed=1m2.422s number=3835705 hash=cc0b56…de5e7f size=52.31mB ignored=0
INFO [06-08|12:26:47] Etherbase automatically configured address=0xC21870F72afED8f960dc2C052Ac7C78f4e0e9FbD
INFO [06-08|12:27:03] Imported new block receipts count=2048 elapsed=41.073s number=3837753 hash=732fc6…c85ca8 size=54.97mB ignored=0
INFO [06-08|12:27:48] Imported new state entries count=779 elapsed=4.931s processed=2554176 pending=1665 retry=15 duplicate=0 unexpected=0
INFO [06-08|12:27:55] Imported new block receipts count=2048 elapsed=51.956s number=3839801 hash=b79976…d243f2 size=52.05mB ignored=0
INFO [06-08|12:29:15] Imported new block receipts count=2048 elapsed=1m19.624s number=3841849 hash=be2e06…016926 size=48.08mB ignored=0
INFO [06-08|12:29:23] Imported new block headers count=2048 elapsed=2m42.578s number=3876667 hash=7d38e5…c0bd47 ignored=0
INFO [06-08|12:30:58] Imported new state entries count=917 elapsed=384.745ms processed=2555093 pending=1755 retry=0 duplicate=0 unexpected=0
INFO [06-08|12:31:03] Imported new block receipts count=2048 elapsed=1m48.307s number=3843897 hash=5bafeb…0db696 size=50.42mB ignored=0
INFO [06-08|12:31:28] Imported new block headers count=2048 elapsed=2m5.557s number=3878715 hash=57f73f…87b6b8 ignored=0
INFO [06-08|12:32:07] Imported new block receipts count=2048 elapsed=1m3.321s number=3845945 hash=b61c9e…8cbf3c size=60.38mB ignored=0
INFO [06-08|12:32:48] Imported new state entries count=1215 elapsed=61.185ms processed=2556308 pending=1716 retry=2 duplicate=0 unexpected=0
INFO [06-08|12:32:59] Imported new block receipts count=1543 elapsed=51.874s number=3847488 hash=189c80…fc2aef size=44.10mB ignored=0
INFO [06-08|12:33:17] Imported new block receipts count=2048 elapsed=18.132s number=3849536 hash=90c54a…af4849 size=50.11mB ignored=0
INFO [06-08|12:33:27] Imported new block headers count=2048 elapsed=1m58.601s number=3880763 hash=ef3bc7…505824 ignored=0
INFO [06-08|12:33:30] Imported new block receipts count=1319 elapsed=13.157s number=3850855 hash=be397a…7fb1e8 size=29.01mB ignored=0
INFO [06-08|12:33:35] Imported new block receipts count=130 elapsed=2.487s number=3850985 hash=41a58a…74ed9e size=3.67mB ignored=0
INFO [06-08|12:34:35] Imported new block receipts count=153 elapsed=59.931s number=3851138 hash=7632d9…34699d size=3.91mB ignored=0
INFO [06-08|12:34:56] Imported new state entries count=1116 elapsed=31.370ms processed=2557424 pending=1800 retry=16 duplicate=0 unexpected=0
WARN [06-08|12:35:01] Database compacting, degraded performance database=/Volumes/C/Ethereum/geth/chaindata
WARN [06-08|12:36:01] Database compacting, degraded performance database=/Volumes/C/Ethereum/geth/chaindata
WARN [06-08|12:37:01] Database compacting, degraded performance database=/Volumes/C/Ethereum/geth/chaindata
WARN [06-08|12:38:01] Database compacting, degraded performance database=/Volumes/C/Ethereum/geth/chaindata
WARN [06-08|12:39:01] Database compacting, degraded performance database=/Volumes/C/Ethereum/geth/chaindata
WARN [06-08|12:40:01] Database compacting, degraded performance database=/Volumes/C/Ethereum/geth/chaindata
WARN [06-08|12:41:01] Database compacting, degraded performance database=/Volumes/C/Ethereum/geth/chaindata
^CINFO [06-08|12:41:19] Got interrupt, shutting down...
INFO [06-08|12:41:19] IPC endpoint closed endpoint=/Users/apple/Library/Ethereum/geth.ipc
WARN [06-08|12:42:01] Database compacting, degraded performance database=/Volumes/C/Ethereum/geth/chaindata
WARN [06-08|12:43:01] Database compacting, degraded performance database=/Volumes/C/Ethereum/geth/chaindata
WARN [06-08|12:44:01] Database compacting, degraded performance database=/Volumes/C/Ethereum/geth/chaindata
WARN [06-08|12:45:02] Database compacting, degraded performance database=/Volumes/C/Ethereum/geth/chaindata

even I use control+c to interrupt the geth process but the "Database compacting, degraded performance " continuous prompt. What's wrong with geth? Could you pls fix this issue. Many thanks.

@rjl493456442
Copy link
Member Author

@eqzip Hey, when geth receives a CTRL+C signal, it will try to exit.
Unfortunately, your local node is performance a chain insert operation, while the db write operation is stuck by level db compaction. So geth will wait the chain insert operation and then exit gratefully.

So that is the reason why your geth node still prints warning log.

hackmod pushed a commit to OpenCommunityCoin/go-esn that referenced this pull request Jul 9, 2018
…thereum#16766)

* vendor: update leveldb package

* ethdb: print warning log if db is performing compaction

* ethdb: update annotation and log
firmianavan pushed a commit to firmianavan/go-ethereum that referenced this pull request Aug 28, 2018
…thereum#16766)

* vendor: update leveldb package

* ethdb: print warning log if db is performing compaction

* ethdb: update annotation and log
TuitionCoin added a commit to FinTechToken/go-ethereum that referenced this pull request Jun 16, 2019
* build: add -e and -X flags to get more information on ethereum#16433 (ethereum#16443)

* core: remove stray account creations in state transition (ethereum#16470)

The 'from' and 'to' methods on StateTransitions are reader methods and
shouldn't have inadvertent side effects on state.

It is safe to remove the check in 'from' because account existence is
implicitly checked by the nonce and balance checks. If the account has
non-zero balance or nonce, it must exist. Even if the sender account has
nonce zero at the start of the state transition or no balance, the nonce
is incremented before execution and the account will be created at that
time.

It is safe to remove the check in 'to' because the EVM creates the
account if necessary.

Fixes ethereum#15119

* travis, appveyor: bump to Go 1.10.1

* travis.yml: add TEST_PACKAGES to speed up swarm testing (ethereum#16456)

This commit is meant to allow ecosystem projects such as ethersphere
to minimize CI build times by specifying an environment variable with
the packages to run tests on.

If the environment variable isn't defined the build script will test
all packages so this shouldn't affect the main go-ethereum repository.

* les: add ps.lock.Unlock() before return (ethereum#16360)

* core/state: fix bug in copy of copy State

* core/state: fix ripemd-cornercase in Copy

* core: txpool stable underprice drop order, perf fixes

* miner: remove contention on currentMu for pending data retrievals (ethereum#16497)

* ethdb: add leveldb write delay statistic (ethereum#16499)

* eth/downloader: wait for all fetcher goroutines to exit before terminating (ethereum#16509)

* cmd/clef, signer: initial poc of the standalone signer (ethereum#16154)

* signer: introduce external signer command

* cmd/signer, rpc: Implement new signer. Add info about remote user to Context

* signer: refactored request/response, made use of urfave.cli

* cmd/signer: Use common flags

* cmd/signer: methods to validate calldata against abi

* cmd/signer: work on abi parser

* signer: add mutex around UI

* cmd/signer: add json 4byte directory, remove passwords from api

* cmd/signer: minor changes

* cmd/signer: Use ErrRequestDenied, enable lightkdf

* cmd/signer: implement tests

* cmd/signer: made possible for UI to modify tx parameters

* cmd/signer: refactors, removed channels in ui comms, added UI-api via stdin/out

* cmd/signer: Made lowercase json-definitions, added UI-signer test functionality

* cmd/signer: update documentation

* cmd/signer: fix bugs, improve abi detection, abi argument display

* cmd/signer: minor change in json format

* cmd/signer: rework json communication

* cmd/signer: implement mixcase addresses in API, fix json id bug

* cmd/signer: rename fromaccount, update pythonpoc with new json encoding format

* cmd/signer: make use of new abi interface

* signer: documentation

* signer/main: remove redundant  option

* signer: implement audit logging

* signer: create package 'signer', minor changes

* common: add 0x-prefix to mixcaseaddress in json marshalling + validation

* signer, rules, storage: implement rules + ephemeral storage for signer rules

* signer: implement OnApprovedTx, change signing response (API BREAKAGE)

* signer: refactoring + documentation

* signer/rules: implement dispatching to next handler

* signer: docs

* signer/rules: hide json-conversion from users, ensure context is cleaned

* signer: docs

* signer: implement validation rules, change signature of call_info

* signer: fix log flaw with string pointer

* signer: implement custom 4byte databsae that saves submitted signatures

* signer/storage: implement aes-gcm-backed credential storage

* accounts: implement json unmarshalling of url

* signer: fix listresponse, fix gas->uint64

* node: make http/ipc start methods public

* signer: add ipc capability+review concerns

* accounts: correct docstring

* signer: address review concerns

* rpc: go fmt -s

* signer: review concerns+ baptize Clef

* signer,node: move Start-functions to separate file

* signer: formatting

* light: new CHTs (ethereum#16515)

* params: release Geth v1.8.4

* VERSION, params: begin v1.8.5 release cycle

* build: enable goimports and varcheck linters (ethereum#16446)

* core/asm: remove unused condition (ethereum#16487)

* cmd/utils: fix help template issue for subcommands (ethereum#16351)

* rpc: clean up IPC handler (ethereum#16524)

This avoids logging accept errors on shutdown and removes
a bit of duplication. It also fixes some goimports lint warnings.

* core/asm: accept uppercase instructions (ethereum#16531)

* all: fix various typos (ethereum#16533)

* fix typo

* fix typo

* fix typo

* rpc: handle HTTP response error codes (ethereum#16500)

* whisper/whisperv6: post returns the hash of sent message (ethereum#16495)

* ethclient: add DialContext and Close (ethereum#16318)

DialContext allows users to pass a Context object for cancellation.
Close closes the underlying RPC connection.

* vendor: update elastic/gosigar so that it compiles on OpenBSD (ethereum#16542)

* eth/downloader: fix for Issue ethereum#16539 (ethereum#16546)

* params: release Geth v1.8.5 - Dirty Derivative²

* VERSION, params: begin Geth 1.8.6 release cycle

* cmd/geth: update the copyright year in the geth command usage (ethereum#16537)

* Revert "Dockerfile.alltools: fix invalid command"

* Revert "cmd/puppeth: fix node deploys for updated dockerfile user"

* Dockerfile: revert the user change PR that broke all APIs

* Dockerfile: drop legacy discovery v5 port mappings

* params: release v1.8.6 to fix docker images

* VERSION, params: begin release cycle 1.8.7

* cmd/geth, mobile: add memsize to pprof server (ethereum#16532)

* cmd/geth, mobile: add memsize to pprof server

This is a temporary change, to be reverted before the next release.

* cmd/geth: fix variable name

* core/types: avoid duplicating transactions on changing signer (ethereum#16435)

* core/state: cache missing storage entries (ethereum#16584)

* cmd/utils: point users to --syncmode under DEPRECATED (ethereum#16572)

Indicate that --light and --fast options are replaced by --syncmode

* trie: remove unused `buf` parameter (ethereum#16583)

* core, eth: fix tracer dirty finalization

* travis.yml: remove obsolete brew-cask install

* whisper: Golint fixes in whisper packages (ethereum#16637)

* vendor: fix leveldb crash when bigger than 1 TiB

* core: ensure local transactions aren't discarded as underpriced

This fixes an issue where local transactions are discarded as
underpriced when the pool and queue are full.

* evm/main: use blocknumber from genesis

* accounts: golint updates for this or self warning (ethereum#16627)

* tests: golint fixes for tests directory (ethereum#16640)

* trie: golint iterator fixes (ethereum#16639)

* internal: golint updates for this or self warning (ethereum#16634)

* core: golint updates for this or self warning (ethereum#16633)

* build: Add ldflags -s -w when building aar

Smaller size on mobile is always good.
Might also solve our maven central upload problem

* cmd/clef: documentation about setup (ethereum#16568)

clef: documentation about setup

* params: release geth 1.8.7

* VERSION, params: begin v1.8.8 release cycle

* log: changed if-else blocks to conform with golint (ethereum#16661)

* p2p: changed if-else blocks to conform with golint (ethereum#16660)

* les: changed if-else blocks to conform with golint (ethereum#16658)

* accounts: changed if-else blocks to conform with golint (ethereum#16654)

* rpc: golint error with context as last parameter (ethereum#16657)

* rpc/*: golint error with context as last parameter

* Update json.go

* metrics: golint updates for this or self warning (ethereum#16635)

* metrics/*: golint updates for this or self warning

* metrics/*: golint updates for this or self warning, updated pr from feedback

* consensus/ethash: fixed typo (ethereum#16665)

* event: golint updates for this or self warning (ethereum#16631)

* event/*: golint updates for this or self warning

* event/*: golint updates for this or self warning, pr updated per feedback

* eth: golint updates for this or self warning (ethereum#16632)

* eth/*:golint updates for this or self warning

* eth/*: golint updates for this or self warning, pr updated per feedback

* signer: fix golint errors (ethereum#16653)

* signer/*: golint fixes

Specifically naming and comment formatting for documentation

* signer/*: fixed naming error crashing build

* signer/*: corrected error

* signer/core: fix tiny error whitespace

* signer/rules: fix test refactor

* whisper/mailserver: pass init error to the caller (ethereum#16671)

* whisper/mailserver: pass init error to the caller

* whisper/mailserver: add returns to fmt.Errorf

* whisper/mailserver: check err in mailserver init test

* common: changed if-else blocks to conform with golint (ethereum#16656)

* mobile: add GetStatus Method for Receipt (ethereum#16598)

* core/rawdb: separate raw database access to own package (ethereum#16666)

* rlp: fix some golint warnings (ethereum#16659)

* p2p: fix some golint warnings (ethereum#16577)

* eth/filters: derive FilterCriteria from ethereum.FilterQuery (ethereum#16629)

* p2p/simulations/adapters: fix websocket log line parsing in exec adapter (ethereum#16667)

* build: specify the key to use when invoking gpg:sign-and-deploy-file (ethereum#16696)

* crypto: fix golint warnings (ethereum#16710)

* p2p: don't discard reason set by Disconnect (ethereum#16559)

Peer.run was discarding the reason for disconnection sent to the disc
channel by Disconnect.

* cmd: various golint fixes (ethereum#16700)

* cmd: various golint fixes

* cmd: update to pr change request

* cmd: update to pr change request

* eth: golint fixes to variable names (ethereum#16711)

* eth/filter: check nil pointer when unsubscribe (ethereum#16682)

* eth/filter: check nil pointer when unsubscribe

* eth/filters, accounts, rpc: abort system if subscribe failed

* eth/filter: add crit log before exit

* eth/filter, event: minor fixes

* whisper/shhclient: update call to shh_generateSymKeyFromPassword to pass a string (ethereum#16668)

* all: get rid of error when creating memory database (ethereum#16716)

* all: get rid of error when create mdb

* core: clean up variables definition

* all: inline mdb definition

* event: document select case slice use and add edge case test (ethereum#16680)

Feed keeps active subscription channels in a slice called 'f.sendCases'.
The Send method tracks the active cases in a local variable 'cases'
whose value is f.sendCases initially. 'cases' shrinks to a shorter
prefix of f.sendCases every time a send succeeds, moving the successful
case out of range of the active case list.

This can be confusing because the two slices share a backing array. Add
more comments to document what is going on. Also add a test for removing
a case that is in 'f.sentCases' but not 'cases'.

* travis: use Android NDK 16b (ethereum#16562)

* bmt: golint updates for this or self warning (ethereum#16628)

* bmt/*: golint updates for this or self warning

* Update bmt.go

* light: new CHT for mainnet and ropsten (ethereum#16736)

* params: release go-ethereum v1.8.8

* VERSION, params: start 1.8.9 release cycle

* accounts/abi: allow abi: tags when unpacking structs

Go code users can now tag event struct members with `abi:` to specify in what fields the event will be de-serialized.

See PR ethereum#16648 for details.

* travis: try to upgrade android builder to trusty

* p2p/enr: updates for discovery v4 compatibility (ethereum#16679)

This applies spec changes from ethereum/EIPs#1049 and adds support for
pluggable identity schemes.

Some care has been taken to make the "v4" scheme standalone. It uses
public APIs only and could be moved out of package enr at any time.

A couple of minor changes were needed to make identity schemes work:

- The sequence number is now updated in Set instead of when signing.
- Record is now copy-safe, i.e. calling Set on a shallow copy doesn't
  modify the record it was copied from.

* all: collate new transaction events together

* core, eth: minor txpool event cleanups

* travis, appveyor: bump Go release to 1.10.2

* core, consensus: fix some typos in comment code and output log

* eth: propagate blocks and transactions async

* trie: fixes to comply with golint (ethereum#16771)

* log: fixes for golint warnings (ethereum#16775)

* node: all golint warnings fixed (ethereum#16773)

* node: all golint warnings fixed

* node: rm per peter

* node: rm per peter

* vendor, ethdb: print warning log if leveldb is performing compaction (ethereum#16766)

* vendor: update leveldb package

* ethdb: print warning log if db is performing compaction

* ethdb: update annotation and log

* core/types: convert status type from uint to uint64 (ethereum#16784)

* trie: support proof generation from the iterator

* core/vm: fix typo in instructions.go (ethereum#16788)

* core: use a wrapped map to remove contention in `TxPool.Get`. (ethereum#16670)

* core: use a wrapped `map` and `sync.RWMutex` for `TxPool.all` to remove contention in `TxPool.Get`.

* core: Remove redundant `txLookup.Find` and improve comments on txLookup methods.

* trie: cleaner logic, one less func call

* eth, node, trie: fix minor typos (ethereum#16802)

* params: release go-ethereum v1.8.9

* VERSION, params: begin 1.8.10 release cycle

* ethereum: fix a typo in FilterQuery{} (ethereum#16827)

Fix a spelling mistake in comment

* eth/fetcher: reuse variables for hash and number (ethereum#16819)

* whisper/shhclient: update call to shh_post to expect string instead of bool (ethereum#16757)

Fixes ethereum#16756

* common: improve documentation comments (ethereum#16701)

This commit adds many comments and removes unused code.
It also removes the EmptyHash function, which had some uses
but was silly.

* core/vm: fix typo in comment

* p2p/discv5: add egress/ingress traffic metrics to discv5 udp transport (ethereum#16369)

* core: improve test for TransactionPriceNonceSort (ethereum#16413)

* trie: rename TrieSync to Sync and improve hexToKeybytes (ethereum#16804)

This removes a golint warning: type name will be used as trie.TrieSync by
other packages, and that stutters; consider calling this Sync.

In hexToKeybytes len(hex) is even and (even+1)/2 == even/2, remove the +1.

* core: fix transaction event asynchronicity

* params: release Geth 1.8.10 hotfix

* VERSION, params: begin 1.8.11 release cycle

* ethstats: fix last golint warning (ethereum#16837)

* console: squash golint warnings (ethereum#16836)

* rpc: use HTTP request context as top-level context (ethereum#16861)

* consensus/ethash: reduce keccak hash allocations (ethereum#16857)

Use Read instead of Sum to avoid internal allocations and
copying the state.

name                      old time/op  new time/op  delta
CacheGeneration-8          764ms ± 1%   579ms ± 1%  -24.22%  (p=0.000 n=20+17)
SmallDatasetGeneration-8  75.2ms ±12%  60.6ms ±10%  -19.37%  (p=0.000 n=20+20)
HashimotoLight-8          1.58ms ±11%  1.55ms ± 8%     ~     (p=0.322 n=20+19)
HashimotoFullSmall-8      4.90µs ± 1%  4.88µs ± 1%   -0.31%  (p=0.013 n=19+18)

* core, eth, trie: streaming GC for the trie cache (ethereum#16810)

* core, eth, trie: streaming GC for the trie cache

* trie: track memcache statistics

* rpc: set timeouts for http server, see ethereum#16859

* metrics: expvar support for ResettingTimer (ethereum#16878)

* metrics: expvar support for ResettingTimer

* metrics: use integers for percentiles; remove Overall

* metrics: fix edge-case panic for index-out-of-range

* cmd/geth: cap cache allowance

* core: fix typo in comment code

* les: add Skip overflow check to GetBlockHeadersMsg handler (ethereum#16891)

* eth/tracers: fix minor off-by-one error (ethereum#16879)

* tracing: fix minor off-by-one error

* tracers: go generate

* core: concurrent background transaction sender ecrecover

* miner: not call commitNewWork if it's a side block (ethereum#16751)

* cmd/abigen: support for reading solc output from stdin (ethereum#16683)

Allow the --abi flag to be given - to indicate that it should read the
ABI information from standard input. It expects to read the solc output
with the --combined-json flag providing bin, abi, userdoc, devdoc, and
metadata, and works very similarly to the internal invocation of solc,
except it allows external invocation of solc.

This facilitates integration with more complex solc invocations, such
as invocations that require path remapping or --allow-paths tweaks.

Simple usage example:

    solc --combined-json bin,abi,userdoc,devdoc,metadata *.sol | abigen --abi -

* params: fix golint warnings (ethereum#16853)

params: fix golint warnings

* vendor: added vendor packages necessary for the swarm-network-rewrite merge (ethereum#16792)

* vendor: added vendor packages necessary for the swarm-network-rewrite merge into ethereum master

* vendor: removed multihash deps

* trie: reduce hasher allocations (ethereum#16896)

* trie: reduce hasher allocations

name    old time/op    new time/op    delta
Hash-8    4.05µs ±12%    3.56µs ± 9%  -12.13%  (p=0.000 n=20+19)

name    old alloc/op   new alloc/op   delta
Hash-8    1.30kB ± 0%    0.66kB ± 0%  -49.15%  (p=0.000 n=20+20)

name    old allocs/op  new allocs/op  delta
Hash-8      11.0 ± 0%       8.0 ± 0%  -27.27%  (p=0.000 n=20+20)

* trie: bump initial buffer cap in hasher

* whisper: re-insert ethereum#16757 that has been lost during a merge (ethereum#16889)

* cmd/puppeth: fixed a typo in a wizard input query (ethereum#16910)

* core: relax type requirement for bc in ApplyTransaction (ethereum#16901)

* trie: avoid unnecessary slicing on shortnode decoding (ethereum#16917)

optimization code

* cmd/ethkey: add command to change key passphrase (ethereum#16516)

This change introduces 

    ethkey changepassphrase <keyfile>

to change the passphrase of a key file.

* metrics: return an empty snapshot for NilResettingTimer (ethereum#16930)

* light: new CHTs for mainnet and ropsten (ethereum#16926)

* ethclient: fix RPC parse error of Parity response (ethereum#16924)

The error produced when using a Parity RPC was the following:

ERROR: transaction did not get mined: failed to get tx for txid 0xbdeb094b3278019383c8da148ff1cb5b5dbd61bf8731bc2310ac1b8ed0235226: json: cannot unmarshal non-string into Go struct field txExtraInfo.blockHash of type common.Hash

* core: improve getBadBlocks to return full block rlp (ethereum#16902)

* core: improve getBadBlocks to return full block rlp

* core, eth, ethapi: changes to getBadBlocks formatting

* ethapi: address review concerns

* rpc: fix a comment typo (ethereum#16929)

* rpc: support returning nil pointer big.Ints (null)

* trie: don't report the root flushlist as an alloc

* metrics: removed repetitive calculations (ethereum#16944)

* core/rawdb: wrap db key creations (ethereum#16914)

* core/rawdb: use wrappered helper to assemble key

* core/rawdb: wrappered helper to assemble key

* core/rawdb: rewrite the wrapper, pass common.Hash

* ethdb: gracefullly handle quit channel (ethereum#16794)

* ethdb: gratefullly handle quit channel

* ethdb: minor polish

* internal/ethapi: reduce pendingTransactions to O(txs+accs) from O(txs*accs)

* les: pass server pool to protocol manager (ethereum#16947)

* metrics: fix gofmt linter warnings

* crypto: replace ToECDSAPub with error-checking func UnmarshalPubkey (ethereum#16932)

ToECDSAPub was unsafe because it returned a non-nil key with nil X, Y in
case of invalid input. This change replaces ToECDSAPub with
UnmarshalPubkey across the codebase.

* core, eth, les: more efficient hash-based header chain retrieval (ethereum#16946)

* les: fix retriever logic (ethereum#16776)

This PR fixes a retriever logic bug. When a peer had a soft timeout
and then a response arrived, it always assumed it was the same peer
even though it could have been a later requested one that did not time
out at all yet. In this case the logic went to an illegal state and
deadlocked, causing a goroutine leak.

Fixes ethereum#16243 and replaces ethereum#16359.
Thanks to @riceke for finding the bug in the logic.

* params: release go-ethereum v1.8.11

* VERSION, params: begin v1.8.12 release cycle

* core: change comment to match code more closely (ethereum#16963)

* internal/web3ext: fix method name for enabling mutex profiling (ethereum#16964)

* eth/fetcher: fix annotation (ethereum#16969)

* core/asm: correct comments typo (ethereum#16975)

core/asm/lexer: correct comments typo

* console: correct some comments typo (ethereum#16971)

console/console: correct some comments typo

*  ethereum#15685 made peer_test.go more portable by using random free port instead of hardcoded port 30303 (ethereum#15687)

Improves test portability by resolving 127.0.0.1:0
to get a random free port instead of the hard coded one. Now
the test works if you have a running node on the same
interface already.

Fixes ethereum#15685

* all: library changes for swarm-network-rewrite (ethereum#16898)

This commit adds all changes needed for the merge of swarm-network-rewrite.
The changes:

- build: increase linter timeout
- contracts/ens: export ensNode
- log: add Output method and enable fractional seconds in format
- metrics: relax test timeout
- p2p: reduced some log levels, updates to simulation packages
- rpc: increased maxClientSubscriptionBuffer to 20000

* core/vm: optimize MSTORE and SLOAD (ethereum#16939)

* vm/test: add tests+benchmarks for mstore

* core/vm: less alloc and copying for mstore

* core/vm: less allocs in sload

* vm: check for errors more correctly

* eth/filters: make filterLogs func more readable (ethereum#16920)

* cmd/utils: fix NetworkId default when -dev is set (ethereum#16833)

Prior to this change, when geth was started with `geth -dev -rpc`,
it would report a network id of `1` in response to the `net_version` RPC
request. But the actual network id it used to verify transactions
was `1337`.

This change causes geth instead respond with `1337` to the `net_version`
RPC when geth is started with `geth -dev -rpc`.

* travis, appveyor: update to Go 1.10.3

* common: all golint warnings removed (ethereum#16852)

* common: all golint warnings removed

* common: fixups

* eth: conform better to the golint standards (ethereum#16783)

* eth: made changes to conform better to the golint standards

* eth: fix comment nit

* core: reduce nesting in transaction pool code (ethereum#16980)

* bmt: fix package documentation comment (ethereum#16909)

* common/number: delete unused package (ethereum#16983)

This package was meant to hold an improved 256 bit integer library, but
the effort was abandoned in 2015. AFAIK nothing ever used this package.
Time to say goodbye.

* core/asm: correct comments typo (ethereum#16974)

* core/asm/compiler: correct comments typo

core/asm/compiler: correct comments typo

* Correct comments typo

* internal/debug: use pprof goroutine writer for debug_stacks (ethereum#16892)

* debug: Use pprof goroutine writer in debug.Stacks() to ensure all goroutines are captured.

* Up to 64MB limit, previous code only captured first 1MB of goroutines.

* internal/debug: simplify stacks handler

* fix typo

* fix pointer receiver

* accounts/keystore: assign schema as const instead of var (ethereum#16985)

* cmd: remove faucet/puppeth dead code (ethereum#16991)

* cmd/faucet: authGitHub is not used anymore

* cmd/puppeth: remove not used code

* mobile: correct comment typo in geth.go (ethereum#17021)

* accounts/usbwallet: correct comment typo (ethereum#17008)

* core: remove dead code, limit test code scope (ethereum#17006)

* core: move test util var/func to test file

* core: remove useless func

*  accounts/usbwallet: correct comment typo (ethereum#16998)

* signer: remove useless errorWrapper (ethereum#17003)

* travis: use NDK 17b for Android archives (ethereum#17029)

* tracers: fix err in 4byte, add some opcode analysis tools

* accounts: remove deadcode isSigned (ethereum#16990)

* mobile: correct comment typo in ethereum.go (ethereum#17040)

* cmd/geth: remove the tail "," from genesis config (ethereum#17028)

remove the tail "," from genesis config,  which will cause genesis config parse error .

* trie: cache collapsed tries node, not rlp blobs (ethereum#16876)

The current trie memory database/cache that we do pruning on stores
trie nodes as binary rlp encoded blobs, and also stores the node
relationships/references for GC purposes. However, most of the trie
nodes (everything apart from a value node) is in essence just a
collection of references.

This PR switches out the RLP encoded trie blobs with the
collapsed-but-not-serialized trie nodes. This permits most of the
references to be recovered from within the node data structure,
avoiding the need to track them a second time (expensive memory wise).

* swarm: network rewrite merge

* les: handle conn/disc/reg logic in the eventloop (ethereum#16981)

* les: handle conn/disc/reg logic in the eventloop

* les: try to dial before start eventloop

* les: handle disconnect logic more safely

* les: grammar fix

* log: Change time format

- Keep the tailing zeros.
- Limit precision to milliseconds.

* swarm/fuse: Disable fuse tests, they are flaky (ethereum#17072)

* swarm/pss: Hide big network tests under longrunning flag (ethereum#17074)

* whisper: Reduce message loop log from Warn to Info (ethereum#17055)

* core/vm: clear linter warnings (ethereum#17057)

* core/vm: clear linter warnings

* core/vm: review input

* core/vm.go: revert lint in noop as per request

* build: make build/goimports.sh more potable

* node: remove formatting from ResettingTimer metrics if requested in raw

* ethstats: comment minor correction (ethereum#17102)

spell correction from `repors` to `reports`

* ethdb, core: implement delete for db batch (ethereum#17101)

* vendor: update docker/docker/pkg/reexec so that it compiles on OpenBSD (ethereum#17084)

* trie: fix a temporary memory leak in the memcache

* cmd/geth: export metrics to InfluxDB (ethereum#16979)

* cmd/geth: add flags for metrics export

* cmd/geth: update usage fields for metrics flags

* metrics/influxdb: update reporter logger to adhere to geth logging convention

* node: documentation typo fix (ethereum#17113)

* core/vm: reuse bigint pools across transactions (ethereum#17070)

* core/vm: A pool for int pools

* core/vm: fix rebase issue

* core/vm: push leftover stack items after execution, not before

* cmd/p2psim: add exit error output and exit code (ethereum#17116)

* p2p/discover: move bond logic from table to transport (ethereum#17048)

* p2p/discover: move bond logic from table to transport

This commit moves node endpoint verification (bonding) from the table to
the UDP transport implementation. Previously, adding a node to the table
entailed pinging the node if needed. With this change, the ping-back
logic is embedded in the packet handler at a lower level.

It is easy to verify that the basic protocol is unchanged: we still
require a valid pong reply from the node before findnode is accepted.

The node database tracked the time of last ping sent to the node and
time of last valid pong received from the node. Node endpoints are
considered verified when a valid pong is received and the time of last
pong was called 'bond time'. The time of last ping sent was unused. In
this commit, the last ping database entry is repurposed to mean last
ping _received_. This entry is now used to track whether the node needs
to be pinged back.

The other big change is how nodes are added to the table. We used to add
nodes in Table.bond, which ran when a remote node pinged us or when we
encountered the node in a neighbors reply. The transport now adds to the
table directly after the endpoint is verified through ping. To ensure
that the Table can't be filled just by pinging the node repeatedly, we
retain the isInitDone check. During init, only nodes from neighbors
replies are added.

* p2p/discover: reduce findnode failure counter on success

* p2p/discover: remove unused parameter of loadSeedNodes

* p2p/discover: improve ping-back check and comments

* p2p/discover: add neighbors reply nodes always, not just during init

* consensus/ethash: fixed documentation typo (ethereum#17121)

"proot-of-work" to "proof-of-work"

* light: new CHTs (ethereum#17124)

* les: add announcement safety check to light fetcher (ethereum#17034)

* params: v1.8.12 stable

* 1.8.12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants