a9950b2 | William Banfield | 13 October 2021, 20:03:17 UTC | lint++ | 13 October 2021, 20:03:17 UTC |
24513ee | William Banfield | 13 October 2021, 19:27:30 UTC | Merge remote-tracking branch 'origin/wb/abci-metrics' into wb/abci-metrics | 13 October 2021, 19:27:30 UTC |
e852dcd | William Banfield | 13 October 2021, 19:07:18 UTC | lint++ | 13 October 2021, 19:07:18 UTC |
0961b53 | William Banfield | 13 October 2021, 17:42:21 UTC | Merge branch 'master' into wb/abci-metrics | 13 October 2021, 17:42:21 UTC |
d42e32d | William Banfield | 13 October 2021, 16:41:13 UTC | Merge remote-tracking branch 'origin/wb/abci-metrics' into wb/abci-metrics | 13 October 2021, 16:41:13 UTC |
7d93e72 | William Banfield | 13 October 2021, 16:40:12 UTC | comments on proxy metrics | 13 October 2021, 16:40:12 UTC |
c5a72c4 | William Banfield | 13 October 2021, 16:21:35 UTC | Update internal/proxy/app_conn.go Co-authored-by: M. J. Fromberger <fromberger@interchain.io> | 13 October 2021, 16:21:35 UTC |
e049236 | William Banfield | 13 October 2021, 16:16:01 UTC | Update internal/proxy/app_conn.go Co-authored-by: M. J. Fromberger <fromberger@interchain.io> | 13 October 2021, 16:16:01 UTC |
3c4e138 | William Banfield | 13 October 2021, 16:15:48 UTC | Update internal/proxy/app_conn.go Co-authored-by: M. J. Fromberger <fromberger@interchain.io> | 13 October 2021, 16:15:48 UTC |
d323776 | William Banfield | 13 October 2021, 16:15:42 UTC | Update internal/proxy/app_conn.go Co-authored-by: M. J. Fromberger <fromberger@interchain.io> | 13 October 2021, 16:15:42 UTC |
791868b | William Banfield | 13 October 2021, 13:45:28 UTC | add helper function for timing metrics | 13 October 2021, 13:45:28 UTC |
4fe0f26 | Callum Waters | 13 October 2021, 12:28:43 UTC | changelog: add 0.34.14 updates (#7117) This PR adds the 0.34.14 changes to the changelog in master | 13 October 2021, 12:28:43 UTC |
6538776 | M. J. Fromberger | 12 October 2021, 22:29:06 UTC | build: Fix build-docker to include the full context. (#7114) Fixes #7068. The build-docker rule relies on being able to run make build-linux, but did not pull the Makefile into the build context. There are various ways to fix this, but this was probably the smallest. | 12 October 2021, 22:29:06 UTC |
e73b2db | William Banfield | 12 October 2021, 22:16:52 UTC | fix bucket sizes | 12 October 2021, 22:16:52 UTC |
5ee61ea | William Banfield | 12 October 2021, 21:55:27 UTC | fix | 12 October 2021, 21:55:27 UTC |
e412fe5 | William Banfield | 12 October 2021, 21:53:29 UTC | fix tests | 12 October 2021, 21:53:29 UTC |
4781d04 | Sam Kleinman | 12 October 2021, 21:40:59 UTC | node: always close database engine (#7113) | 12 October 2021, 21:40:59 UTC |
52ed994 | Sam Kleinman | 12 October 2021, 20:49:45 UTC | test: cleanup rpc/client and node test fixtures (#7112) | 12 October 2021, 20:49:45 UTC |
0524558 | lklimek | 12 October 2021, 20:22:57 UTC | refactor: assignment copies lock value (#7108) Co-authored-by: M. J. Fromberger <fromberger@interchain.io> | 12 October 2021, 20:22:57 UTC |
4396224 | William Banfield | 12 October 2021, 17:33:38 UTC | internal/proxy: add initial set of abci metrics | 12 October 2021, 17:33:38 UTC |
d837432 | Sam Kleinman | 12 October 2021, 16:28:10 UTC | ci: use run-multiple.sh for e2e pr tests (#7111) * ci: use run-multiple.sh for e2e pr tests * fix labeling * Update .github/workflows/e2e-nightly-35x.yml Co-authored-by: M. J. Fromberger <michael.j.fromberger@gmail.com> Co-authored-by: M. J. Fromberger <michael.j.fromberger@gmail.com> | 12 October 2021, 16:28:10 UTC |
34a3fcd | Sam Kleinman | 12 October 2021, 15:29:31 UTC | Revert "abci: change client to use multi-reader mutexes (#6306)" (#7106) This reverts commit 1c4dbe30d40bb4c1dc59a2247d5113b78702a014. | 12 October 2021, 15:29:31 UTC |
4829595 | M. J. Fromberger | 11 October 2021, 23:21:45 UTC | light: Update links in package docs. (#7099) Fixes #7098. The light client documentation moved to the spec repository. I was not able to figure out what happened to light-client-protocol.md, it was removed in #5252 but no corresponding file exists in the spec repository. Since the spec also discusses the protocol, this change simply links to the spec and removes the non-functional reference. Alternatively we could link to the top-level [light client doc](https://docs.tendermint.com/master/tendermint-core/light-client.html) if you think that's better. | 11 October 2021, 23:21:45 UTC |
ded3100 | Sam Kleinman | 09 October 2021, 15:33:54 UTC | lint: fix collection of stale errors (#7090) Few things that had been annoying. | 09 October 2021, 15:33:54 UTC |
befd669 | Sam Kleinman | 09 October 2021, 04:20:09 UTC | e2e: light nodes should use builtin abci app (#7095) | 09 October 2021, 04:20:09 UTC |
3646b63 | Sam Kleinman | 08 October 2021, 16:29:20 UTC | p2p, types: remove legacy NetAddress type (#7084) | 08 October 2021, 16:29:20 UTC |
5940400 | Callum Waters | 08 October 2021, 14:53:54 UTC | p2p: rename pexV2 to pex (#7088) | 08 October 2021, 14:53:54 UTC |
f2a8f5e | Sam Kleinman | 08 October 2021, 13:42:23 UTC | e2e: abci protocol should be consistent across networks (#7078) It seems weird in retrospect that we allow networks to contain applications that use different ABCI protocols. | 08 October 2021, 13:42:23 UTC |
1b5bb53 | Sam Kleinman | 08 October 2021, 12:49:17 UTC | p2p: cleanup unused arguments (#7079) This is mostly just reading through the output of uparam, after noticing that there were a few places where we were ignoring some arguments. | 08 October 2021, 12:49:17 UTC |
4ca130d | Callum Waters | 08 October 2021, 07:15:13 UTC | cli: allow node operator to rollback last state (#7033) | 08 October 2021, 07:15:13 UTC |
1f438f2 | Sam Kleinman | 07 October 2021, 23:07:35 UTC | e2e: improve network connectivity (#7077) This tweaks the connectivity of test configurations, in hopes that more will be viable. Additionally reduces the prevalence of testing the legacy mempool. | 07 October 2021, 23:07:35 UTC |
5bf30bb | Sam Kleinman | 06 October 2021, 19:17:44 UTC | p2p: cleanup transport interface (#7071) This is another batch of things to cleanup in the legacy P2P system. | 06 October 2021, 19:17:44 UTC |
e53f92b | dependabot[bot] | 06 October 2021, 13:14:55 UTC | build(deps): Bump github.com/adlio/schema from 1.1.13 to 1.1.14 (#7069) Bumps [github.com/adlio/schema](https://github.com/adlio/schema) from 1.1.13 to 1.1.14. - [Release notes](https://github.com/adlio/schema/releases) - [Commits](https://github.com/adlio/schema/compare/v1.1.13...v1.1.14) --- updated-dependencies: - dependency-name: github.com/adlio/schema dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> | 06 October 2021, 13:14:55 UTC |
e4d6f6d | Callum Waters | 06 October 2021, 09:59:21 UTC | docs: create separate releases doc (#7040) | 06 October 2021, 09:59:21 UTC |
0ef1a12 | Sam Kleinman | 06 October 2021, 04:11:19 UTC | ci: fix p2p configuration for e2e tests (#7066) My earlier p2p cleanup code removed support for the p2p tests from the e2e generator and runner, but missed removing the CI configuration. This patch remedies that. | 06 October 2021, 04:11:19 UTC |
72aee47 | Sam Kleinman | 06 October 2021, 04:08:54 UTC | ci: 0.35.x nightly should run from master and checkout the release branch (#7067) Nightly branches run CI from master branch, and the configuration misses checking out the correct ref. | 06 October 2021, 04:08:54 UTC |
109814c | M. J. Fromberger | 05 October 2021, 21:10:11 UTC | Clarify decision record for ADR-065. (#7062) While discussing a question about the indexing interface (#7044), we found some confusion about the intent of the design decisions in ADR 065. Based on discussion with the original authors of the ADR, this commit adds some language to the Decisions section to spell out the intentions more clearly, and to call out future work that this ADR did not explicitly decide about. | 05 October 2021, 21:10:11 UTC |
851d2e3 | Sam Kleinman | 05 October 2021, 20:23:15 UTC | mempool,rpc: add removetx rpc method (#7047) Addresses one of the concerns with #7041. Provides a mechanism (via the RPC interface) to delete a single transaction, described by its hash, from the mempool. The method returns an error if the transaction cannot be found. Once the transaction is removed it remains in the cache and cannot be resubmitted until the cache is cleared or it expires from the cache. | 05 October 2021, 20:23:15 UTC |
3ea81bf | Sam Kleinman | 05 October 2021, 20:09:31 UTC | p2p: remove wdrr queue (#7064) This code hasn't been battle tested, and seems to have grown increasingly flaky int tests. Given our general direction of reducing queue complexity over the next couple of releases I think it makes sense to remove it. | 05 October 2021, 20:09:31 UTC |
5703ae2 | Callum Waters | 05 October 2021, 18:19:12 UTC | e2e: automatically prune old app snapshots (#7034) This PR tackles the case of using the e2e application in a long lived testnet. The application continually saves snapshots (usually every 100 blocks) which after a while bloats the size of the application. This PR prunes older snapshots so that only the most recent 10 snapshots remain. | 05 October 2021, 18:19:12 UTC |
03ad7d6 | Sam Kleinman | 05 October 2021, 13:40:32 UTC | p2p: delete legacy stack initial pass (#7035) A few notes: - this is not all the deletion that we can do, but this is the most "simple" case: it leaves in shims, and there's some trivial additional cleanup to the transport that can happen but that requires writing more code, and I wanted this to be easy to review above all else. - This should land *after* we cut the branch for 0.35, but I'm anticipating that to happen soon, and I wanted to run this through CI. | 05 October 2021, 13:40:32 UTC |
f5b9c21 | William Banfield | 04 October 2021, 22:37:18 UTC | consensus: wait until peerUpdates channel is closed to close remaining peers (#7058) The race occurred as a result of a goroutine launched by `processPeerUpdate` racing with the `OnStop` method. The `processPeerUpdates` goroutine deletes from the map as `OnStop` is reading from it. This change updates the `OnStop` method to wait for the peer updates channel to be done before closing the peers. It also copies the map contents to a new map so that it will not conflict with the view of the map that the goroutine created in `processPeerUpdate` sees. | 04 October 2021, 22:37:18 UTC |
cb69ed8 | Sam Kleinman | 04 October 2021, 21:12:51 UTC | blocksync/v2: remove unsupported reactor (#7046) This commit should be one of the first to land as part of the v0.36 cycle *after* cutting the 0.35 branch. The blocksync/v2 reactor was originally implemented as an experiement to produce an implementation of the blockstack protocol that would be easier to test and validate, but it was never appropriately operationalized and this implementation was never fully debugged. When the p2p layer was refactored as part of the 0.35 cycle, the v2 implementation was not refactored and it was left in the codebase but not removed. This commit just removes all references to it. | 04 October 2021, 21:12:51 UTC |
c201e3b | William Banfield | 04 October 2021, 19:47:50 UTC | scripts: fix authors script to take a ref (#7051) This script is referenced from the release documentation, we should make sure it's functional. This is helpful in generating the "Special Thanks" section of the changelog. | 04 October 2021, 19:47:50 UTC |
b30ec89 | M. J. Fromberger | 04 October 2021, 17:35:16 UTC | Add an e2e workflow for the v0.35.x backport branch. (#7048) | 04 October 2021, 17:35:16 UTC |
6276fdc | Sam Kleinman | 04 October 2021, 17:04:15 UTC | ci: mergify support for 0.35 backports (#7050) | 04 October 2021, 17:04:15 UTC |
f361ce0 | M. J. Fromberger | 04 October 2021, 15:40:50 UTC | Update Go toolchains to 1.17 in Actions workflows. (#7049) | 04 October 2021, 15:40:50 UTC |
243c62c | William Banfield | 01 October 2021, 20:33:12 UTC | statesync: improve rare p2p race condition (#7042) This is intended to fix a test failure that occurs in the p2p state provider. The issue presents as the state provider timing out waiting for the consensus params response. The reason that this can occur is because the statesync reactor has the possibility of attempting to respond to the params request before the state provider is ready to read it. This results in the reactor hitting the `default` case seen here and then never sending on the channel. The stateprovider will then block waiting for a response and never receive one because the reactor opted not to send it. | 01 October 2021, 20:33:12 UTC |
177850a | William Banfield | 30 September 2021, 19:19:10 UTC | statesync: remove deadlock on init fail (#7029) When statesync is stopped during shutdown, it has the possibility of deadlocking. A dump of goroutines reveals that this is related to the peerUpdates channel not returning anything on its `Done()` channel when `OnStop` is called. As this is occuring, `processPeerUpdate` is attempting to acquire the reactor lock. It appears that this lock can never be acquired. I looked for the places where the lock may remain locked accidentally and cleaned them up in hopes to eradicate the issue. Dumps of the relevant goroutines may be found below. Note that the line numbers below are relative to the code in the `v0.35.0-rc1` tag. ``` goroutine 36 [chan receive]: github.com/tendermint/tendermint/internal/statesync.(*Reactor).OnStop(0xc00058f200) github.com/tendermint/tendermint/internal/statesync/reactor.go:243 +0x117 github.com/tendermint/tendermint/libs/service.(*BaseService).Stop(0xc00058f200, 0x0, 0x0) github.com/tendermint/tendermint/libs/service/service.go:171 +0x323 github.com/tendermint/tendermint/node.(*nodeImpl).OnStop(0xc0001ea240) github.com/tendermint/tendermint/node/node.go:769 +0x132 github.com/tendermint/tendermint/libs/service.(*BaseService).Stop(0xc0001ea240, 0x0, 0x0) github.com/tendermint/tendermint/libs/service/service.go:171 +0x323 github.com/tendermint/tendermint/cmd/tendermint/commands.NewRunNodeCmd.func1.1() github.com/tendermint/tendermint/cmd/tendermint/commands/run_node.go:143 +0x62 github.com/tendermint/tendermint/libs/os.TrapSignal.func1(0xc000629500, 0x7fdb52f96358, 0xc0002b5030, 0xc00000daa0) github.com/tendermint/tendermint/libs/os/os.go:26 +0x102 created by github.com/tendermint/tendermint/libs/os.TrapSignal github.com/tendermint/tendermint/libs/os/os.go:22 +0xe6 goroutine 188 [semacquire]: sync.runtime_SemacquireMutex(0xc00026b1cc, 0x0, 0x1) runtime/sema.go:71 +0x47 sync.(*Mutex).lockSlow(0xc00026b1c8) sync/mutex.go:138 +0x105 sync.(*Mutex).Lock(...) sync/mutex.go:81 sync.(*RWMutex).Lock(0xc00026b1c8) sync/rwmutex.go:111 +0x90 github.com/tendermint/tendermint/internal/statesync.(*Reactor).processPeerUpdate(0xc00026b080, 0xc000650008, 0x28, 0x124de90, 0x4) github.com/tendermint/tendermint/internal/statesync/reactor.go:849 +0x1a5 github.com/tendermint/tendermint/internal/statesync.(*Reactor).processPeerUpdates(0xc00026b080) github.com/tendermint/tendermint/internal/statesync/reactor.go:883 +0xab created by github.com/tendermint/tendermint/internal/statesync.(*Reactor.OnStart github.com/tendermint/tendermint/internal/statesync/reactor.go:219 +0xcd) ``` | 30 September 2021, 19:19:10 UTC |
bdd815e | M. J. Fromberger | 30 September 2021, 17:53:05 UTC | Align atomic struct field for compatibility in 32-bit ABIs. (#7037) The layout of struct fields means that interior fields may not be properly aligned for 64-bit access. Fixes #7000. | 30 September 2021, 17:53:05 UTC |
7705237 | M. J. Fromberger | 30 September 2021, 17:13:32 UTC | Update default config template to match mapstructure keys. (#7036) Fix a couple of cases where we updated the keys in the config reader, but forgot to update some of their uses in the default template. Fixes #7031. | 30 September 2021, 17:13:32 UTC |
6a0d9c8 | William Banfield | 30 September 2021, 16:19:18 UTC | blocksync: fix shutdown deadlock issue (#7030) When shutting down blocksync, it is observed that the process can hang completely. A dump of running goroutines reveals that this is due to goroutines not listening on the correct shutdown signal. Namely, the `poolRoutine` goroutine does not wait on `pool.Quit`. The `poolRoutine` does not receive any other shutdown signal during `OnStop` becuase it must stop before the `r.closeCh` is closed. Currently the `poolRoutine` listens in the `closeCh` which will not close until the `poolRoutine` stops and calls `poolWG.Done()`. This change also puts the `requestRoutine()` in the `OnStart` method to make it more visible since it does not rely on anything that is spawned in the `poolRoutine`. ``` goroutine 183 [semacquire]: sync.runtime_Semacquire(0xc0000d3bd8) runtime/sema.go:56 +0x45 sync.(*WaitGroup).Wait(0xc0000d3bd0) sync/waitgroup.go:130 +0x65 github.com/tendermint/tendermint/internal/blocksync/v0.(*Reactor).OnStop(0xc0000d3a00) github.com/tendermint/tendermint/internal/blocksync/v0/reactor.go:193 +0x47 github.com/tendermint/tendermint/libs/service.(*BaseService).Stop(0xc0000d3a00, 0x0, 0x0) github.com/tendermint/tendermint/libs/service/service.go:171 +0x323 github.com/tendermint/tendermint/node.(*nodeImpl).OnStop(0xc00052c000) github.com/tendermint/tendermint/node/node.go:758 +0xc62 github.com/tendermint/tendermint/libs/service.(*BaseService).Stop(0xc00052c000, 0x0, 0x0) github.com/tendermint/tendermint/libs/service/service.go:171 +0x323 github.com/tendermint/tendermint/cmd/tendermint/commands.NewRunNodeCmd.func1.1() github.com/tendermint/tendermint/cmd/tendermint/commands/run_node.go:143 +0x62 github.com/tendermint/tendermint/libs/os.TrapSignal.func1(0xc000df6d20, 0x7f04a68da900, 0xc0004a8930, 0xc0005a72d8) github.com/tendermint/tendermint/libs/os/os.go:26 +0x102 created by github.com/tendermint/tendermint/libs/os.TrapSignal github.com/tendermint/tendermint/libs/os/os.go:22 +0xe6 goroutine 161 [select]: github.com/tendermint/tendermint/internal/blocksync/v0.(*Reactor).poolRoutine(0xc0000d3a00, 0x0) github.com/tendermint/tendermint/internal/blocksync/v0/reactor.go:464 +0x2b3 created by github.com/tendermint/tendermint/internal/blocksync/v0.(*Reactor).OnStart github.com/tendermint/tendermint/internal/blocksync/v0/reactor.go:174 +0xf1 goroutine 162 [select]: github.com/tendermint/tendermint/internal/blocksync/v0.(*Reactor).processBlockSyncCh(0xc0000d3a00) github.com/tendermint/tendermint/internal/blocksync/v0/reactor.go:310 +0x151 created by github.com/tendermint/tendermint/internal/blocksync/v0.(*Reactor).OnStart github.com/tendermint/tendermint/internal/blocksync/v0/reactor.go:177 +0x54 goroutine 163 [select]: github.com/tendermint/tendermint/internal/blocksync/v0.(*Reactor).processPeerUpdates(0xc0000d3a00) github.com/tendermint/tendermint/internal/blocksync/v0/reactor.go:363 +0x12b created by github.com/tendermint/tendermint/internal/blocksync/v0.(*Reactor).OnStart github.com/tendermint/tendermint/internal/blocksync/v0/reactor.go:178 +0x76 ``` | 30 September 2021, 16:19:18 UTC |
c9d92f5 | Tess Rinearson | 29 September 2021, 20:02:28 UTC | .github: remove tessr and bez from codeowners (#7028) | 29 September 2021, 20:02:28 UTC |
23fe6fd | Sam Kleinman | 29 September 2021, 16:38:27 UTC | statesync: ensure test network properly configured (#7026) This test reliably gets hung up on network configuration, (which may be a real issue,) but it's network setup is handcranked and we should ensure that the test focuses on it's core assertions and doesn't fail for test architecture reasons. | 29 September 2021, 16:38:27 UTC |
962caea | M. J. Fromberger | 29 September 2021, 15:38:52 UTC | Make doc site index default to the latest release (#7023) Fix the order of lines in docs/versions so that v0.34 is last (the current release). Related changes: - Update docs/DOCS_README.md to reflect the current state of how we publish the site. - Fix the build-docs target in Makefile to not perturb the package-lock.json during the build. - Fix the Makefile rule to not clobber package-lock.json. | 29 September 2021, 15:38:52 UTC |
8758078 | Sam Kleinman | 29 September 2021, 15:19:34 UTC | consensus: avoid unbuffered channel in state test (#7025) | 29 September 2021, 15:19:34 UTC |
b1dfbb8 | Sam Kleinman | 28 September 2021, 21:04:37 UTC | e2e: generator ensure p2p modes (#7021) | 28 September 2021, 21:04:37 UTC |
c18470a | Sam Kleinman | 28 September 2021, 20:47:35 UTC | e2e: use network size in load generator (#7019) | 28 September 2021, 20:47:35 UTC |
ea539dc | M. J. Fromberger | 28 September 2021, 14:59:47 UTC | Update changelog for v0.35.0-rc2. (#7011) Also, relinkify and update the bounty URL. | 28 September 2021, 14:59:47 UTC |
e35a42f | Sam Kleinman | 28 September 2021, 14:39:26 UTC | e2e: use smaller transactions (#7016) 75% of the failures in the last run all ran with the 10kb transactions. I'd like to dial it back and see if things improve more. | 28 September 2021, 14:39:26 UTC |
1bd1593 | lklimek | 28 September 2021, 13:32:14 UTC | fix: race condition in p2p_switch and pex_reactor (#7015) Closes https://github.com/tendermint/tendermint/issues/7014 | 28 September 2021, 13:32:14 UTC |
6be3661 | Sam Kleinman | 27 September 2021, 21:00:05 UTC | e2e: reduce number of stateless nodes in test networks (#7010) | 27 September 2021, 21:00:05 UTC |
9a16d93 | Sam Kleinman | 27 September 2021, 20:46:40 UTC | statesync: add logging while waiting for peers (#7007) | 27 September 2021, 20:46:40 UTC |
8023a2a | Sam Kleinman | 27 September 2021, 19:38:03 UTC | e2e: add generator tests (#7008) | 27 September 2021, 19:38:03 UTC |
6eaa3b2 | Sam Kleinman | 27 September 2021, 19:22:25 UTC | ci: use cheaper codecov data collection (#7009) | 27 September 2021, 19:22:25 UTC |
b150ea6 | Sam Kleinman | 27 September 2021, 18:08:08 UTC | e2e: avoid seed nodes when statesyncing (#7006) | 27 September 2021, 18:08:08 UTC |
b879f71 | Sam Kleinman | 27 September 2021, 17:27:08 UTC | e2e: reduce log noise (#7004) | 27 September 2021, 17:27:08 UTC |
bce7c2f | dependabot[bot] | 27 September 2021, 15:12:56 UTC | build(deps): Bump google.golang.org/grpc from 1.40.0 to 1.41.0 (#7003) | 27 September 2021, 15:12:56 UTC |
60a6c6f | Callum Waters | 27 September 2021, 13:43:07 UTC | e2e: allow running of single node using the e2e app (#6982) | 27 September 2021, 13:43:07 UTC |
fb9eaf5 | Sam Kleinman | 26 September 2021, 16:10:36 UTC | e2e: improve chances of statesyncing success (#7001) This reduces this situation where a node will get stuck block syncing, which seemed to happen a lot in last nights run. | 26 September 2021, 16:10:36 UTC |
37ca98a | Sam Kleinman | 25 September 2021, 23:14:38 UTC | e2e: reduce number of statesyncs in test networks (#6999) | 25 September 2021, 23:14:38 UTC |
c101fa1 | Sam Kleinman | 25 September 2021, 15:53:04 UTC | e2e: add limit and sort to generator (#6998) I observed a couple of problems with the generator in some recent tests: - there were a couple of hybrid test cases which did not have any legacy nodes (randomness and all.) I change the probability to produce more reliable results. - added options to the generation to be able to add a max (to compliment the earlier min) number of nodes for local testing. - added an option to support reversing the sort order so "more complex" networks were first, as well as tweaked some of the point values. - this refactored the generators cli parsing to be a bit more clear. | 25 September 2021, 15:53:04 UTC |
118bfe2 | M. J. Fromberger | 24 September 2021, 22:37:25 UTC | abci: Flush socket requests and responses immediately. (#6997) The main effect of this change is to flush the socket client and server message encoding buffers immediately once the message is fully and correctly encoded. This allows us to remove the timer and some other special cases, without changing the observed behaviour of the system. -- Background The socket protocol client and server each use a buffered writer to encode request and response messages onto the underlying connection. This reduces the possibility of a single message being split across multiple writes, but has the side-effect that a request may remain buffered for some time. The implementation worked around this by keeping a ticker that occasionally triggers a flush, and by flushing the writer in response to an explicit request baked into the client/server protocol (see also #6994). These workarounds are both unnecessary: Once a message has been dequeued for sending and fully encoded in wire format, there is no real use keeping all or part of it buffered locally. Moreover, using an asynchronous process to flush the buffer makes the round-trip performance of the request unpredictable. -- Benchmarks Code: https://play.golang.org/p/0ChUOxJOiHt I found no pre-existing performance benchmarks to justify the flush pattern, but a natural question is whether this will significantly harm client/server performance. To test this, I implemented a simple benchmark that transfers randomly-sized byte buffers from a no-op "client" to a no-op "server" over a Unix-domain socket, using a buffered writer, both with and without explicit flushes after each write. As the following data show, flushing every time (FLUSH=true) does reduce raw throughput, but not by a significant amount except for very small request sizes, where the transfer time is already trivial (1.9μs). Given that the client is calibrated for 1MiB transactions, the overhead is not meaningful. The percentage in each section is the speedup for flushing only when the buffer is full, relative to flushing every block. The benchmark uses the default buffer size (4096 bytes), which is the same value used by the socket client and server implementation: FLUSH NBLOCKS MAX AVG TOTAL ELAPSED TIME/BLOCK false 3957471 512 255 1011165416 2.00018873s 505ns true 1068568 512 255 273064368 2.000217051s 1.871µs (73%) false 536096 4096 2048 1098066401 2.000229108s 3.731µs true 477911 4096 2047 978746731 2.000177825s 4.185µs (10.8%) false 124595 16384 8181 1019340160 2.000235086s 16.053µs true 120995 16384 8179 989703064 2.000329349s 16.532µs (2.9%) false 2114 1048576 525693 1111316541 2.000479928s 946.3µs true 2083 1048576 526379 1096449173 2.001817137s 961.025µs (1.5%) Note also that the FLUSH=false baseline is actually faster than the production code, which flushes more often than is required by the buffer filling up. Moreover, the timer slows down the overall transaction rate of the client and server, indepenedent of how fast the socket transfer is, so the loss on a real workload is probably much less. | 24 September 2021, 22:37:25 UTC |
71c6682 | Sam Kleinman | 24 September 2021, 21:40:12 UTC | statesync: clean up reactor/syncer lifecylce (#6995) I've been noticing that there are a number of situations where the statesync reactor blocks waiting for peers (or similar,) I've moved things around to improve outcomes in local tests. | 24 September 2021, 21:40:12 UTC |
dbad701 | Sam Kleinman | 24 September 2021, 18:59:10 UTC | ci: use smart merges (#6993) | 24 September 2021, 18:59:10 UTC |
5e45676 | Sam Kleinman | 24 September 2021, 18:27:00 UTC | e2e: do not inject evidence through light proxy (#6992) In the last run, there were two problems at the RPC layer returned from light nodes' RPC end points. I think exercising the light client proxy RPC system is something that can/should be done via unit testing, and that likely these errors are (in production) transient and (in CI) very likely to fail for test environment issues. | 24 September 2021, 18:27:00 UTC |
08982c8 | Sam Kleinman | 24 September 2021, 17:49:06 UTC | e2e: skip validation of status apphash (#6991) I believe this assertion is likely redundant given that we're checking the block apphash. | 24 September 2021, 17:49:06 UTC |
b203c91 | Sam Kleinman | 24 September 2021, 17:01:35 UTC | rpc: implement BroadcastTxCommit without event subscriptions (#6984) | 24 September 2021, 17:01:35 UTC |
ab8cfb9 | Sam Kleinman | 24 September 2021, 16:28:51 UTC | e2e: tighten timing for load generation (#6990) | 24 September 2021, 16:28:51 UTC |
c909f8a | Sam Kleinman | 24 September 2021, 15:52:47 UTC | e2e: avoid non-determinism in app hash check (#6985) | 24 September 2021, 15:52:47 UTC |
363b87e | Sam Kleinman | 24 September 2021, 14:50:19 UTC | changelog: add entry for interanlizations (#6989) | 24 September 2021, 14:50:19 UTC |
dd4141e | dependabot[bot] | 24 September 2021, 14:15:30 UTC | build(deps): Bump github.com/go-kit/kit from 0.11.0 to 0.12.0 (#6988) Bumps [github.com/go-kit/kit](https://github.com/go-kit/kit) from 0.11.0 to 0.12.0. - [Release notes](https://github.com/go-kit/kit/releases) - [Commits](https://github.com/go-kit/kit/compare/v0.11.0...v0.12.0) --- updated-dependencies: - dependency-name: github.com/go-kit/kit dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> | 24 September 2021, 14:15:30 UTC |
5ccd668 | Sam Kleinman | 23 September 2021, 20:58:10 UTC | e2e: load should be proportional to network (#6983) | 23 September 2021, 20:58:10 UTC |
e94c418 | Sam Kleinman | 23 September 2021, 18:52:14 UTC | e2e: always preserve failed networks (#6981) | 23 September 2021, 18:52:14 UTC |
3d410e4 | Sam Kleinman | 23 September 2021, 18:31:59 UTC | e2e: only check validator sets after statesync (#6980) | 23 September 2021, 18:31:59 UTC |
8a171b8 | Sam Kleinman | 23 September 2021, 16:42:20 UTC | e2e: improve manifest sorting algorithim (#6979) | 23 September 2021, 16:42:20 UTC |
bb8ffcb | Sam Kleinman | 23 September 2021, 15:46:42 UTC | store: move pacakge to internal (#6978) | 23 September 2021, 15:46:42 UTC |
cf7537e | M. J. Fromberger | 23 September 2021, 14:52:07 UTC | cleanup: Reduce and normalize import path aliasing. (#6975) The code in the Tendermint repository makes heavy use of import aliasing. This is made necessary by our extensive reuse of common base package names, and by repetition of similar names across different subdirectories. Unfortunately we have not been very consistent about which packages we alias in various circumstances, and the aliases we use vary. In the spirit of the advice in the style guide and https://github.com/golang/go/wiki/CodeReviewComments#imports, his change makes an effort to clean up and normalize import aliasing. This change makes no API or behavioral changes. It is a pure cleanup intended o help make the code more readable to developers (including myself) trying to understand what is being imported where. Only unexported names have been modified, and the changes were generated and applied mechanically with gofmt -r and comby, respecting the lexical and syntactic rules of Go. Even so, I did not fix every inconsistency. Where the changes would be too disruptive, I left it alone. The principles I followed in this cleanup are: - Remove aliases that restate the package name. - Remove aliases where the base package name is unambiguous. - Move overly-terse abbreviations from the import to the usage site. - Fix lexical issues (remove underscores, remove capitalization). - Fix import groupings to more closely match the style guide. - Group blank (side-effecting) imports and ensure they are commented. - Add aliases to multiple imports with the same base package name. | 23 September 2021, 14:52:07 UTC |
c9beef7 | Marko | 23 September 2021, 12:37:11 UTC | proto: regenerate code (#6977) ## Description Replace all seemed to have been used causing proto files to be changed without being regenerated | 23 September 2021, 12:37:11 UTC |
41ac5b9 | M. J. Fromberger | 23 September 2021, 01:02:24 UTC | Fix script paths in go:generate directives. (#6973) We moved some files further down in the directory structure in #6964, which caused the relative paths to the mockery wrapper to stop working. There does not seem to be an obvious way to get the module root as a default environment variable, so for now I just added the extra up-slashes. | 23 September 2021, 01:02:24 UTC |
7e4cc59 | M. J. Fromberger | 23 September 2021, 00:45:11 UTC | Remove the unused rpc/client/mocks package. (#6974) This package is not used in the tendermint repository since 31e7cdee. Note that this is not the same package as rpc/client/mock (N.B. singular) which is still used in some tests. A search of GitHub turns up only 11 uses, all of which are in clones of the tendermint repo at old commits.. | 23 September 2021, 00:45:11 UTC |
1995ef2 | M. J. Fromberger | 22 September 2021, 21:26:35 UTC | rpc: Strip down the base RPC client interface. (#6971) * rpc: Strip down the base RPC client interface. Prior to this change, the RPC client interface requires implementing the entire Service interface, but most of the methods of Service are not needed by the concrete clients. Dissociate the Client interface from the Service interface. - Extract only those methods of Service that are necessary to make the existing clients work. - Update the clients to combine Start/Onstart and Stop/OnStop. This does not change what the clients do to start or stop. Only the websocket clients make use of this functionality anyway. The websocket implementation uses some plumbing from the BaseService helper. We should be able to excising that entirely, but the current interface dependencies among the clients would require a much larger change, and one that leaks into other (non-RPC) packages. As a less-invasive intermediate step, preserve the existing client behaviour (and tests) by extracting the necessary subset of the BaseService functionality to an analogous RunState helper for clients. I plan to obsolete that type in a future PR, but for now this makes a useful waypoint. Related: - Clean up client implementations. - Update mocks. | 22 September 2021, 21:26:35 UTC |
d04b6c2 | Sam Kleinman | 22 September 2021, 17:13:31 UTC | e2e: run multiple should use preserve (#6972) | 22 September 2021, 17:13:31 UTC |
1c4950d | Sam Kleinman | 22 September 2021, 17:04:25 UTC | state: move package to internal (#6964) | 22 September 2021, 17:04:25 UTC |
6383465 | Sam Kleinman | 22 September 2021, 16:48:38 UTC | ci: reduce number of groups for 0.34 e2e runs (#6968) | 22 September 2021, 16:48:38 UTC |
07d1018 | Sam Kleinman | 22 September 2021, 16:32:49 UTC | inspect: remove duplicated construction path (#6966) | 22 September 2021, 16:32:49 UTC |
5a13c70 | Sam Kleinman | 21 September 2021, 15:22:55 UTC | rfc: event system (#6957) | 21 September 2021, 15:22:55 UTC |
0f53a59 | Daria K | 21 September 2021, 10:35:40 UTC | readme: update discord links (#6965) This updates the Discord invite links. | 21 September 2021, 10:35:40 UTC |
df2d744 | Marko | 21 September 2021, 10:32:00 UTC | config/docs: update and deprecated (#6879) ## Description - Add deprecated to config values in toml - update config in configuration doc - explain how to set up a node with the new network - add sentence about not needing to fork tendermint for built-in tutorial - closes #6865 - add note to use a released version of tendermint with the tutorials. This is to avoid unknown issues prior to a release. | 21 September 2021, 10:32:00 UTC |
84ffaaa | JayT106 | 21 September 2021, 07:22:16 UTC | statesync/rpc: metrics for the statesync and the rpc SyncInfo (#6795) | 21 September 2021, 07:22:16 UTC |