Releases: bigchaindb/bigchaindb
v2.0.0b2
Added
- Added new configuration settings
tendermint.host
andtendermint.port
. Pull request #2342 - Added tests to ensure that BigchainDB gracefully handles "nasty" strings in keys and values. Pull request #2334
- Added a new logging handler to capture benchmark stats to a separate file. Pull request #2349
Changed
- Changed the names of BigchainDB processes (Python processes) to include 'bigchaindb', so they are easier to spot and find. Pull request #2354
- Updated all code to support the latest version of Tendermint. Note that the BigchainDB ABCI server now listens to port 26657 instead of 46657. Pull requests #2375 and #2380
Removed
Removed all support and code for the old backlog_reassign_delay setting. Pull request #2332
Fixed
- Fixed a bug that sometimes arose when using Docker Compose. (Tendermint would freeze.) Pull request #2341
- Fixed a bug in the code that creates a MongoDB index for the "id" in the transactions collection. It works now, and performance is improved. Pull request #2378
- The logging server would keep runnning in some tear-down scenarios. It doesn't do that any more. Pull request #2304
External Contributors
Known Issues
The bigchaindb upsert-validator
subcommand is not working yet, but a solution (BEP-21) has been finalized and will be implemented before we release the final BigchainDB 2.0.
Notes
v2.0.0b1
Fixed
- Fixed a bug that arose with some code that treated transactions-waiting-for-block-inclusion as if they were already stored in MongoDB (i.e. already in a block). Pull request #2318
- If a user asked for a block and it happened to be an empty block, BigchainDB returned 404 Not Found, as if the block did not exist. Now it returns a 200 OK with a block containing no transactions, i.e. an empty block. Pull request #2321
Known Issues
- An issue was found with the
bigchaindb upsert-validator
command. A solution was proposed in BEP-19 and is being implemented in pull request #2314 - If you run BigchainDB locally using
make start
(i.e. using Docker Compose) and then you put the node under heavy write load, Tendermint can become unresponsive and runningmake stop
can hang. - There seems to be one or more issues with Tendermint when it is put under heavy load (i.e. even when BigchainDB isn't involved). See Tendermint issues #1394, #1642 and #1661
Notes
- There's a new docs page about how to set up a network where each node uses a single virtual machine.
- We checked, and BigchainDB 2.0 Beta 1 works with MongoDB 3.6 (and 3.4).
- Support for RethinkDB is completely gone.
v2.0.0a6
Changed
Upgraded PyMongo to version 3.6 (which is compatible with MongoDB 3.6, 3.4 and more). Pull request #2298
Fixed
When deploying a node using our Docker Compose file, it didn't expose port 46656, which is used by Tendermint for inter-node communications, so the node couldn't communicate with other nodes. We fixed that in pull request #2299
Notes
We ran all our tests using MongoDB 3.6 and they all passed, so it seems safe to use BigchainDB with MongoDB 3.6 from now on.
v2.0.0a5
Changed
To resolve issue #2279, we made some changes to the bigchaindb-abci
package (which is our fork of py-abci
) and told BigchainDB to use the new version (bigchaindb-abci==0.4.5
). Pull request #2281.
v2.0.0a4
Changed
The Kubernetes liveness probe for the BigchainDB StatefulSet was improved to check the Tendermint /status endpoint in addition to the Tendermint /abci_info endpoint. Pull request #2275
Fixed
Pull request #2270 resolved issue #2269.
Notes
There's a new page in the docs about storing files in BigchainDB. Pull request #2259
v2.0.0a3
Changed
- Upgraded BigchainDB Server code to use the latest version of Tendermint: version 0.19.2. Pull requests #2249, #2252 and #2253
- Made some fixes to
py-abci
(an external Python package) and used our fixed version with BigchainDB. Those fixes resolved several known issues, including issue #2182 and issues with large transactions in general. Note: At the time of writing, our fixes topy-abci
hadn't been merged into the mainpy-abci
repository or its latest release on PyPI; we were using our own specialbigchaindb-abci
package (which included our fixes). Pull requests #2250 and #2261 - If BigchainDB Server crashes and then comes back, Tendermint Core doesn't try to reconnect to it. That's just how Tendermint Core works. We revised our Kubernetes-based production deployment template to resolve that issue: BigchainDB Server and Tendermint Core are now in the same Kubernetes StatefulSet; if the connection between them ever goes down, then Kubernetes restarts the whole StatefulSet. Pull request #2242
Fixed
Re-enabled multi-threading. Pull request #2258
Known Issues
Tendermint changed how it responds to a request to store data (via the Tendermint Broadcast API) between version 0.12 and 0.19.2. We started modifying the code of BigchainDB Server to account for those changes in responses (in pull request #2239), but we found that there's a difference between what the Tendermint documentation says about those responses and how Tendermint actually responds. We need to determine Tendermint's intent before we can finalize that pull request.
Notes
We were focused on getting the public BigchainDB Testnet stable during the development of BigchainDB 2.0 Alpha 3, and we think we largely succeeded. Because of that focus, we delayed the deployment of an internal test network until later. It would have had the same instabilities as the public BigchainDB Testnet anyway. In the future, we'll always test a new version of BigchainDB on our internal test network before deploying it on the public BigchainDB Testnet. (That wasn't possible this time around, because there was no old/stable version of BigchainDB 2.n to run on the public BigchainDB Testnet while we tested BigchainDB 2.[n+1] internally.)
v2.0.0a2
Added
An implementation of BEP-8 (BigchainDB Enhancement Proposal #8), which makes sure a node can recover from a system fault (e.g. a crash) into a consistent state, i.e. a state where the data in the node's local MongoDB database is consistent with the data stored in the blockchain. Pull requests #2135 and #2207
Changed
When someone uses the HTTP API to send a new transaction to a BigchainDB network using the POST /api/v1/transactions?mode={mode} endpoint, they now get back a more informative HTTP response, so they can better-understand what happened. This is only when mode is commit
or sync
, because async
means that the response is immediate, without waiting to see what happened to the transaction. Pull request #2198
Known Issues
- If BigchainDB Server crashes and then is restarted, Tendermint Core won't try to reconnect to BigchainDB Server and so all operations requiring that connection won't work. We only understood this recently. We'll write a blog post explaining what we intend to do about it.
- The known issues in 2.0 Alpha (listed below) are still there.
v2.0.0a1
There were many changes between 1.3 and 2.0 Alpha, too many to list here. We wrote a series of blog posts to summarize most changes, especially those that affect end users and application developers:
- BigchainDB 2.0 is Byzantine Fault Tolerant
- Some HTTP API Changes in the Next Release
- Three Transaction Model Changes in the Next Release
- Changes to the Server Command Line Interface in BigchainDB 2.0
- A forthcoming post about changes in BigchainDB Server configuration settings
External Contributors
- @r7vme contributed pull request #1984 which fixed a bug in our Kubernetes-based production deployment template.
Known Issues
We intend to resolve these issues before releasing the final BigchainDB 2.0:
- There's a known Heisenbug that (sometimes) arises and we found that making the BigchainDB webserver single-threaded prevents that bug from causing problems. We intend to resolve that bug, but in the meantime our temporary workaround is to change the default webserver configuration settings to single-threaded mode, i.e.
BIGCHAINDB_SERVER_WORKERS=1
andBIGCHAINDB_SERVER_THREADS=1
. - Issues sometimes happen when a large transaction is sent to a BigchainDB network.
v1.3.0
Added
- Metadata full-text search. Pull request #1812
Notes
- Improved documentation about blocks and votes. Pull request #1855
v1.2.0
Added
- New and improved installation setup docs and code. Pull requests #1775 and #1785
- New BigchainDB configuration setting to set the port number of the log server:
log.port
. Pull request #1796 - New secondary index on
id
in the bigchain table. That will make some queries execute faster. Pull request #1803 - When using MongoDB, there are some restrictions on allowed names for keys (JSON keys). Those restrictions were always there but now BigchainDB checks key names explicitly, rather than leaving that to MongoDB. Pull requests #1807 and #1811
- When using MongoDB, there are some restrictions on the allowed values of "language" (if that key is used in the values of
metadata
orasset.data
). Those restrictions were always there but now BigchainDB checks the values explicitly, rather than leaving that to MongoDB. Pull requests #1806 and #1811 - There's a new page in the root docs about permissions in BigchainDB. Pull request #1788
- There's a new option in the
bigchaindb start
command:bigchaindb start --no-init
will avoid doingbigchaindb init
if it wasn't done already. Pull request #1814
Fixed
- Fixed a bug where setting the log level in a BigchainDB config file didn't have any effect. It does now. Pull request #1797
- The docs were wrong about there being no Ping/Pong support in the Events API. There is, so the docs were fixed. Pull request #1799
- Fixed an issue with closing WebSocket connections properly. Pull request #1819
Notes
- Many changes were made to the Kubernetes-based production deployment template and code.