v2.3.0 Release Notes - November 18, 2020
What's New in Hyperledger Fabric v2.3
Hyperledger Fabric v2.3 introduces two new features for improved orderer and peer operations:
- Orderer channel management without a system channel
- Ledger snapshot
See the What's New documentation for more details about these new features.
Fixes
All fixes as of v2.2.1 have also been applied to v2.3.0. Additionally the following fixes have been made.
FAB-18244: orderer - Single node orderer will not start due to inconsistent state
If using a single node orderer, it was possible to get into an inconsistent state where
a Raft WAL snapshot was taken but an in-flight block at the associated height is not yet written.
This fix resolves the inconsistent state by writing the last block, so that the
single node orderer can start.
FAB-18192: orderer - Consenter certificate validation fails when MSP is not part of existing configuration
If adding an organization MSP and a Raft consenter in the same configuration update transaction, validation fails
with error "consensus metadata update for channel config update is invalid" "certificate signed by unknown authority".
This fix adds logic to verify consenters based on the updated set of organization MSP root CAs.
FAB-18308: peer and orderer - Restore support for MSPs that contain RSA certificate authorities
While Fabric has never supported RSA for transaction signatures or validation,
certificate authorities included in MSP definitions could be associated with
RSA keys. This ability was inadvertently removed during the development of
release 2.0 and prevented migration of some networks to a 2.x version. With
these changes, version 2.x components will no longer panic when attempting to
initialize MSPs that include CA certificates associated with RSA keys.
peer and orderer PKCS#11 - Always Finalize the PKCS#11 FindObject Operation
In certain error paths, a PKCS#11 session was not finalized, leaving the session
in a locked state so that it could not be reused.
This fix finalizes session handles even in error paths, so that the session can be reused
by subsequent calls.
orderer - Allow tick interval override via orderer.yaml
If a raft network becomes unstable, sometimes, adjusting the tick
interval duration can be effective to restore it. However, the tick interval is
stored in the channel configuration, so if the network is not operational,
modifying it is very challenging. This fix adds Consensus.TickIntervalOverride
option to orderer.yaml configuration, allowing the channel configuration parameter
to be overridden from the local configuration.
Changes
Require orderer file ledger location to be set
The Orderer.FileLedger.Location must now be set. Utilizing the
Orderer.FileLedger.Prefix to generate a new temporary directory
with the specified prefix every time the orderer is restarted
is no longer supported. The orderer will panic if a location is
not provided.
FAB-18298: orderer - Default values for General.Cluster.ClientCertificate
and General.Cluster.ClientPrivateKey
If orderer.yaml configuration options
General.Cluster.ClientCertificate
and General.Cluster.ClientPrivateKey
are not set,
default them to the server General.TLS.Certificate
and General.TLS.PrivateKey
values
when the orderer is not configured to use a separate cluster port.
This change simplifies orderer node configuration by not requiring the client certificates to be explicitly set.
Dependency updates
Bump Go to 1.14.12.
CouchDB 3.1.1 is now the tested CouchDB version.
Changes:
- ec81f3e Release commit for v2.3.0 (#2144)
- 2ff4e0e Clarify clientRootCAs guidance in core.yaml
- 4c4ddfc Clarify clientRootCAs guidance in core.yaml and TLS docs (#2142)
- bc33cbb [FAB-18322] Check panic message in TestInitializeServerConfig (#2140)
- 504caaf What's New documentation for v2.3.0 (#2126)
- e7b81ba Update core.yaml, orderer.yaml and docs for TLS (#2141)
- d5ed80d Add release note for RSA CA changes
- a09f0e7 Add integration test for MSPs with RSA CA certs
- 52f511d Restore RSA support for x509 public key import
- c545195 Deploy production ordering service doc
See More
- 5f2034f Add check for invalid key before hitting couchdb (#2133)
- 1f6fb08 Chan.Part.API: Onboarding and follower CFT IT (#2094)
- 39a8545 Fab-18337 Ch.Part.API: Test join system channel with app channels (#2128)
- ab55d50 Add persistent volume note to peer deploy guide
- cb683e5 Chan.Part.API: avoid flakiness after removing system channel (#2111)
- 48bf409 [FAB-18319] Ch.Part.API: IT Remove and rejoin channel from orderer (#2085)
- 7055007 Nominate Will Lahti as Fabric Maintainer
- c174728 [FAB-18179] Channel Participation API Tutorial
- c08c5e3 Update v2.3.0 release notes
- 09c0d75 Revert "[FAB-18179] Channel Participation API tutorial"
- 40e845b [FAB-18179] Channel Participation API tutorial
- 1f59e41 Remove unused type (#2120)
- d997115 Update Contribution guide to point to RFC process
- 01bfbba Update Go to 1.14.12
- 4a7efe9 Remove custom errors from pvtdata store
- 5dcdf81 Remove custom error types from txmgr package
- 24868e9 Remove custom error types (#2110)
- cd99b4e Enforce Admin.TLS.ClientAuthRequired in orderer config (#2107)
- a01cda4 Allow osnadmin to connect without TLS (#2106)
- 7f6b5dd [FAB-18315] Ch.Part.API: Add remove failure metric for chain status (#2108)
- b9a8338 Add snapshots to peer deploy checklist (#2109)
- 4f1e093 kvledger/test for snapshot generation and bootstrap
- e5ebb7b Remove the temp folder on error during snapshot generation (#2104)
- 941f0af Document additional snapshot considerations
- f1058a8 [FAB-18333] Fix panic in cluster/comm#TestRenewCertificates
- 4e7201b Revert "Allow BCCSP config to be set using env var (#1900)" (#2093)
- b8f76ae Remove Jira screenshots (#2103)
- ca26271 Redirect integration test logs to GinkgoWriter
- cd623d7 Update Jira instructions in contributing guide
- 01394c7 Chan.Part.API: Rename pendingops/joinblock to pendingops/join
- 45afdbd Update channel_update_tutorial.rst with joinbysnapshot
- 421dddf Remove unimplemented funcitons
- c590e37 Prevent race that occurs after test timeout
- 901fe6c [FAB-18329] Fix data race in cluster/comm_test#TestRenewCertificates (#2089)
- 73853ef Chan.Part.API: join system channel using config block IT (#2082)
- 1e90c88 osnadmin command reference (#2077)
- 4b134cf Chan.Part.API: Rename cluster relation to consensus relation (#2086)
- d54ed92 Chan.Part.API: channel participation relation/status metrics (#2025)
- cc77194 Ch.Part.API: Allow retry of failed removals (#2083)
- 1f372da [FAB-18318] IT: verify DUPLICATE_TXID error when resubmitting old tx on a peer bootstrapped from snapshot (#2084)
- 6a56a06 Update configtxgen log messages for app chan genesis block (#2076)
- 7f6ead9 [FAB-18132] Ch.Part.API: Remove ledger resources asynchronously (#2027)
- 17f075c Add function TxIDExists and use in validation path
- d620ab3 [FAB-18298] Default cluster cert and key
- 636c361 Rename cluster relation member to consenter (#2079)
- 348e2c7 Add default snapshot directory to core.yaml (#2068)
- 4db7e4c Add osnadmin to Makefile
- 2b1b989 [FAB-18290] Add channel name to pvtdata reconciler log msgs
- c15e44e Minor refactoring
- a37ea5c Minor Refactoring
- bf57390 Optimize importing snapshot data into pvtdatastore
- 596f720 [FAB-18307] IT: set deprioritizedDataReconcilerInterval to prevent CI flake (#2070)
- 32da54c [FAB-17953] IT: add tests to verify channel config can be retrieved on a peer bootstrapped from snapshot (#2064)
- 91af918 IT: Add ACL test for snapshot related CLI cmds (#2061)
- ea81d21 osnadmin CLI (#1907)
- d7b1ed1 Chan.Part.API: config-tracker IT flake fix
- b106d05 Updated comment for channel participation API
- 0d4c878 Fix link in snapshot doc
- 8620090 Use -c instead of -C for channelID in snapshot cli cmds
- 0edadac Peer snapshot documentation
- fac5bd1 [FAB-17953] IT: verify pvtdata reconciliation when bootstrapping by snapshot (#2052)
- 46cdc03 [FAB-17800] Update peer node command doc
- 2bf53e6 FAB-18291 Ch.Part.API: BlockPuller that can be stopped (#2050)
- 067f09b FAB-18301 Registrar.JoinChannel takes the wrong lock type (#2058)
- e4c54fa Chan.Part.API: config-tracker IT
- 275b545 [FAB-17800] Update reset/rollback/rebuild/upgrade_dbs cmd descriptions for snapshot
- dd22478 Add function GetChannelConfig in cscc and use in peer client
- 8758bde Update fabric-protos-go dependency (#2057)
- dedcf42 Add doc files for peer snapshot commands
- cf678be Cleanup system channel w/ genesis block IT (#2055)
- 8899f5a Avoid duplicated follower chain.Halt()
- 286293a s/assert/require in orderer/common/follower UT
- a216637 check if desired version of samples exists
- 0d4e6ed Fix CouchDB tutorial queries
- c9439d8 [FAB-18130] Chan.Part.API: Creating the system channel with a genesis block, so no onboarding is
- 2198c09 Minor refactor/log change for orderer startup
- 62a8808 Rename channel particicpation CFT filerepo directory to pendingops
- 8f7e37a Chan.Part.API: IT cleanup/improvements
- 44caec4 nwo.GetConfigBlock retry until success
- 687f58d Refactor and export pvtdata test funcs for marbles_private chaincode (#2048)
- b810925 FAB-18283 Ch.Part.API: StatusReport on evicted etcdraft.Chain (#2049)
- 2c921bc Return errors in rollback/rebuild commands when using snapshots
- a143ea9 Minor update to joinbysnapshot cmd response msg
- d59af2c Expose new Admin endpoint on orderer for the channel participation API (#1939)
- 60b5053 Update location of snapshots folder in IT
- e071f57 [FAB-17953] Add integration tests for snapshot feature (leveldb and couchdb, no pvtdata)
- 105aeeb Make snapshots folder directly under <peer.fileSystemPath>
- 44f6ef5 Pass channel config to service discovery
- 90733a0 Log TLS handshake duration (#2032)
- 7b2b9f0 [FAB-18082] Make RemoveChannel crash fault tolerant (#1952)
- 91886f6 FAB-18108 Ch.Part.API: simplify follower.Chain flow control (#2026)
- d0eb424 Update tests to use CouchDB 3.1.1
- 48d532f Deduplicate orderer server TLS root CAs (#2029)
- 3c57d11 Copy Into Correct Slice To Ensure Keystore Password is Set
- c6f07dd FAB-18276 Ch.Part.API: extractSystemChannel must skip empty ledger (#2023)
- 69bc731 Remove common name from private data doc
- 0ae1f5a FAB-18198 Ch.Part.API: Restructure registrar init (#2015)
- 56118d0 IT - update MSP and consenters set in single config update
- da83764 Update Nikhil Gupta's email address in maintainer file
- d43e5dd Add stringer for channelID type (#2016)
- 0ee3295 Persist complete collection in the private blockstore (#2010)
- 4e2ac6f [FAB-18270] Disable debug of CouchDB response body
- 192b03b [FAB-17800] Reset/Rollback returns error if a channel was bootstrapped from a snapshot (#1990)
- 9d02571 Fix bug in consenter cert validation logic
- 330dc72 Chan.Part.API: test member to follower transition
- ecf0bb7 Miscellaneous channel participation IT cleanup
- b0a7291 Peer deployment guide
- 02ff2a3 UT improvements for common/blockledger/fileledger (#1998)
- 9adde2e Update help text in test net tutorial
- e6fcef5 Update release docs
- 60fa282 Fix Node OU error message
- 114f030 Shutdown blockstore (if open) before dropping ledger (#1992)
- f79abaa Add Troubleshooting topic to Test Network for Docker Desktop setting
- 8c684eb Avoid panic when re-attempting system channel removal
- 49dbea4 Allow tick interval override via orderer.yaml (#1981)
- 3f93c17 Improve consistency with channel participation errors (#1974)
- 4b1e6b7 Fix chaincode lifecycle tutorial invoke
- f5201e9 Minor Fix - Add channelID in snapshot mgmt logs
- 568e08c Private data edits
- 99d7182 Always Finalize the PKCS11 FindObject Operation
- 335de61 Add high level logging for snapshot generation and bootstrap from a snapshot
- 9ab2d38 Couchdb indexes during bootstrap from a sanpshot for legacy chaincodes
- 5455e2f [FAB-18111] Add docs for DevMode using new lifecycle
- 886d3cc FAB-18192 Fixed TLS certs validation for consenters. (#1888)
- e904f0e Fix table width issue
- e264d1b FAB-18244 single node catches up with snapshot (#1964)
- f4a612c Corrected to capitalized function names.
- 37b2bff Validate pvt-data during reconciliation for bootstrapped ledger (#1947)
- 4afc136 [FAB-18235] Properly handle Newest when a peer is bootstrapped from a snapshot (#1936)
- 0a9f766 Allow BCCSP config to be set using env var (#1900)
- fa0213f [FAB-18127] Chan.Part.API IT: Join as follower (#1861)
- 20eb852 Updates in master for v2.2.1 release
- 3935378 Add two and three digit publishing
- fb3ad73 Discover CLI fails fast when given inappropriate certificate file
- 79a4e01 Fix orderer/common/multichannel flake when removing channel
- 03375dc Fix TestKeyCache
- a288fe4 [FAB-18250] Check Error Before Returning Session to Pool
- fc0c3e2 Chan.Part.API: Int test for forbidden join actions
- d52a9e8 Chan.Part.API: Int tests for forbidden actions w/ system channel
- 5f09b3b Private data tutorial edits
- 69bd5cf Remove escc and vscc from list of system chaincodes
- a11fa5f Enable pvtdata store to receive pvtdata hashes during bootstrap (#1927)
- 356bf04 Fix empty address in peer CLI ClientWait log
- 1eec843 Remove GetSessionInfo Call
- bf5917f [FAB-18234] Add joinbysnapshotstatus CLI command (#1910)
- d083849 [FAB-17691] Add BootstrappingSnapshotInfo to BlockchainInfo (#1922)
- 646260e Bug Fix: Saving big payloads by cache CouchDB (#1909)
- 3a8440d Fix flakey raft/cft integration test (#1916)
- 5152bea [FAB-18234] Update fabric-protos-go dependency (#1919)
- 5bcb5e0 Implement interface SnapshotPvtdataHashesConsumer for pvtdata store (#1908)
- e801c2f [FAB-17691] Update fabric-protos-go dependency (#1914)
- d76553a [FAB-18237] always update stateInfo message upon chaincode update
- bbc5f5f [FAB-18164] Change CreateLedgerFromSnapshot to async (#1889)
- 17858a5 Update 'Using Private Data in Fabric' tutorial
- d67feb1 Bugfix in collection config history mgr
- b89e02b [FAB-18235] Update fabric-protos-go dependency (#1899)
- 379f6f0 Clarify tlsHandshakeTimeShift CLI help text (#1896)
- 39601e2 Update write_first_app.rst
- 5a372b9 Correct the explanation for signcerts in Membership section
- 6bf0542 address review comments (#1890)
- ebfd084 FAB-17911 Ch.Part.API: join system channel (#1884)
- 91f0866 pass unreconciled data to the pvtstore commit
- de6c1fa minor refactoring of missing pvtdata retrieval test
- fd8559f add config for deprioritized missing data access interval
- 2b9694d FAB-18233 Ch.Part.API: BlockPuller verify skip-genesis (#1885)
- ca9b032 Ch.Part.API: Save joinblock on JoinChannel (#1608)
- 4ce4e10 Adding notes for the usage of script during samples install
- cbf16f0 Peer CLI communicate with orderers with expired TLS certs (#1863)
- 298695a [FAB-18171] Update Raft administration guide
- 31ae545 FAB-18210 private halt() respect exported Halt()
- 9b2cada Chan.Part.API: remove system channel IT
- c22382d Chan.Part.API: implement remove system channel
- cd6ce4a [FAB-18208] Do not sign gossip message if membership is empty
- 65d0b62 Fix data race in gossip/discovery test
- 331d950 FAB-18204 Ch.Part.API: decouple multichannel and etcdraft (#1862)
- 20bd103 Minor doc fix to clear Sphinx local build error
- e7830f8 Remove dead code from gossip/state.go (#1866)
- b534995 Create statedb indexes when creating ledger from snapshot (#1864)
- d5c0fe2 [FAB-18126] Chan.Part.API IT: Join as member
- 195d69e Format code in chaincode docs
- 6179383 FAB-17915 Ch.Part.API: switch member to follower (#1847)
- 0c10c0a [FAB-18194] Fix service discovery for legacy installed chaincodes
- 75d4c8d pass unreconciled missing data info to ledger from reconciler (#1797)
- 737a116 Update RTD Placeholder
- adb5884 [FAB-18191] Remove contents of leveldb dir instead of the dir itself when dropping dbs (#1828)
- 98e706c deprioritize unreconcilable missingPvtData (#1721)
- 2ec0485 [FAB-18125] Remove removeStorage flag from channel participation API (#1780)
- 2b27d51 Fixes softhsm default config path
- 5f89938 Populate metadata-hint db from snapshot files (#1826)
- e43b104 Document the doc-merge label
- ddffd90 Update Doc Build Process Doc
- ceb56c7 Revert "[FAB-18183] Bump sphinx in requirements.txt to v1.8.5"
- fd56abb Use proto message for statedb snapshot export (#1805)
- bd7180c [FAB-18188] Log orderer and peer cert expiration date upon startup (#1804)
- 47bcd5b Revert "Peer deployment guide"
- f209329 Peer deployment guide
- 8c684ba [FAB-18117] Add policy checking to snapshot grpc service (#1791)
- 3386c80 [FAB-18120] Adding DevMode integration test for new lifecycle.
- 23088b6 [FAB-18169] Add DevMode support in ChaincodeEndorsementInfoSource
- f54d3cd [FAB-18171] Disregard certificate validity period in intra-orderer communication (#1771)
- 01d28e5 FAB-18076 Ch.Part.API: Registrar init with followers (#1746)
- 135341e Chan.Part.API IT: Join as follower and transition to member (#1735)
- edacd27 Use pointer type for embeded composite struct
- aee9af3 Add log messages before and after snapshot generation (#1798)
- 545754c [FAB-18117] Add SignatureHeader to request msg when calling snapshot service (#1790)
- c0f8797 Use blocknumber instead of height for snapshot related code (#1792)
- 57f2834 [FAB-18183] Bump sphinx in requirements.txt to v1.8.5
- abe29cc Bump grpc to v1.31.0
- 85ca436 Add instructions for how to use @Mergifyio backport command
- 1e91646 Rename bccsp/pkcs11#impl bccsp/pkcs11#Provider
- 7d3aa25 Use separate provider instances in tests
- 87458b0 Reduce test duplication in bccsp/pkcs11
- aa0f921 Remove bccsp/pkcs11#config
- c84fd9a Remove unused fields from pkcs11#config
- f55ef45 Isolate softVerify to impacted test paths
- 82b867f Move {sign,verify}ECDSA to pkcs11.go & rm ecdsa.go
- c16eaad Remove unused argument to unexported ECDSA funcs
- 3696e30 Remove TestSHA from bccsp/pkcs11 tests
- 7b259b5 Add explicit test for config#setSecurityLevel
- bb70d42 Use test helpers and table tests in bccsp/pkcs11
- 19ed8eb fix typo 'Udpate' -> 'Update'
- fc50934 Pass initializer to pvtdatastorage OpenStore to indicate ledger is created from snapshot (#1783)
- 01ffdf4 [FAB-18117] Update fabric-protos-go dependency (#1782)
- fa988ef Update test network help text in tutorial
- 1bec00c [FAB-18162] Add channel joinbysnapshot CLI cmd and peer side support (#1760)
- bd76974 Fix dead links and old links
- 8be3ebd Add links for Go and Java sample applications
- 606fb74 Remove commented out type definition (#1772)
- 023b707 Cache bccsp keys generated from getECKey
- 37984d5 Add object handle cache to PKCS#11 bccsp provider
- 7393645 Make ecPoint a method on impl
- c6c8017 Make findKeyPairFromSKI a method on impl
- 36fe38b Replace loadLib with initialize method
- bebe5c5 Merge pkcs11/impl.go and pkcs11/pkcs11.go
- 81df86d FAB-18177 Flake in registrar unit test (#1770)
- 3b62ca4 Improve cc-launcher note on peer image
- 29e6571 Refactor tutorial to 'Writing Your First Chaincode'
- 87adee2 Update docs to replace fabcar references with basic asset transfer
- 97213db Bug fix for pvtdata hashes consumer (#1764)
- 104e61c Revert "Refactor tutorial to 'Writing Your First Chaincode'"
This list of changes was auto generated.