* Reorganized docs
* Fixed internal links in basic usage
* fixed the docker-compose command and volume for docs
* fixed docs tests
* fix travis docs test
* tox ini file
* fixed readme localhost links
* edited tox and test docs to previous state
* Fix tests errors related to docs reorganization
Signed-off-by: David Dashyan <mail@davie.li>
* Added ansible script installation option
Signed-off-by: Lana Ivina <lana@ipdb.io>
* Added ansible script to network setup guide
Signed-off-by: Lana Ivina <lana@ipdb.io>
* Hid the non-working button for now.
Signed-off: Lana Ivina <lana@ipdb.io>
* Try now button
Co-authored-by: David Dashyan <mail@davie.li>
Problem statement:
BigchainDB v2.0.0b9 has been around for quite a while. Recently we have updated
Tendermint supported version to v0.31.5 which has incompatible blockchain.
Despite the fact that we have defined instructions on chain migration, no one
expected to migrate to incompatible chain within patch version range. So there
is a demand for Tendermint v0.22.8 compatibility among BigchainDB users.
Work has been done:
bigchaindb-abci package was upgraded to support multiple API versions.
New configuration field stating tendermint version was added.
Signed-off-by: David Dashyan <mail@davie.li>
* added last_tx switch to the TX get query to only get the latest TX for a given asset.
* extended test case to contain last_tx field
* Add last_tx option in query module
* Fix natural descending cursor sort argument
* Updated changelog for 2.0.0b7
* Change 2.0.0b3 to b7 in network-setup.md
* Updated k8s yamls for 2.0.0b7 release
* Updated version.py for 2.0.0b7 release
1. Save pre-commit state in the beginning of end block.
2. Provide an interface for custom elections to rollback on crash recovery.
3. Simplify pre-commit management.
4. Add crash recovery for updert-validator and chain migration elecitons.
* Problem: Outputs API doesn't respond with correct unspent/spent outputs
Solution: Fix fastquery such that embedded document is queried properly
* Problem: key order agnostic queries not implemented
Solution: get_spent queries embedded documents which respect key order. This is
not expected by the application hence the query should be altered to query any
kind of key order
* Problem: Mongo query for get_spent too complicated
Solution: Simplify query using $elemMatch
* Problem: No test for checking mixed spent outputs
Solution: Add test for `get_spending_transactions` to check that correct
matching is done when querying documents with multiple inputs
* Problem: tranasction ids not assert when getting spent outputs
Solution: assert tranasction ids
* Separate pending and effective validator updates.
- Pending validator updates do not prevent elections from concluding.
- ValidatorElection overrides has_conclude to not conclude when there is a pending update for the matching height.
- Effective validator updates deem past elections inconclusive.
* Problem: Looking for election block is inefficient.
Solution: Record placed elections, update the records upon election conclusion.
* Clarify the conclusion order in Election.process_blocks.
* Insert election records in bulk.
Otherwise, one can significantly slow nodes down by posting a whole bunch of unique elections.
* Change get_election to use find_one.
* Calculate total votes without making extra query.
* Fix the pending valset check.
* Fix election test setup.
- Do not conclude migration election if there is a migration in progress.
- Rewrite election tests to not use mocks and assert many different things.
- Record concluded elections in the `election` collection.
* Problem: HTTP info endpoints don't include "blocks"
Solution: Add "blocks" to the response to the HTTP info endpoints
* Removed "blocks" endpoints from "Advanced Usage"
because they are really not that advanced
* Problem: We need a way to synchronize a halt to block production to allow for upgrades across breaking changes.
* Solution: Created `MigrationElection`.
* Problem: Need documentation for `migration` elections.
* Solution: Updated the docs.
* Problem: `MigrationElection` needs 'new' CLI method.
* Solution: Updated the definition of `election` to include the new `migration` type.
* Problem: The way `end_block` checks for concluded elections assumes there is only one type of election (so we can't conclude an `upsert-validator` and a `chain-migration` at the same height).
* Solution: Re-engineered the code in `Elections` to conclude multiple elections in the same block. If more than one election change the validator set, only one of them is applied.
* Problem: Tendermint change to store validator changes at height h+2 will break `Election.get_status`.
* Solution: Reworked `get_validator_change` to look at only the latest block height or less.
- Hard-wire the supported Tendermint version(s) right in the code of BigchainDB Server. Check the version of Tendermint and disconnect if Tendermint version is an unsupported one.
- Expose a CLI command bigchaindb tendermint-version to display the supported Tendermint versions.
- PR also takes care the long list of warnings we get when we run tests.
- Updated deprecated pymongo methods
- Do not call pytest fixtures directly.
- Also added the doc for the new cli command
Solution: parallelize the validation of transactions. This patch adds a
new flag for the `start` command, namely
`--experimental-parallel-validation`, that can be used to enable this
experimental feature.
Solution: Stop getting events from the Tendermint events API. Get the
event right before returning from the COMMIT phase of Tendermint, and
publish it to the events queue.
* Problem: `ValidatorElection` and `MigrationElection` need to inherit from a common `Election` class
Solution: Factored the common logic out of `ValidatorElection` and moved it to `Election` parent class
* Problem: Adding base58 as a requirement seems to break the build...
Solution: Reverting the changes
* Problem: Responding to a suggestion for improved method naming
Solution: Refactored `get_result_by_election_id` to `get_election_result_by_id`
* Problem: No need to store different types of elections in their own tables
Solution: Remove `DB_TABLE` property from `Election` class
* Revert "Problem: No need to store different types of elections in their own tables"
This reverts commit db45374d3c.
* Problem: Missed a method in `Bigchain` class when updating the naming for an election method
Solution: Finished the refactoring
* Problem: Need a table to store data for all elections
Solution: Created the `elections` table with secondary_index `election_id`
* Problem: `Election` class needs to be updated to store concluded elections in the `elections` table
Solution: Updated the class to use the new table
* Problem: `UpsertValidatorVote` can be generalized to just be `Vote`
Solution: Renamed, refactored and moved the `Vote` class to tie in with the more general `Election` base class
* Problem: Error in docstring return signature
Solution: Fixed the docstring
* Problem: Hardcoded reference to the `VOTE_TYPE` in `Election` base class
Solution: Pointed the reference to the class variable
* Problem: Schema still refers to `ValidatorElectionVote` instead of `Vote`
Solution: Renamed `TX_SCHEMA_VALIDATOR_ELECTION_VOTE` as `TX_SCHEMA_VOTE`
* Problem: `Election` class variable `ELECTION_TYPE` is overly specific
Solution: Renamed `ELECTION_TYPE` to `OPERATION`
* Problem: Command line options for `upsert-validator` can be generalized to manage any type of election
Solution: Refactored the CLI to manage generalized elections
* Problem: Default for `show_election` not implemented for `Election` class
Solution: Create a default method that work if all fields in the 'asset[data]' can be displayed without additional formatting
* Problem: Multiple small issues with style etc.
Solution: Addressed comments from PR
* Problem: `Election` class variable to `VOTE_TYPE` unnecessary
Solution: Removed the variable and hardcoded everything to use the `Vote` class
* Problem: Minor style issues with PR
Solution: Addressing comments
* Problem: Changes to format for validator keys broke some tests
Solution: Aligned the tests to reflect the changed key format
* Problem: `election show` command displaying the base56 public key
Solution: Cast any public key to base64
* Problem: `election_parser` help message still refers to upsert-validator
Solution: Updated the help message
* Problem: `ValidatorElection` and `MigrationElection` need to inherit from a common `Election` class.
Solution: Factored the common logic out of `ValidatorElection` and moved it to `Election` parent class.
* Problem: No need to store different types of elections in their own tables
Solution: Remove `DB_TABLE` property from `Election` class.
Solution: Created the `elections` table with secondary_index `election_id`.
* Problem: `UpsertValidatorVote` can be generalized to just be `Vote`
Solution: Renamed, refactored and moved the `Vote` class to tie in with the more general `Election` base class.
* Problem: `election_id` is not unique if two elections have the same properties.
Solution: Added a random `uuid4` seed to enforce uniqueness.
* Problem: The commit mode behaves incorrectly.
Solution: Parse the Tendermint response properly. The functionality was disabled in https://github.com/bigchaindb/bigchaindb/pull/2235/files#diff-c6511560546a7dc577e7e647b5bfdaceL68 and was not fixed since then.
* Add a test case for the sync mode.
* Do not strictly expect deliver_tx in the response.
* Fix post_mock in web/test_transactions.py.
* Check for the error field first.
* Problem: No good way to check for val set absence.
Solution: Make get_validator_set/get_validators return None/[] when there are no validators yet.
* Problem: Incompatible ABCI chain upgrades.
Solution: Record known chains and sync through InitChain. Triggering the migration and adjusting other ABCI endpoints will follow.
Solution: Election ID has to be unique but not every validator set record has it. MongoDB does not support partial indexes, does not even allow for multiple Nones. This is a temporary fix since we are introducing an `election` collection to store election IDs in #2498.
* Problem: cyrptoconditions dependency updated because of vulnerability CVE-2018-10903
* update cc to ~=0.7.2
* Fix test using b58encode
* Fixing some more tests failing because of base58 update
Solution: Remove un-necessary code. Deployment of MongoDB with or without replicaSet should be the responsibility of MongoDB admin which can and cannot be a BigchainDB node operator. As far as BigchainDB is concerned replicaset, if provided in bigchaindb configs, should be used to establish connection with MongoDB.
* Problem: We need to store the `election_id` as part of the `validator_update` so we can efficiently check which election was resposible for the change
Solution: Added the parameter to `store_validator_set` and aligned the tests
* Problem: Logic for `upsert-validator show` is convoluted
Solution: Rewrote the function to be much simpler
* Problem: Need a uniqueness constraint for election_id wrt validator changes
Solution: Added a new key to the db schema