Commit Graph
58 Commits
Author SHA1 Message Date
cce0a3c171 docs: add package godoc for indexer (#6839)
* docs: add indexer godoc

* docs++

* docs++

* docs++

* docs++

* docs++

* Update state/indexer/doc.go

Co-authored-by: M. J. Fromberger <fromberger@interchain.io>

* Update state/indexer/doc.go

Co-authored-by: M. J. Fromberger <fromberger@interchain.io>

* Update state/indexer/doc.go

Co-authored-by: M. J. Fromberger <fromberger@interchain.io>

* Update state/indexer/doc.go

Co-authored-by: M. J. Fromberger <fromberger@interchain.io>

* Update state/indexer/doc.go

Co-authored-by: M. J. Fromberger <fromberger@interchain.io>

* Update state/indexer/doc.go

Co-authored-by: M. J. Fromberger <fromberger@interchain.io>

* docs++

Co-authored-by: M. J. Fromberger <fromberger@interchain.io>
2021-08-19 20:25:17 +00:00
Aleksandr BezobchukandGitHub 393a02a729 rpc: log update (#6825)
We INFO log every `ABCIQuery`. This can output a tremendous amount of noise in the logs, can cause cosmovisor to completely crash and slows down the node due to I/O. This log is completely unnecessary.

Let's get this backported into v0.43 and get that into v0.43 and v0.42 releases of the SDK


/cc @marbar3778
2021-08-14 01:40:14 +00:00
Aleksandr BezobchukandGitHub 4f73748bc8 mempool v1: tweak broadcastTxRoutine (#6771) 2021-07-27 15:34:06 -04:00
Aleksandr BezobchukandGitHub a393cf8bab internal: update blockchain reactor godoc (#6749) 2021-07-23 08:15:57 -04:00
Aleksandr BezobchukandGitHub 68ffe8bc64 mempool: add TTL configuration to mempool (#6715) 2021-07-19 15:54:44 -04:00
Aleksandr BezobchukandGitHub 1dec3e139a add stacktrace to panic logs (#6662) 2021-07-06 14:26:18 -04:00
Aleksandr BezobchukandGitHub 4f8bcb1cce docs: update events (#6658)
* docs: update events

* lint++

* lint++
2021-07-06 12:48:05 +00:00
Aleksandr BezobchukandGitHub 414130aee1 pubsub: Refactor Event Subscription (#6634) 2021-07-01 11:17:48 -04:00
Aleksandr BezobchukandGitHub 7d961b55b2 state sync: tune request timeout and chunkers (#6566) 2021-06-15 14:33:26 -04:00
Aleksandr BezobchukandGitHub 3635c7a382 logger: refactor Tendermint logger by using zerolog (#6534) 2021-06-07 08:30:48 -04:00
Aleksandr BezobchukandGitHub 7ec123c968 improvement: update TxInfo (#6529)
Remove `Context` from the `TxInfo` type and instead require the caller to pass a `Context` to `CheckTx` which is idiomatic.

closes: #6497
2021-06-02 13:53:57 +00:00
Aleksandr BezobchukandGitHub 1e4bc04cd6 mempool: v1 implementation (#6466) 2021-06-01 11:17:45 -04:00
Aleksandr BezobchukandGitHub 15a67b37d8 adr 067: updates (#6465)
* adr: updates

* fix link
2021-05-13 12:49:46 +00:00
Aleksandr BezobchukandGitHub f969614dc8 adr 067: mempool refactor (#6368) 2021-05-13 08:21:01 -04:00
Aleksandr BezobchukandGitHub bc643b19c4 p2p: support private peer IDs in new p2p stack (#6409)
Pass a set of private peer ids to the `PeerManager` and any node that exists in this set is not returned in the `Advertise` method.

closes: #6405
2021-04-30 20:37:17 +00:00
Aleksandr BezobchukandGitHub 09a6ad7b1e types: Refactor EventAttribute (#6408) 2021-04-30 09:27:51 -04:00
Aleksandr BezobchukandGitHub 47b28fd6aa p2p: minor cleanup + update router options (#6353) 2021-04-14 09:35:43 -04:00
Aleksandr BezobchukandGitHub 570e24f902 adr: ADR 065: Custom Event Indexing (#6307) 2021-04-13 13:37:09 -04:00
Aleksandr BezobchukandGitHub 46e06c9732 state: fix block event indexing reserved key check (#6314)
copy 🍝  bug when porting similar logic from the tx indexing code.
2021-04-03 16:18:54 +00:00
Aleksandr BezobchukandGitHub b5e4147e5a p2p: metrics (#6278) 2021-03-26 09:01:41 -04:00
Aleksandr BezobchukandGitHub a554005136 p2p: revised router message scheduling (#6126) 2021-03-25 16:58:46 -04:00
Aleksandr BezobchukandGitHub 1d671a147f github: add @tychoish to code owners (#6273) 2021-03-25 14:16:26 +00:00
Aleksandr BezobchukandGitHub d43a79ddf6 state: cleanup block indexing logs and null (#6263) 2021-03-22 13:25:42 -04:00
Aleksandr BezobchukandGitHub 003f394512 rpc: index block events to support block event queries (#6226) 2021-03-22 11:47:35 -04:00
Aleksandr BezobchukandGitHub be88fd3e63 mempool/rpc: log grooming (#6201) 2021-03-03 19:45:35 -05:00
Aleksandr BezobchukandGitHub c21f4c6fde state executor: groom logs (#6152)
ref: #5912
2021-02-23 15:57:27 +00:00
Aleksandr BezobchukandGitHub 6912c34b58 cmd: ignore missing wal in debug kill command (#6160)
closes: #6159
2021-02-22 13:24:56 +00:00
Aleksandr BezobchukandGitHub 27eb10a2e7 consensus: log private validator address and not struct (#6144)
ref: https://github.com/tendermint/tendermint/pull/6140#discussion_r578635756
2021-02-18 19:02:36 +00:00
Aleksandr BezobchukandGitHub 8a3637a249 consensus: more log grooming (#6140)
ref: https://github.com/tendermint/tendermint/issues/5912
2021-02-18 18:12:33 +00:00
Aleksandr BezobchukandGitHub bc3e3d134e tests: Fix TestByzantinePrevoteEquivocation (#6132)
Missed setting the buffer size on the subscription. Note, this doesn't really "fix" this test (a la ref: https://github.com/tendermint/tendermint/pull/5710).

However, I spent a good chunk of time looking at this test with many logs and I'm pretty sure this is mainly due to the fact that none of the nodes get the conflicting vote in time.

closes: #6127
2021-02-18 05:21:15 +00:00
Aleksandr BezobchukandGitHub 5b52f87789 ABCI: Fix ReCheckTx for Socket Client (#6124)
Fixes the race condition between a callback being set and called during ReCheckTx. Note, I do not see equivalent logic in the gRPC client (anymore) as #5439 suggests, so only the socket client was updated.

closes: #5439
2021-02-17 17:03:11 +00:00
Aleksandr BezobchukandGitHub 16bbe8c862 consensus: p2p refactor (#5969) 2021-02-16 11:02:52 -05:00
Aleksandr BezobchukandGitHub 17905cbaa2 sync: move closer to separate file (#6015)
Closes: #6013
2021-01-29 16:59:15 +00:00
Aleksandr BezobchukandGitHub 60bc071ed5 blockchain v0: skip TestReactor_BadBlockStopsPeer (#6014)
ref: #6005
2021-01-29 15:47:49 +00:00
Aleksandr BezobchukandGitHub bd8a9372d2 consensus: Groom Logs (#5917)
Executed a local network using simapp and looked for logs that seemed superfluous. This isn't by any means an exhaustive grooming, but should drastically help legibility of logs.


ref: #5912
2021-01-27 20:53:24 +00:00
Aleksandr BezobchukandGitHub 642ecc3f5c mempool: fix mempool tests timeout (#5988) 2021-01-26 13:26:47 -05:00
Aleksandr BezobchukandGitHub b19acfb605 mempool: fix TestReactorNoBroadcastToSender (#5984)
## Description

Looks like I missed a test in the original PR when fixing the tests.

Closes: #5956
2021-01-26 17:33:26 +00:00
Aleksandr BezobchukandGitHub b3aae970d8 blockchain v0: fix waitgroup data race (#5970)
## Description

Fixes the data race in usage of `WaitGroup`. Specifically, the case where we invoke `Wait` _before_ the first delta `Add` call when the current waitgroup counter is zero. See https://golang.org/pkg/sync/#WaitGroup.Add.

Still not sure how this manifests itself in a test since the reactor has to be stopped virtually immediately after being started (I think?).

Regardless, this is the appropriate fix.

closes: #5968
2021-01-25 19:34:55 +00:00
Aleksandr BezobchukandGitHub 9e158839f6 mempool: fix reactor tests (#5967)
## Description

Update the faux router to either drop channel errors or handle them based on an argument. This prevents deadlocks in tests where we try to send an error on the mempool channel but there is no reader.

Closes: #5956
2021-01-25 16:59:18 +00:00
Aleksandr BezobchukandGitHub 68bd2116f0 mempool: p2p refactor (#5919) 2021-01-22 09:34:12 -05:00
Aleksandr BezobchukandGitHub 15c1936b85 p2p: revise shim log levels (#5940)
Downgrade some noisy logs to DEBUG.
2021-01-21 14:18:27 +00:00
Aleksandr BezobchukandGitHub 62d7a5d028 blockchain v0: p2p refactor (#5858) 2021-01-18 16:35:11 -05:00
Aleksandr BezobchukandGitHub e986602649 evidence: p2p refactor (#5747) 2021-01-06 11:53:18 -05:00
Aleksandr BezobchukandGitHub 8bf77d9b1a statesync: do not recover panic on peer updates (#5869) 2021-01-06 10:07:10 -05:00
Aleksandr BezobchukandGitHub c75dee5a02 state sync: Fix TestSyncer_SyncAny (#5835) 2021-01-04 10:31:20 -05:00
Aleksandr BezobchukandGitHub 0565eb5943 state sync: cleanup (#5776) 2020-12-09 10:29:28 -05:00
Aleksandr BezobchukandGitHub a879eb444d p2p: state sync reactor refactor (#5671) 2020-12-09 09:31:06 -05:00
Aleksandr BezobchukandGitHub 8aa47c7da5 rpc: fix content-type header (#5661) 2020-11-13 14:07:10 -05:00
Aleksandr BezobchukandGitHub b508045eff Merge PR #5624: Types ValidateBasic Tests 2020-11-09 11:08:48 -05:00
Alexander BezobchukandGitHub e59378b45d p2p: Remove data race bug in netaddr stringer (#5048)
## Description

Remove concurrent write access bug by removing the memoized string representation of a `NetAddress`.

Closes: #5047
2020-06-25 14:03:59 +00:00
9f29672e23 types: implement Header#ValidateBasic (#4638)
- Move core stateless validation of the Header type to a ValidateBasic method.
- Call header.ValidateBasic during a SignedHeader validation.
- Call header.ValidateBasic during a PhantomValidatorEvidence validation.
- Call header.ValidateBasic during a LunaticValidatorEvidence validation.

lite tests are skipped since the package is deprecated, no need to waste time on it

closes: #4572

Co-authored-by: Anton Kaliaev <anton.kalyaev@gmail.com>
2020-04-24 11:45:38 +04:00
Alexander BezobchukandGitHub c11013f094 lite2: Default to http scheme in provider.New (#4649)
Closes: #4643
2020-04-06 21:06:33 +04:00
Alexander BezobchukandAnton Kaliaev 4bfec797e8 cli: debug sub-command (#4227)
## Issue

Implement a new subcommand: tendermint debug. This subcommand itself has two subcommands:

    $ tendermint debug kill <pid> </path/to/out.zip> --home=</path/to/app.d>

Writes debug info into a compressed archive. The archive will contain the following:

├── config.toml
├── consensus_state.json
├── net_info.json
├── stacktrace.out
├── status.json
└── wal

The Tendermint process will be killed.

    $ tendermint debug dump </path/to/out> --home=</path/to/app.d>

This command will perform similar to kill except it only polls the node and dumps debugging data every frequency seconds to a compressed archive under a given destination directory. Each archive will contain:

├── consensus_state.json
├── goroutine.out
├── heap.out
├── net_info.json
├── status.json
└── wal

Note:

    goroutine.out and heap.out will only be written if a profile address is provided and is operational.
    This command is blocking and will log any error.

replaces: #3327
closes: #3249

## Commits:

* Implement debug tool command stubs

* Implement net getters and zip logic

* Update zip dir API and add home flag

* Add simple godocs for kill aux functions

* Move IO util to new file and implement copy WAL func

* Implement copy config function

* Implement killProc

* Remove debug fmt

* Validate output file input

* Direct STDERR to file

* Godoc updates

* Sleep prior to killing tail proc

* Minor cleanup of godocs

* Move debug command and add make target

* Rename command handler function

* Add example to command long descr

* Move current implementation to cmd/tendermint/commands/debug

* Update kill cmd long description

* Implement dump command

* Add pending log entry

* Add gosec nolint

* Add error check for Mkdir

* Add os.IsNotExist(err)

* Add to debugging section in running-in-prod doc
2019-12-13 12:46:23 +04:00
Alexander BezobchukandAnton Kaliaev c5bcdd3a22 libs/pubsub: relax tx querying (#4070)
Some linting/cleanup missed from the initial events refactor
Don't panic; instead, return false, error when matching breaks unexpectedly
Strip non-numeric chars from values when attempting to match against query values
Have the server log during send upon error

* cleanup/lint Query#Conditions and do not panic

* cleanup/lint Query#Matches and do not panic

* cleanup/lint matchValue and do not panic

* rever to panic in Query#Conditions

* linting

* strip alpha chars when attempting to match

* add pending log entries

* Update libs/pubsub/query/query.go

Co-Authored-By: Anton Kaliaev <anton.kalyaev@gmail.com>

* build: update variable names

* update matchValue to return an error

* update Query#Matches to return an error

* update TestMatches

* log error in send

* Fix tests

* Fix TestEmptyQueryMatchesAnything

* fix linting

* Update libs/pubsub/query/query.go

Co-Authored-By: Anton Kaliaev <anton.kalyaev@gmail.com>

* Update libs/pubsub/query/query.go

Co-Authored-By: Anton Kaliaev <anton.kalyaev@gmail.com>

* Update libs/pubsub/query/query.go

Co-Authored-By: Anton Kaliaev <anton.kalyaev@gmail.com>

* Update libs/pubsub/query/query.go

Co-Authored-By: Anton Kaliaev <anton.kalyaev@gmail.com>

* Update libs/pubsub/query/query.go

Co-Authored-By: Anton Kaliaev <anton.kalyaev@gmail.com>

* Update libs/pubsub/pubsub.go

Co-Authored-By: Anton Kaliaev <anton.kalyaev@gmail.com>

* add missing errors pkg import

* update Query#Conditions to return an error

* update query pkg unit tests

* update TxIndex#Search

* update pending changelog
2019-10-28 09:37:58 +03:00
Alexander BezobchukandMarko 9ad9c5a786 Update indexing-transactions.md (#4045)
* Update indexing-transactions.md

* Toml instead of Yaml
2019-10-08 16:08:59 +02:00
Alexander BezobchukandAnton Kaliaev 14fa800773 txindexer: Refactor Tx Search Aggregation (#3851)
- Replace the previous intersect call, which was called at each query condition, with a map intersection.
- Replace fmt.Sprintf with string()

closes: #3076

Benchmarks

```
Old
goos: darwin
goarch: amd64
pkg: github.com/tendermint/tendermint/state/txindex/kv
BenchmarkTxSearch-4   	     200	 103641206 ns/op	 7998416 B/op	   71171 allocs/op
PASS
ok  	github.com/tendermint/tendermint/state/txindex/kv	26.019s

New
goos: darwin
goarch: amd64
pkg: github.com/tendermint/tendermint/state/txindex/kv
BenchmarkTxSearch-4   	    1000	  38615024 ns/op	13515226 B/op	  166460 allocs/op
PASS
ok  	github.com/tendermint/tendermint/state/txindex/kv	53.618s
```

~62% performance improvement

Commits:

* Refactor tx search

* Add pending changelog entry

* Add tx search benchmarking

* remove intermediate hashes list

also reset timer in BenchmarkTxSearch
and fix other benchmark

* fix import

* Add test cases

* Fix searching

* Replace fmt.Sprintf with string

* Update state/txindex/kv/kv.go

Co-Authored-By: Anton Kaliaev <anton.kalyaev@gmail.com>

* Rename params

* Cleanup

* Check error in benchmarks
2019-07-31 19:01:55 +04:00
ab0835463f abci: Refactor tagging events using list of lists (#3643)
## PR

This PR introduces a fundamental breaking change to the structure of ABCI response and tx tags and the way they're processed. Namely, the SDK can support more complex and aggregated events for distribution and slashing. In addition, block responses can include duplicate keys in events.

    Implement new Event type. An event has a type and a list of KV pairs (ie. list-of-lists). Typical events may look like:

"rewards": [{"amount": "5000uatom", "validator": "...", "recipient": "..."}]
"sender": [{"address": "...", "balance": "100uatom"}]

The events are indexed by {even.type}.{even.attribute[i].key}/.... In this case a client would subscribe or query for rewards.recipient='...'

    ABCI response types and related types now include Events []Event instead of Tags []cmn.KVPair.
    PubSub logic now publishes/matches against map[string][]string instead of map[string]string to support duplicate keys in response events (from #1385). A match is successful if the value is found in the slice of strings.

closes: #1859
closes: #2905

## Commits:

* Implement Event ABCI type and updates responses to use events

* Update messages_test.go

* Update kvstore.go

* Update event_bus.go

* Update subscription.go

* Update pubsub.go

* Update kvstore.go

* Update query logic to handle slice of strings in events

* Update Empty#Matches and unit tests

* Update pubsub logic

* Update EventBus#Publish

* Update kv tx indexer

* Update godocs

* Update ResultEvent to use slice of strings; update RPC

* Update more tests

* Update abci.md

* Check for key in validateAndStringifyEvents

* Fix KV indexer to skip empty keys

* Fix linting errors

* Update CHANGELOG_PENDING.md

* Update docs/spec/abci/abci.md

Co-Authored-By: Federico Kunze <31522760+fedekunze@users.noreply.github.com>

* Update abci/types/types.proto

Co-Authored-By: Ethan Buchman <ethan@coinculture.info>

* Update docs/spec/abci/abci.md

Co-Authored-By: Ethan Buchman <ethan@coinculture.info>

* Update libs/pubsub/query/query.go

Co-Authored-By: Ethan Buchman <ethan@coinculture.info>

* Update match function to match if ANY value matches

* Implement TestSubscribeDuplicateKeys

* Update TestMatches to include multi-key test cases

* Update events.go

* Update Query interface godoc

* Update match godoc

* Add godoc for matchValue

* DRY-up tx indexing

* Return error from PublishWithEvents in EventBus#Publish

* Update PublishEventNewBlockHeader to return an error

* Fix build

* Update events doc in ABCI

* Update ABCI events godoc

* Implement TestEventBusPublishEventTxDuplicateKeys

* Update TestSubscribeDuplicateKeys to be table-driven

* Remove mod file

* Remove markdown from events godoc

* Implement TestTxSearchDeprecatedIndexing test
2019-06-12 14:03:45 +02:00
Alexander BezobchukandAnton Kaliaev cf737ec85c return an error on show_validator (#3316)
* return a command error prior to init

* add a pending log entry

* Update CHANGELOG_PENDING.md

Co-Authored-By: alexanderbez <alexanderbez@users.noreply.github.com>

closes: #3314
2019-02-16 09:07:18 +04:00