7477 Commits

Author SHA1 Message Date
Felix Lange
8d81eb9999 [release/1.4.18] trie, core/state: improve memory usage and performance (#3135)
* trie: store nodes as pointers

This avoids memory copies when unwrapping node interface values.

name      old time/op  new time/op  delta
Get        388ns ± 8%   215ns ± 2%  -44.56%  (p=0.000 n=15+15)
GetDB      363ns ± 3%   202ns ± 2%  -44.21%  (p=0.000 n=15+15)
UpdateBE  1.57µs ± 2%  1.29µs ± 3%  -17.80%  (p=0.000 n=13+15)
UpdateLE  1.92µs ± 2%  1.61µs ± 2%  -16.25%  (p=0.000 n=14+14)
HashBE    2.16µs ± 6%  2.18µs ± 6%     ~     (p=0.436 n=15+15)
HashLE    7.43µs ± 3%  7.21µs ± 3%   -2.96%  (p=0.000 n=15+13)

* trie: close temporary databases in GetDB benchmark

* trie: don't keep []byte from DB load around

Nodes decoded from a DB load kept hashes and values as sub-slices of
the DB value. This can be a problem because loading from leveldb often
returns []byte with a cap that's larger than necessary, increasing
memory usage.

* trie: unload old cached nodes

* trie, core/state: use cache unloading for account trie

* trie: use explicit private flags (fixes Go 1.5 reflection issue).

* trie: fixup cachegen overflow at request of nick

* core/state: rename journal size constant

(cherry picked from commit 40cdcf1183df235e4b32cfdbf6182a00a0e49f24)
2016-10-14 19:46:36 +03:00
Péter Szilágyi
2425a748ff [release/1.4.18] core: add global (soft) limits on the pending transactions
(cherry picked from commit 182d9cb752ffe08fc5e40718031bc8a497311ff5)
2016-10-14 19:46:33 +03:00
Nick Johnson
facfe40528 [release/1.4.18] metrics, internal/debug: Add --pprofaddr flag, expose metrics via gexp
(cherry picked from commit 9e9bfc4e264b0bc16bdfe893e9cb3cfad096c48c)
2016-10-14 19:46:30 +03:00
Felix Lange
abaa56fea5 [release/1.4.17] cmd/geth, VERSION: bump version to 1.4.17 2016-10-10 16:17:17 +02:00
Felix Lange
a79977bc20 [release/1.4.17] core: lower transaction pool max queue limit
(cherry picked from commit 16d8397e30ea0e4d07a07f5c4416b8888daf9796)
2016-10-10 15:53:01 +02:00
Péter Szilágyi
794d2eb582 [release/1.4.17] core: abstract out a sorted transaction hash map
(cherry picked from commit b4a52513915d5a39ac055fc38cafed70098eb698)
2016-10-10 10:50:02 +02:00
Péter Szilágyi
d7721def26 [release/1.4.17] core: add upper bound on the queued transctions
(cherry picked from commit a183ea29f9313cb1d00ed8f73bfbc4ae51e9cb04)
2016-10-10 10:50:02 +02:00
Péter Szilágyi
ddcf02b119 [release/1.4.17] core/types, miner: switch over to the grouped tx sets
(cherry picked from commit affffb39b366321e47784e48c469da9584ceb92c)
2016-10-10 10:49:58 +02:00
Péter Szilágyi
ff697e82dc [release/1.4.17] core, eth, internal, miner: optimize txpool for quick ops
(cherry picked from commit 0ef327bbee79c01a69ba59258acc6ce3a48bc288)
2016-10-10 10:42:07 +02:00
Péter Szilágyi
df64a9f5ef [release/1.4.17] core, eth, miner: only retain 1 tx/nonce, remove bad ones
(cherry picked from commit 795b70423eac7180ab85b735f64aae9d6a10449d)
2016-10-10 10:41:58 +02:00
Felix Lange
4fced0972d [release/1.4.16] cmd/geth, VERSION: bumped version to 1.4.16 v1.4.16 2016-10-06 16:25:17 +02:00
Felix Lange
18971d9cb4 [release/1.4.16] core/state: optimize GetState
There is no need to use the reflection-based decoder to decode []byte.

(cherry picked from commit 3c836dd71b192de24774b1848173a4eb0ca9a63b)
2016-10-06 16:25:17 +02:00
Felix Lange
74d5251b70 [release/1.4.16] core/state: rename Delete/IsDeleted to Suicide/HasSuicided
The delete/remove naming has caused endless confusion in the past.

(cherry picked from commit 90fce8bfa621f8c3be6663d62740783949111ff1)
2016-10-06 16:25:17 +02:00
Felix Lange
46a527d014 [release/1.4.16] core/state: implement reverts by journaling all changes
This commit replaces the deep-copy based state revert mechanism with a
linear complexity journal. This commit also hides several internal
StateDB methods to limit the number of ways in which calling code can
use the journal incorrectly.

As usual consultation and bug fixes to the initial implementation were
provided by @karalabe, @obscuren and @Arachnid. Thank you!

(cherry picked from commit 1f1ea18b5414bea22332bb4fce53cc95b5c6a07d)
2016-10-06 16:25:17 +02:00
Felix Lange
e97b30169b [release/1.4.16] tests: update test files from github.com/ethereum/tests @ 45bc1d21d3c1
Two new tests are skipped because they're buggy. Making some newer
random state tests work required implementing the 'compressed return
value encoding'.

(cherry picked from commit 1b7b2ba2163c7b2b2acc0c4f107951ad873cd8a4)
2016-10-06 16:25:17 +02:00
Felix Lange
438efdab28 [release/1.4.16] cmd/utils: disable jitvm A/B test 2016-10-06 16:25:17 +02:00
Péter Szilágyi
f7e6fb7d1c [release/1.4.16] eth: monitor malicious header retrieval requests
(cherry picked from commit e482b5694faece927a29289f88d7a87b1ce1fbd1)
2016-10-06 16:25:17 +02:00
Felix Lange
718881bd35 [release/1.4.16] internal/build: fix git tag env variable for AppVeyor
(cherry picked from commit 82e09c17a9e112cf8fe59ec526fc90a228ad3c0b)
2016-10-06 16:25:17 +02:00
Felix Lange
d1bb89d46d [release/1.4.16] crypto/sha3: update from golang.org/x/crypto/sha3 a 80b25ed4
This pulls in the assembly implementation of keccakf1600 for amd64.

(cherry picked from commit 54ea317375273c8bb558194eb04c73925da9ac14)
2016-10-06 16:25:17 +02:00
Péter Szilágyi
1639f1174e Merge pull request #3074 from karalabe/release/1.4
Geth 1.4.15 "Come at me bro"
2016-10-03 11:40:05 +03:00
Péter Szilágyi
d9ed63ec38 [release/1.4.15] VERSION, cmd/geth: bumped version 1.4.15 2016-10-03 11:36:06 +03:00
Felix Lange
ee58202f2f [release/1.4.15] internal/build: use less edgy command to get the branch name
(cherry picked from commit b4b5921dd030568717d33b03739d65c3aeb9d9af)
2016-10-03 11:36:03 +03:00
Felix Lange
9315bc9c3c [release/1.4.15] build: improve debian packaging
This commit tweaks the debian packaging tool:

* All build environment metadata can now be overriden on the command
  line. This allows testing the CI build behaviour locally.
* -unstable packages now actually contain the binaries (oops)
* packages use Go 1.7 to build
* archiving is skipped for PR builds

(cherry picked from commit 4f7627972e4997965be6f3c406904ef613e14c20)
2016-10-03 11:35:57 +03:00
Péter Szilágyi
945bcb8293 [release/1.4.15] core/state: track dirty state entries for each object
(cherry picked from commit b7159818f9eb102ac842199fd5af0efca7bdd6b0)
2016-10-03 11:24:07 +03:00
Péter Szilágyi
f1949f4d99 [release/1.4.15] cmd, core, internal, light, tests: avoid hashing the code in the VM
(cherry picked from commit cb84e3f02953f2df166ae69369d222dcbbd7d78d)
2016-10-03 11:24:04 +03:00
Felix Lange
968ab8aa4f [release/1.4.15] trie: fix delete bug for values contained in fullNode
Delete crashed if a fullNode contained a valueNode directly. This bug is
very unlikely to occur with SecureTrie, but can happen with regular
tries. This commit also introduces a randomised test which triggers all
trie operations, which should prevent such bugs in the future.

Credit for finding this bug goes to Github user @rjl493456442.

(cherry picked from commit c3a77d626831b4ffe37ed4f8640e67e70ad5b220)
2016-10-03 11:23:56 +03:00
Péter Szilágyi
f88bca7ba9 Merge pull request #3055 from karalabe/release/1.4
Geth 1.4.14: What else should we rewrite?
v1.4.14
2016-09-28 13:40:44 +03:00
Péter Szilágyi
d4608ae0d2 [release/1.4.14] VERSION, cmd/geth: bumped version 1.4.14 2016-09-28 13:32:14 +03:00
Péter Szilágyi
f50c2a5c70 [release/1.4.14] core, eth, trie: reuse trie journals in all our code
(cherry picked from commit 710435b51b97b4c688b70bda35ab9d1aa704a988)
2016-09-28 13:32:12 +03:00
Felix Lange
ddadf402fc [release/1.4.14] core, trie: replace state caches with trie journal
(cherry picked from commit cd791bd855b55b95afc8a5c8f56b8bf67863d099)
2016-09-28 13:32:10 +03:00
Felix Lange
7c17a6704c [release/1.4.14] build: limit test concurrency
TravisCI and AppVeyor run the tests in very slow VMs.
Some of our tests can't cope with that. Running less tests
in parallel should make them somewhat less flakey.

(cherry picked from commit b0a6b979a3f12e91cfbc89850bfaa00c46653e85)
2016-09-28 13:32:08 +03:00
Felix Lange
25205d64d7 [release/1.4.14] cmd/utils: don't check for stderr redirect on windows
The redirect check did not work on Go 1.6 and below because Stat
returned an error for stdout and stderr. In Go 1.7 Stat works on stdout
but doesn't return anything meaningful, causing cmd/geth test failures
because the message is printed to stderr only. Fix it by printing to
stdout only.

(cherry picked from commit b04219fdbbef06527f77e93129d6a196b6841f44)
2016-09-28 13:32:06 +03:00
Felix Lange
03b2f56485 [release/1.4.14] appveyor.yml: don't install Go and MinGW, they're already there (#2813)
(cherry picked from commit e11489eb5f58a63cb39a3189de7263837dc95b93)
2016-09-28 13:31:55 +03:00
Péter Szilágyi
7a5843de31 Merge pull request #3038 from fjl/release/1.4
[release/1.4.13] core/state: track all accounts in canon state
2016-09-26 12:36:53 +03:00
Felix Lange
0cc6397195 [release/1.4.13] node: fix go vet issue 2016-09-26 10:49:40 +02:00
Felix Lange
dc2b23c869 [release/1.4.13] core/state: track all accounts in canon state
This change introduces a global, per-state cache that keeps account data
in the canon state. Thanks to @karalabe for lots of fixes.

(cherry picked from commit a59a93f476434f2805c8fd3e10bf1b2f579b078f)
2016-09-26 10:31:18 +02:00
Péter Szilágyi
6999f1da6b Merge pull request #3036 from karalabe/release/1.4
Geth 1.4.13
2016-09-26 08:55:23 +03:00
Péter Szilágyi
95bfedd599 [release 1.4.12] VERSION, cmd/geth: bumped version 1.4.13 2016-09-26 08:50:13 +03:00
Gustav Simonsson
42e4e18667 [release 1.4.12] core: short-circuit balance change if zero value
(cherry picked from commit 25ed5feddadea8201974bfacb2a57d060b697acb)
2016-09-26 08:49:59 +03:00
Péter Szilágyi
9bdbaf459a Merge pull request #3008 from karalabe/release/1.4
G
2016-09-19 04:32:32 +03:00
Péter Szilágyi
dfc63c49c7 [release/1.4.12] VERSION, cmd/geth: bumped version 1.4.12 2016-09-19 04:23:42 +03:00
Nick Johnson
e44b2dc881 [release 1.4.12] core/state: Fix memory expansion bug by not copying clean objects
(cherry picked from commit 581b320b9dfb42c0c4842e0bc5aeb507267a8eba)
2016-09-19 04:23:36 +03:00
Jeffrey Wilcke
99a0c76435 Merge pull request #2915 from obscuren/release/1.4
Geth 1.4.11
2016-08-18 17:04:31 +02:00
Jeffrey Wilcke
5ca5ccf90c [release/1.4.11] VERSION, cmd/geth: bumped version 1.4.11 2016-08-18 15:25:16 +02:00
Bas van Kervel
c4ed34f008 [release/1.4.11] core: ensure the canonical block is written before the canonical hash is set
(cherry picked from commit bb8059f6aa86d1052d7c2dd75a6985982cb278f4)

Conflicts:
	core/blockchain.go
	core/database_util.go
	core/headerchain.go
	eth/filters/filter.go
2016-08-18 15:25:16 +02:00
Péter Szilágyi
0ab7e90cbb [release/1.4.11] Godeps: pull in ethash with the big endian build fix
(cherry picked from commit f0134f363bf62ba18668c2524050f14b2a43b6bd)
2016-08-18 15:25:04 +02:00
Péter Szilágyi
bdbfe572f1 [release/1.4.11] Makefile: support building for the MIPS64 platforms (#2682)
(cherry picked from commit 4c2cc32f2e279baa3059603b8c8a4329f31606f6)
2016-08-18 15:01:51 +02:00
Péter Szilágyi
c4e4baf668 [release/1.4.11] eth/downloader: fewer headers and futures too un ancestor lookup
(cherry picked from commit d68865f3b1b93e2463f7e3381e39fbbd137df825)
2016-08-18 15:01:49 +02:00
Péter Szilágyi
86493f9103 [release/1.4.11] eth/downloader: abort sync if master drops (timeout prev)
(cherry picked from commit 8f0a4a25f82f48005e6252a90c008bdc76219cc3)
2016-08-18 15:01:46 +02:00
Péter Szilágyi
6c672a55c0 [release/1.4.11] eth, eth/downloader: don't forward the DAO challenge header
(cherry picked from commit 071af57bcf516d92a0b56c5bb119d9576d32b5cb)
2016-08-18 15:01:43 +02:00