v2.4.0-alpha Release Notes - April 15, 2021
New features
FABGW-1: Fabric Gateway Technical Preview
The Hyperledger Fabric v2.4.0 Alpha contains a technical preview of the new Fabric Gateway feature.
The Fabric Gateway is a new component that will implement much of the high-level 'gateway' programming model in the Fabric peer,
enabling the removal of much of the transaction submission and query logic from client applications, and shifting it to a common gateway component running within the Fabric peer.
The various client SDKs can therefore be slimmer, more consistent, and require less maintenance.
The Fabric Gateway will also simplify the administrative overhead of running a Fabric network because client applications
will be able to connect and submit transactions via a single network port rather than the current situation where ports
have to be opened from a client application to multiple peers across potentially multiple organizations.
The Fabric Gateway technical preview is delivered along with slim SDKs in the https://github.com/hyperledger/fabric-gateway repository,
along with client application samples.
Improvements
peer and orderer - Implement legacy name constraints verification for Go 1.15
These changes reproduce the Go 1.14 name constraint verification in the MSP.
Without these changes, certificate chains that would fail verification in Go 1.14 would
successfully validate in Go 1.15 due to the change mentioned in the Go 1.15 release notes.
Specifically, if a signing certificate contains a name constraint, the leaf certificate
does not include SAN extensions, and the leaf's common name looks like a host name,
then the additional verification is performed to ensure deterministic behavior relative
to prior Fabric releases.
peer and orderer - Default log record format improvements
Expanded the width of the log record sequence number to a minimum of four characters,
moved the log sequence number and log level to the left,
and added bold formatting to the function name.
These changes keep the fixed-width columns together at the left
and add a visual break between the logging module name and log message text.
Fixes
All fixes as of v2.3.1 are included in v2.4.0-alpha. Additionally, the following fixes are made in v2.4.0-alpha.
FAB-18427: orderer - Report correct reason of stream abort in orderer cluster
This commit fixes a bug that makes the cluster communication infrastructure
always report an "aborted" reason after a stream terminates.
FAB-18424: peer - Ledger snapshot request submission with special value "blockNumber 0"
If a ledger snapshot request is submitted with the special value "blockNumber 0", peer is expected to translate the request to last committed block.
This patch fixes the issue where, it may happen sometimes that the request is translated to block number 1 instead of last committed block.
This leads to the situation where no snapshot gets generated, including any future snapshot requests.
If you have ever used this special value, we encourage you to check the list of pending snapshots requests with peer snapshot listpending
.
If you notice one or more pending requests that are for the the block numbers lower than the latest committed block, cancel such requests with peer snapshot cancelrequest
to enable the further snapshot requests to be processed.
FAB-18304: peer and orderer - Fix leveldb manifest corruption
This fix updates the version of goleveldb. The prior version of goleveldb had a bug which
could cause manifest corruption in crash scenarios, especially in disk full crash scenarios.
With a corrupted goleveldb database, the peer or orderer would fail to start with error
"panic: Error opening leveldb: leveldb: manifest corrupted".
Dependencies
Fabric v2.4.0-alpha has been tested with the following dependencies:
- Go 1.15.7
- CouchDB v3.1.1
- Alpine images 3.13
Deprecations (existing)
FAB-15754: The 'Solo' consensus type is deprecated.
The 'Solo' consensus type has always been marked non-production and should be in
use only in test environments, however for compatibility it is still available,
but may be removed entirely in a future release.
FAB-16408: The 'Kafka' consensus type is deprecated.
The 'Raft' consensus type was introduced in v1.4.1 and has become the preferred
production consensus type. There is a documented and tested migration path from
Kafka to Raft, and existing users should migrate to the newer Raft consensus type.
For compatibility with existing deployments, Kafka is still supported,
but may be removed entirely in a future release.
Additionally, the fabric-kafka and fabric-zookeeper docker images are no longer updated, maintained, or published.
Fabric CouchDB image is deprecated
v2.2.0 added support for CouchDB 3.1.0 as the recommended and tested version of CouchDB.
If prior versions are utilized, a Warning will appear in peer log.
Note that CouchDB 3.1.0 requires that an admin username and password be set,
while this was optional in CouchDB v2.x. See the
Fabric CouchDB documentation
for configuration details.
Also note that CouchDB 3.1.0 default max_document_size is reduced to 8MB. Set a higher value if needed in your environment.
Finally, the fabric-couchdb docker image will not be updated to v3.1.0 and will no longer be updated, maintained, or published.
Users can utilize the official CouchDB docker image maintained by the Apache CouchDB project instead.
FAB-7559: Support for specifying orderer endpoints at the global level in channel configuration is deprecated.
Utilize the new 'OrdererEndpoints' stanza within the channel configuration of an organization instead.
Configuring orderer endpoints at the organization level accommodates
scenarios where orderers are run by different organizations. Using
this configuration ensures that only the TLS CA certificates of that organization
are used for orderer communications, in contrast to the global channel level endpoints which
would cause an aggregation of all orderer TLS CA certificates across
all orderer organizations to be used for orderer communications.
FAB-17428: Support for configtxgen flag --outputAnchorPeersUpdate
is deprecated.
The --outputAnchorPeersUpdate
mechanism for updating anchor peers has always had
limitations (for instance, it only works the first time anchor peers are updated).
Instead, anchor peer updates should be performed through the normal config update flow.
FAB-15406: The fabric-tools docker image is deprecated
The fabric-tools docker image will not be published in future Fabric releases.
Instead of using the fabric-tools docker image, users should utilize the
published Fabric binaries. The Fabric binaries can be used to make client calls
to Fabric runtime components, regardless of where the Fabric components are running.
FAB-15317: Block dissemination via gossip is deprecated
Block dissemination via gossip is deprecated and may be removed in a future release.
Fabric peers can be configured to receive blocks directly from an ordering service
node by using the following configuration:
peer.gossip.orgLeader: true
peer.gossip.useLeaderElection: false
peer.gossip.state.enabled: false
FAB-15061: Legacy chaincode lifecycle is deprecated
The legacy chaincode lifecycle from v1.x is deprecated and will be removed
in a future release. To prepare for the eventual removal, utilize the v2.x
chaincode lifecycle instead, by enabling V2_0 application capability on all
channels, and redeploying all chaincodes using the v2.x lifecycle. The new
chaincode lifecycle provides a more flexible and robust governance model
for chaincodes. For more details see the
documentation for enabling the new lifecycle.
Changes:
- 06509ad v2.4.0-alpha release notes
- 4365412 remove redundant slice cast
- 5d500ee Fixed Typo
- d001dbc Add debug for gateway endorsement requests (#2538)
- 4cfc722 Skip plugin tests when the noplugin tag is used (#2535)
- ba7e923 fix: fix typo
- dead74f Fixed Typo (#2533)
- c7dc5d7 Improve snapshot dir error message
- 3714ca3 Document ledger.snapshots.rootDir
- b1f4329 Simplify GitHub Action for AZP Triggering
See More
- a8bfc98 Update deploy_chaincode.md
- 345a08b Add Security Model topic to docs
- aefa755 Fix link in
international_languages.md
- a559b2c Fix timeout in orderer connection from gateway
- d88e09c peer: the 'noplugin' build tag disables plugins
- f5de431 FABGW-9 Select endorsers with max block height
- f4dba9d Fix old or incorrect contents in the doc build instruction
- 576d186 Fix the fix for race condition in Finder unit test (#2504)
- 1147977 Clarify private data doc for endorsement policies (#2502)
- 1cc0ed0 Clarify private data doc related to private data responses. (#2501)
- 7ac0b60 FABGW-8: Fix race condition in Finder unit test
- 62e327e FABGW-8: Implement Gateway CommitStatus service
- a1d06eb Wire function parameter to its actual usage (#2499)
- 4793d86 build(deps): bump jinja2 from 2.10.1 to 2.11.3 in /docs
- 54e27a6 Update "master" branch references to "main".
- c0ca3c2 Regression test for prev commit "Bugfix: loadLastConfig wrongly returns nil instead of error"
- a54199b FABGW-8: Hook commit notifier into Gateway service
- 13092bb Bugfix: loadLastConfig wrongly returns nil instead of error
- 18b78da integration: PKCS#11 SKI to CKA_ID mapping test
- 5484a18 pkcs11: Add SKI to CKA_ID mapping for BCCSP [ #11 ]
- 178de67 nwo: capture config file updates through network
- fffb2bf docs: Add some comments about untested code
- fd72843 Handle unsuccessful status from Gateway orderer send
- 9319f4a Prepared tx must be signed before submission
- ab79e69 FABGW-8: Tidy up commit notifier
- fad002c Gateway error logic refactor
- 5ff76d3 Tidy up gateway unit tests
- 76763d1 FABGW-8: Wait for transaction commits
- b40f703 platform/golang: loosen assertion for Go 1.16.2 (#2480)
- fd62c39 msp/mgmt: remove reflect based type assertion
- e5827c5 lscc: remove GetManagerForChain from prod code
- 2c7c37d peer: remove GetManagerFromChain from prod code
- ba6a87e peer: use MSPManager from bundle instead of mspmgmt
- 86d1d0a common: remove the unused common/config package
- 85dbd43 cscc: stop wiring policy.PolicyChecker
- 7204344 peer: remove NewConfigSupport and friends
- e2218d7 msp/mgmt: remove Setup/Deserialize wrappers
- c40cce0 msp/mgmt: remove LoadLocalMsp
- 50406fe msp/mgmt: remove LoadLocalMspWithType
- 8e3751a msp/mgmt: remove GetLocalSigningIdentityOrPanic
- c4eb80f peer: stop using GetLocalSigningIdentityOrPanic
- 10b09b9 msp/mgmt: move TestLocalMSP into mgmt_test
- 1dbd6e9 msp/mgmt: move MSPPrincipalGetter to policy
- bfa7dcf Remove unused policy checker from lscc
- e6a04b9 msp/mgmt: move DeserializersManager its user
- ed964d3 msp: construct DeserializersManager with local MSP
- 0c28b4e Update Gateway with latest fabric-proto-go version
- dc5ceca Implementation for commit notification events for embedded gateway.
- 73d6539 Gateway gRPC functions to return google.rpc.Status
- 8edf513 Update fabric-proto-go to latest version
- 2d81cb2 FABGW-6 endpoint factory to use refactored comms
- e71b99a Provide commit events from ledger (#2470)
- 69b636c Run
go mod tidy
with the latest Go version - 8209646 Remove un-needed casts in discovery_impl.go (#2469)
- 0afd404 Upgrade goleveldb
- 542f320 comm: move GetLocalIP to its caller
- acceb08 comm: move cert extraction to common/util
- ef156bd comm: move BindingInspector to its consumer
- a2f2fa5 comm: remove AddPemToCertPool
- 61ecf96 comm: remove GRPCClient structure
- 701ef16 comm: get dial options from config at new conn
- 505b917 comm: remove unused fixtures from testdata
- 1767b55 comm: remove TLSOption list from NewConnection
- 3a91146 deliverservice: update DialerAdapter signature
- a402702 deliverservice: replace CertPool PEM certs
- ac5fd79 comm: stop passing GRPCConnection to deliver svc
- 933ac90 comm: move ServerNameOverride to SecureOptions
- 5242742 comm: remove GRPCClient#SetServerRootCAs
- ca15dc4 comm: remove GRPCClient#TLSEnabled
- 8c7cb70 comm: move Certificate to SecureOptions#ClientCert
- 8ae44de comm: remove MutualTLSRequired from GRPCClient
- e7b9c38 comm: ClientConfig builds the grpc.DialOption list
- d944633 comm: rename ClientConfig#Timeout to DialTimeout
- 6281c0c comm: SecureOptions used to build TLSConfig
- e0fbdf3 comm: hang option accessors off KeepaliveOptions
- ab9ff14 comm: remove ClientConfig#Clone
- 4829636 Add a note explaining channel name restrictions on test network tutorial
- 9ac47b1 FABGW-6 Use concurrent go routines for endorsement
- 6279191 Initial gateway integration tests
- 4a37575 Update Prereq, Install, and SDK docs
- 15e95d6 Docs: Update Getting Started section with install commands and add links to asset transfer basic.
- e1915a3 Change name of comm msg size default consts
- 6a458ad Refactor max message sizes in comm client config
- 11636f5 Replace WaitGroups with channels and timeouts
- fda1ee7 hygiene: minor cleanup from previous commits
- b83dacf Replace Config interface with ConfigUpdate struct
- 7751eae hygiene: remove camelCase import name
- 7a8e1de FABGW-6 Implement Submit()
- 7172484 protoutil: add CreateTx helper
- 21a800b integration: exercise osnadmin in the e2e suite
- e708729 osnadmin: add --no-status flag to remove Status
- e53b900 Add check-help-docs target to basic checks
- 7dc4d03 integration: throttle grpc/http client creation
- 9c3a732 integration/ledger: rename commitTx argument
- 2f78967 Add tools target for the tools docker image
- 5bad6ae deps: bump fabric-config to v0.1.0
- e0253ef Fix images in network concept and upload new diagrams power point
- c4e6a48 Increase build timeout for integration/pluggable
- 24da29e integration: remove use of internal/peer/chaincode
- 6108e5b integration/nwo: add grpc.ClientConn accessors
- d32d1e6 integration/lifecycle: refactor RestartNetwork
- 95cb08a Bump Alpine to 3.13
- 51cf708 Add Alpine Version to Tools Image
- c73a680 integration: replace custom function with matcher
- 3b15d60 integration: move templates to nwo/template
- 6a28a35 integration: remove yaml network definitions
- b3e6036 integration: remove helpers package
- b22af03 integration: move runners under nwo/runners
- 44abc6b Fix bug in snapshot request submission
- f0584c6 Report correct reason of stream abort in orderer cluster
- db0a864 Log stream total lifetime
- 6c3dcc4 integration/raft: use nwo.Signer
- 28b9f00 integration/kafka: use nwo.Signer
- 99e8cd5 integration/ledger: use nwo.Signer
- 8279188 integration/pvtdata: use nwo.Signer
- bd2c193 integration/lifecycle: use nwo.Signer
- ff7f98d e2e: replace common/signer with nwo.SigningIdentity
- f832807 nwo: add nwo.SigningIdentity and accessors
- ecaf697 Disable connection pool in operational clients
- d3d7e05 corrected organization labels
- 316cdcd corrected Org1 text in Org2 box to Org2
- ed8d556 Only run Kafka suite and ccenv-1.4 test on amd64
- 54ae5c7 Remove Kafka test from integration/network
- 4090606 Use busybox image for cc platform pull/build test
- 7dc39a4 add linux/runtime.GOARCH to legacy cc package deps
- 84b332d deps: bump golang/snappy for arm64 fixes
- 33886a4 Add binutils-gold to resolve link failures
- 5caf9f2 Fix a duplicate message while orderer setting up
- f9d05b3 Update x509.CertPool equality checks
- 9776d46 JoinBySnapshotStatus returns a string
- 1fdfe55 Isolate Kafka tests to their own suite
- 1467f20 Update build to use Go 1.15
- f840f9b Replace test cert fixtures with generated certs
- 862687a Format and errcheck test cert generation helper
- 03f9381 Implement legacy name constraints verification
- 975b28b Add test to assert on name constraint behavior
- ed2b330 Fix some typos in docs
- 5a581fd Change docker compose network name
- c57a0fb Fix typos in a "Developing Applications" doc
- ba465d0 Retire dormant Fabric maintainers
- dcf5d38 Re-encode ECDSA CRL signature during MSP setup
- 49c1c8c Add test to exercise signature validation change
- c6b0b7c Add release note template for future v2.4.0
- c032220 Update documentation to include Go SDK
- b366eae Move all fixed width log entry fields to the left
- 373420d FABGW-1 Move gateway server into the peer
- 96f24f9 Fix broken link in orderer deployment guide
- bd60dba Fix link in SECURITY.md
- 964e47a Replace certificate fixtures in etcdraft/consensus with certificates generated at runtime (#2370)
- 0146307 deps: bump hyperledger/fabric-*
- ac56acd Test network works with Docker Desktop version 2.5.0.1
- 457e670 Update AZP Service Connection Name
- e6aa947 Add Create a channel tutorial without a system channel and using test network
- f2a226c Fix typo in install.rst
- b042500 Updates in master for v2.3.1
- d71e87f deps: bump prometheus/client_golang
- ebff04e Add information about pkcs11-spy to devenv doc (#2344)
- 104caa0 Add to MAINTAINERS.md a link to the relevant doc
- 22f7547 deps: bump miscellaneous packages
- f0d6b9c deps: bump github.com/fsouza/go-dockerclient
- 4e74441 Add peer log message for failure to invoke chaincode (#2339)
- 6f5bf54 deps: bump gopkg.in/yaml.v2
- f0214bb Replace hostname with invalid IP address
- 15a33cc deps: bump testify
- 507b0c3 deps: bump zap
- 132dc45 Bumping pkg errors
- 1da235b Replace gofmt with the more opinionated gofumpt
- 8ddb55f Run gofumpt -l -s -w against the tree
- 825a5e4 Remove dead code
- 6745594 Use staticcheck as part of go linting
- 997e601 Address some more issues flagged by staticcheck
- 8df9e0d Address some issues flagged by staticcheck
- 0515d17 Test network does not work with latest Docker
- bbdb4e7 Small refactors to setup for #2323 (#2324)
- c583c29 Add comment to generated command documentation
- 9adbb41 Fix channelID flag reference in osnadmin help
- a7ef393 generateHelpDocs filters trailing space from text
- 06d5ad5 Avoid os.Exit behavior when an osnadmin test fails
- 2a9251c Rename --channel-id to --channelID in osadmin
- 125f7dc [FABGW-1] Add gateway configuration
- 52816d4 Participation edits to network concept doc
- 5b50aa5 Fix some wrong spelling in the README.md
- fcf5d40 Remove system channel from Test Network tutorial
- 5ef827a Fix the issue of Nil/Zero-length-byte-array value (#2305)
- 0744363 [FAB-15648] document update: Non-TLS orderer with etcdraft usage (#1678)
- df38822 Fix doc to handle $PWD containing whitepaces
- 72a3c8b Remove warming reference from couchdb_tutorial.rst
- 9b427da [FAB-18005] remove couchDB index warming
- a4a8520 Remove unreachable and unnecessary code in gossip membership
- 4fe9c76 Fix test network tutorial to deploy go smart contract
- bf40955 Update Brett Logan's Information
- 8555262 Orderer deployment tutorial update
- beec8f1 [doc] fix broken link
- 567614c Adjust etcdraft error assertions for go 1.15 (#2276)
- 00e644d [FAB-18398] Added osnadmin binary to tools image (#2275)
- f4c3dfc [FAB-18170] Endorsement policy page discusses NodeSDK
- bcc0b39 [FAB-18392] Clarify scope and limitations of test network
- 7a803a7 Remove GetSigningIdentity from MSP interface (#2265)
- e4f17eb [FAB-18252] Documentation should reference Java chaincode support
- e8c0d76 Add note to AnchorPeers in sampleconfig/configtx.yaml
- e208c7c Remove anchor peers from configtx.yaml tutorial (#2257)
- a76ba08 Update "add an org" tutorial to not use CLI
- 0a4066e FAB-16233 Improve UT - stop svc via explicit done channel (#2241)
- 36eec0d Split command in "add an org to network" tutorial
- eec9341 Add more details to logging specification examples
- 55d651e Minor create channel doc typos
- b744335 Even more edits to docs for participation API (#2208)
- c2fc776 [FAB-18315] Ch.Part.API: Create Swagger definition for API (#2113)
- 4220751 [FAB-18357] Generate certs for peer CLI tests (#2238)
- 16e1cbc Update image filter used by integration tests
- 33711c1 Remove redundant identity unmarshaling
- a953bbe [FAB-18382] Fix staticcheck issues in gossip/privdata
- b952638 Add Language Argument to DeployCC Calls
- 74a17d9 Update Wiki link for Hyperledger Caliper (#2225)
- 7da02d1 Check correct error
- cb7ca8a Fix staticcheck issues in gossip/discovery (#2215)
- 055b7e7 Fix staticcheck issues in gossip/comm (#2214)
- dc2e59b Update test_network.md
- 5f61ff0 [FAB-18378] Log warning when peer is lagging behind and cannot catch up
- b2b4b0f Remove string conversion and add error judgment (#2174)
- c31cfac Fix unusual dash character in channel participation tutorial
- 26c2baa More doc edits for system channel removal
- 72d5cc8 [FAB-17039] Skip retrieving pvtdata from transient store when txid is missing (#2183)
- 24459b0 Remove Short Names and Replace With Full Path in Fabric
- bc5416c FAB-16233 fail test with names instead of brutal panic
- c2e20aa Use Deliver to ensure leader elected after sys chan removal
- a321f6e Invert control flow to reduce indentation
- 6aed72a Remove old orderer deploy doc
- 25457a3 Edits to orderer and capabilities concept for participation API
- db22a37 [FAB-17954] Document CouchDB JSON determinism (#2187)
- 3b98a7b Fix name of CHANNEL_CONFIG_BLOCK in the Channel participation API tutorial (#2186)
- ba2607d Update README.md to include link to Fabric v2.3 documentation
- 5446f10 Orderer deploy guide edits for participation API (#2148)
- 9c41cbd [FAB-18339] CLI: rename GetCerificate to GetClientCertificate (#2146)
- 109bcb1 Fixes Hardened to Hardware
- 02b63bd remove repeated the
- 3406c35 update private-data sample instruction for Asset owner string
- 4d9fbdf Invert control flow to trim indentation
- 9890b37 Fix link to security bug reporting process (#2160)
- f2b7aec Fix typo in comment (#2158)
This list of changes was auto generated.