Skip to content


Choose a tag to compare
@lindluni lindluni released this 15 Apr 21:00

v2.1.0 Release Notes - April 15, 2020

What's New in Hyperledger Fabric v2.1

FAB-17357: Add endorser metric for simulation failure

Added metric endorser_proposal_simulation_failures.

FAB-14761: Limit concurrent requests to endorser and deliver services

Limits can now be placed on the number of endorser and deliver requests
that a peer will process at any one time. If a peer is already processing its
limit of requests, subsequent requests in excess of the limit will return an error,
and the client will need to retry the call. The limits are configured using the
following core.yaml properties:

  • peer.limits.concurrency.endorserService
  • peer.limits.concurrency.deliverService

FAB-17463: Allow peer to override implicit collection dissemination properties

The following config properties have been added to peer's core.yaml
for implicit private data collection dissemination:

  • peer.gossip.pvtData.ImplicitCollectionDisseminationPolicy.requiredPeerCount
  • peer.gossip.pvtData.ImplicitCollectionDisseminationPolicy.maxPeerCount

When a peer endorses a transaction that writes to its own organization's
implicit private data collection, the new properties will dictate how
many other peers in the organization the endorsing peer will attempt to
disseminate to (maxPeerCount), and how many peers must acknowledge receipt
of the private data before endorsement succeeds (requiredPeerCount).
These properties are applicable to all channels the peer has joined. The implication
is that requiredPeerCount has to be smaller than the number of peers in a channel
that has the lowest numbers of peers from the organization.

FAB-17279: Support collection level endorsement policies for discovery

v2.0 added an option to specify an endorsement policy at a chaincode's private
data collection level. Service discovery now supports this feature when the
collection name is passed to the discovery endorsers query.

Discover CLI now supports SEC 1 formatted private keys
Private keys that are generated with openssl ecparam (SEC 1 format) are now supported
with the discover CLI, in addition to the PKCS8 private keys that were already supported.

Dependency updates

  • Bump docker images to Alpine 3.11.
  • Bump Go to 1.14.1.
  • Bump Go grpc to 1.28.0.


All fixes in v2.0.1 have also been applied to v2.1.0. Additionally the following fixes have been made.

FAB-17441: approveformyorg lifecycle command should allow update of only package ID

approveformyorg lifecycle command now allows only the package ID to be updated.

Fix nil dereference in etcdraft config parsing

The etcdraft config parsing code checked that the consensus
metadata was not nil, but it failed to check that the options were not nil.
The additional nil checks have been added.

FAB-17517: Only Initialize specified BCCSP provider

When Fabric is built with GO_TAGS="pkcs11",
BCCSP attempted to initialize PKCS11 even when BCCSP is configured for software.
This resulted in error
"Failed to initialize local MSP: could not initialize BCCSP Factories: Failed initializing PKCS11.BCCSP"

FAB-17672: Prevent gossip probes from registering as long lasting connections

This fix helps to more quickly establish gossip connections when
peers are starting at the same time.

FAB-17726: Properly handle malformed gossip envelopes

Fix rare nil pointer panic at:
/opt/gopath/src/ +0x2e

FAB-17725: Omit go.mod and go.sum from package when not in module mode

In certain environments, it's possible to package chaincode that is structured
as a module from an active GOPATH. This often happens when the path provided
to the package command is an import path resolvable from the GOPATH instead of
a file system path.

If the package can successfully build in the packaging environment from the
import path, the chaincode dependencies are calculated and packaged from the
GOPATH for compilation as a traditional go package.

In this scenario where the code at the import path is structured as a module,
the go.mod would be included in the chaincode package as packaging always
includes all non-hidden files in the top level folder of the import path.

On the server, the presence of the go.mod implies that the build process
should execute in module mode. When the dependencies have been vendored in the
module, the build uses -mod=vendor flag to indicate the module requirements
should be satisfied from the vendor folder. Unfortunately, since the
chaincode dependencies were packaged using GOPATH mode instead of module mode,
there are some metadata files missing from the vendor folder that are expected
by the module mode build process.

To help prevent this from occurring, we will explicitly omit go.mod and go.sum
from top level folder of chaincode that is not packaged in module mode.

For the full list of changes, refer to the release change log:


  • 1bdf975 Fabric v2.1.0 release commit
  • 6cfea8b Add release notes for v2.1.0
  • 4fbbc88 [FAB-17719] Upgrade docs for 2.1
  • d50e8f4 [FAB-17724] Fix configtxgen cannot find etcdraft default config
  • c2e8534 [FAB-17716] Fix test flake due to too many requests for /protos.Deliver
  • 5358d6e Properly handle malformed gossip envelopes (#1039)
  • 0602969 [FAB-17540] Fix for race read/write tlsconfig (#967) (#1052)
  • 10ed627 Add release note for FAB-17725
  • 08df2e1 Omit go.{mod,sum} from pkg when not in module mode
  • d0d4a3f Clear {U,G}name fields in package tar entries
See More
  • 53eda41 Fix typo
  • 6334d22 Fix organizations typo
  • 0f23dad [FAB-16879] Add stack trace to couchdb http errors (#1015)
  • 6f4b196 Update chaincode lifecycle topic
  • 2f13c6c Update tutorials overview for test network
  • 32533a8 3 small fixes that documentation matches samples
  • a28ef41 Set default keepalive options for peer clients (#987)
  • c740f39 Update doc for Go v1.14.1
  • 99d3a8d Remove Config Transaction Package from release-2.1
  • 30e5862 Fix missing export instruction in docs/
  • 534ed60 Move comm pkg to internal
  • 7919e72 [FAB-17109] Retrieve and use ReConnectBackoffThreshold as duration (#951)
  • f293f92 mv encoding util to consumer (pvtdatastorage)
  • 25e3386 Fix code block typo in add org tutorial
  • 20dca4d Clarify instructions for CouchDB state database upgrade.
  • 8704abf Add discussion of MSP folder to test net doc
  • 5148730 [FAB-17687] Rename AddValue() to SetValue() (#946)
  • 0491bcd Refactor MSP-related pkg/config functions
  • 4d7d4ac [FAB-17638] Support retrieving application configuration from an existing config
  • 84e2338 [FAB-17658] Separate config package examples into groups
  • eb4623f [FAB-17408] Move first app tutorial (fabcar) to test network
  • 1cdd885 Update
  • cce54ab [FAB-17664] Add/Remove channel policies
  • 424807d Add jq to the vagrant development environment
  • 8ab138e Address comments from #928
  • b8e2e83 [FAB-17611] IT: discover all peers before endorsement
  • 8a012a0 Consistently use ubuntu-18.04
  • fa29042 Move to go 1.14.1 (#934)
  • 69da72e Remove x509 Utility
  • 4db1939 Remove Clone Utility
  • 1a3dab1 Remove DirMissingOrEmpty Util Function
  • d7c1796 [FAB-17663] Update a consortium group's channel creation policy value
  • 23ebd79 Update grpc to v1.28.0
  • e06bb3f [FAB-17675] Prevent gossip probe from registering as a connection (#925)
  • b5be754 [FAB-17637] Support adding and removing capability
  • 222f99a [FAB-17639] Add/Remove ACLs from channel config.
  • 4d515e0 [FAB-17619] Fix exported ConfigTx functions to retrieve/set correct field
  • 79fb075 [FAB-17619] encapsulate config proto in new type
  • 441fd13 [FAB-17650] fix incorrect word
  • edd5908 Update MSP config for application org
  • cdc2f68 Cleanup followup comments from FAB-17568
  • 4b9302e Ignore containers that are not part of the network (#909)
  • aa80495 Update sample channel config to 2.0 channel (#911)
  • 8c26dad [FAB-17621] Validate certificate when revoking
  • 6f7c37f [FAB-17621] Simplify Printf formatting of cert/key/crl in tests
  • d547002 Add link to Fabric chaincode lifecycle video
  • 7a85e0a Remove duplicate tests done with both legacy cc and new lifecycle cc
  • 9644d43 [FAB-17601] Fix CI flake due to unexpected pvtdata reconciliation
  • a4b2ab1 [FAB-17620] Address error handling in example_test
  • e914648 Fix master
  • 9468dbb Generate all certs and CRLs in pkg/config unit tests
  • 67cb2df AddOrgToConsortium shouldn't allow adding org that already exists
  • 0e178b4 [FAB-17574] Support adding an application org to a channel config
  • 25b268e [FAB-17620] Revisit reference types in config pkg
  • 7af853e [FAB-17568] Support retrieving orderer configuration from a channel
  • dacf97a [FAB-17636] Support retrieving capabilities from a channel transaction
  • 40cda0e [FAB-17568] Use custom API type for etcdraft ConfigMetadata proto
  • f092efc Change link in access control for policies
  • b03d600 [FAB-17592] Support removing an orderer endpoint from existing config
  • eb17803 Fix nits in function AddOrdererEndpoint
  • 66b9722 Remove unused function validateChannelHeaderType (#890)
  • ac367be Minor MSP-related cleanup
  • 1d92fca [FAB-17591] Support adding an orderer endpoint to existing config
  • ef436c9 Revoke certificate from application org MSP
  • e96618d [FAB-17546] Add rootCA to application org MSP
  • a247e32 Cleanup policies test in config package
  • f02f451 Reduce TestDBRequestTimeout timeout value (#885)
  • 76f999d Fix debug message
  • dfc600b Remove incorrect ref to SDK
  • a838c6b Add configtx.yaml link to channel update doc
  • 64d6c66 [FAB-17571] Implement adding/removing policies from orderer
  • 984c3e2 [FAB-17572] Implement adding/removing policies from consortiums orgs
  • 507734c [FAB-17570] Implement adding/removing policies from application
  • b3929ae Use session cache to reduce handshake time in test
  • 9ffdb2b [FAB-17635] Fix incorrect word in comment
  • aa9a468 grpc{logging,metrics} test flake updates
  • 69b5487 [FAB-17629] Correctly Compile Integration Test List
  • 7feb8c5 [FAB-17603] Add constants for consensus state
  • 12f5e39 [FAB-17603] Support consensus type state field in config value
  • 64bc161 [FAB-17569] Retrieve organization from configGroup
  • 1df5929 Call signal.Notify from main go routine
  • 15b735d Use WithOptions to register log hook in test
  • c063206 Stop excluding /vendor/ from conditional deps
  • a30cb24 Fix incorrect expression in comment
  • d7c9a5b Bump assertion library dependencies (#871)
  • a68440b Use correct *testing.T in sub-tests (#867)
  • c61a024 Fix LevelDB.Open failures in TestSpawnEtcdRaft (#869)
  • e80709e fix typo in comment (#860)
  • c43f945 Bump zap dependency [ go/zap#771 ]
  • 3617de2 [FAB-17623] Replace OrdererAddressesKey with EndpointsKey in orderer
  • 3affbf0 [FAB-17624] Handle net.Listen error in gossip unit test (#863)
  • 30efdab Fixed 2 typos (#861)
  • af7980f Fix data race at discovery (#859)
  • 481cf22 Discover CLI to support SEC 1 format private keys
  • 587a8d5 [FAB-17576] Cleanup MSP config retrieval logic [ #8 ]
  • 084db84 [FAB-17576] Support retrieving MSP configuration for a specific org
  • cc199be [FAB-17613] correcting misspelled words
  • 9c3172c Fix Test Flake in TestLedgerHeightFromProperties (#846)
  • 2794f98 [FAB-17573] Support adding organization to orderer group
  • 81b6160 Fix data race in TestHaltChainProcessing
  • c38e83d [FAB-17607] Fix some wrong word
  • 2671855 [FAB-17606] Fix the wrong word. Suported ---> Supported
  • db2e930 Fix data race in TestBlockingEnqueue (#850)
  • ff29da2 Fix data race in expiration UT (#847)
  • 88eff11 [FAB-17600] Fixes retrieve policies for a specific config group
  • 9489a75 BCCSP initialization cleanup
  • 9abe9e7 [FAB-17600] retrieve policies for a specific org
  • e31fe5f [FAB-17565] Add godoc example for NewCreateChannelTx
  • 7438fc2 [FAB-17552] Add godoc example for updating channel using pkg/config
  • ab2ecf0 fix the comment error
  • e07939f [FAB-17581] Increase gossip timeout to prevent test flake
  • 6582179 Move common/ledger/util/Buffer to consumer
  • 00bd23c [FAB-17517] Only Initialize specified provider
  • 6566d1b Update channel config in config integration
  • b8617f0 Avoid port conflicts in configtxlator tests (#826)
  • 554e10c Remove shared common/ledger/blockledger/mocks (#829)
  • 845b5ed Convert unnecessary config type references to values
  • 7315556 [FAB-17582] Use custom API type for FabricMSPConfig proto
  • f410279 Add integration test package that uses pkg/config
  • 300fb0c Move lifecycle tutorial to concept topics
  • b033c8d [FAB-17596] Remove unused Resources type from config
  • 79f180f [FAB-17561] Remove SkipAsForeign from config package
  • 3beba71 [FAB-17567] implement getAnchorPeers from application org (#812)
  • 304acfd Misc updates to test network tutorial
  • 0f1ce6b [FAB-17269] Create new deploy a Chaincode tutorial
  • bd0d710 Add deprecation notice to BYFN
  • 131c9e9 [FAB-17299] Support collection level endorsement policies for discovery support (#472)
  • 863433f Remove plugin_packages from
  • 136d361 [FAB-15570] Make peer functions synchronous
  • f6732d1 Use ephemeral port for TLSCA test
  • 044060c [FAB-17583] Simplify NewCreateChannelTx to only consider new application
  • ab56e81 The operations subsystem is a singular entity
  • a78e2da [FAB-17543] Support adding anchor peers to existing config
  • 9304dd3 Relax error assertion in health check test
  • 21fa648 fix typo in Anchor Peers
  • a90767c Update msp.rst (#691)
  • 789071c [FAB-17575] Encapsulate msp configuration at an organization level
  • fa59dda [FAB-17547] fix cache load configuration file unittest
  • 56fbcf5 Bump version of (#788)
  • 88e331b Fix conflict in pkg/config test
  • e054a8a [FAB-17529] Config package exported function and types comment hygiene
  • 5a066a2 [FAB-17535] Increase PushAckTimeout to prevent test flake
  • 5f6ea7d Revert "[FAB-17575] Encapsulate msp configuration at an organization level"
  • 1f72dc6 [FAB-17547] cache result of load configuration file
  • e8b882a [FAB-17575] Encapsulate msp configuration at an organization level
  • 4e68e59 [FAB-17535] Fix intermittent test failure in implicit_coll_test
  • 4afde7c [FAB-17544] Support removing anchor peers from an existing config (#765)
  • ce8e015 Wire disabled docker builder when docker disabled (#768)
  • 3c19833 Fixed typo word 'netwowrk' in
  • 9e59e94 Try to catch imports of gogo/proto during linting (#762)
  • a362c28 Cleanup Makefile - remove unused env vars
  • b4b2a95 Mailing list correction to Still Have Questions? document
  • b78d79b Fix duplicate AddOrgToConsortium
  • 8c1a290 [FAB-17510] Change AddOrgToConsortium() to modify the provided config
  • 9cf1196 [FAB-17529] More config package cleanup
  • 3d89ccf [FAB-17463] Allow peer to override implicit collection dissemination properties
  • f086a3c Revert "[FAB-17438] CA deployment guide (#751)"
  • e8673de Prepare for go 1.14 (#755)
  • 7ed2fe3 Replace gogo proto imports with golang proto (#757)
  • a3fb26a Add Public() to SigningIdentity
  • 592bd50 [FAB-16233] Mitigate test timeout in deliver test
  • 04d3bf2 [FAB-17438] CA deployment guide (#751)
  • 218b6b5 cmd/peer tests fail due to port conflict
  • 2d6debc missing word 'you' in
  • 5389a1d [FAB-17529] general cleanups for config package
  • 6cdc08f [FAB-17533] Change config package to use policydsl's FromString and remove fork of policyparser
  • 6f80693 [FAB-17533] Move policy dsl related logic to policydsl package
  • d2f0729 Signing-related cleanup in pkg/config
  • a2c9244 Remove proto compilation in contributing docs
  • fd00849 Fix unit test failure related to merge conflict
  • b4141f4 Update master references for v1.4.6
  • 6343d0b [FAB-17529] Reduce and clarify errors in pkg/config
  • 86c048e Implement function to add an org to an existing consortium
  • 3e4f04c [FAB-17469] Support updating orderer configuration
  • f032ff7 [FAB-17532]: remove unused parameters (#734)
  • ebe23a8 [FAB-17093] Add basic tests for protoext/decorate_test
  • dedc4e8 [FAB-17488] Compute a ConfigUpdate from a base and modified configuration transaction
  • deff589 Reformat Deployment Overview for RST (#723)
  • ebb529f [FAB-17530] Update Go Version to 1.13.8
  • 8161192 [FAB-17521] remove protoutil from policyparser tests.
  • 046253c Fix nil dereference in etcdraft config parsing
  • 627719d [FAB-17468] Attach signatures to config update
  • 0c1821d [FAB-17515] Support configuring BlockValidation policy for orderer group
  • 437d8ec [FAB-17487] Create config group for organization
  • cc3f58f [FAB-16957] Fix nil pointer panic flake in deliver_test (#704)
  • b4c3766 Add cURL with retry logic
  • b7a3eba [FAB-17523] Endorsing peer was not honoring RequiredPeerCount (#716)
  • 8aa64fa [FAB-17467] Create signature for config update
  • add77fa [FAB-17525] Fix peer panic for endorser metric labels (#721)
  • eb54d86 Add ending braces to ReadWrite set. (#722)
  • 447264e FAB-17524 rm custom CollectionAccessPolicy mock
  • f8a1a0b Optimize inquire.IsSubset (#710)
  • 9649b26 Fix Heading Size in Deployment Doc
  • 43f7474 [FAB-11240] Deployment guide doc (#554)
  • 8c37495 Update master references for v1.4.5
  • eeaeea9 Fix build error due to PR merging (#703)
  • 6dfec3c [FAB-19491] Do not disseminate pvtdata for other org's implicit collection
  • 9eaab49 [FAB-17466] Generate create channel transaction
  • 9f26222 FAB-16297 remove pvtdataStore initiation with non-zero blkHt (#701)
  • 43ff898 [FAB-17509] Handle all os.Stat errors in InitCrypto (#683)
  • 8dd5e2d [FAB-17059] Extend private data integration tests to cover case when a
  • b52075b [FAB-17059] Change collection membership eligibility checks to
  • a6b8132 Remove qscc concurrency limit
  • bee7154 [FAB-17453] 'peer lifecycle chaincode package' mandates does not need to init crypto
  • 8c095b7 Reduce execution time of platforms/golang tests (#680)
  • 81d5e62 [FAB-17472] Clarify doc and samples for NodeOU Certificate
  • b1d3c3c Remove redundant tests from core/cc package (#679)
  • 1f2ba16 Remove dead and irrelevant Jenkins references
  • 8080690 Limit concurrent requests to endorser/deliver services (#647)
  • 21724c4 [FAB-17462] Create signature for config update
  • 98b2b70 Remove unused code
  • 870264c Miscellaneous updates to doc
  • f4eed90 Add fabric-peer docker image readme
  • e5152fc Fix URLs that don't exist in ledger doc
  • 73ff25c [FAB-17479] Migrated Kafka cluster can be safely expanded later (#644)
  • 7d4e8f1 Fix fixed-width rendering in metrics doc
  • ff5e2da [FAB-14679] Update commercial paper tutorial for new
  • 3ddda88 Update link to Fabric research paper
  • 2f45180 Add link to policies topic to chaincode for operators (#659)
  • 54117fb Update Copyright for 2020
  • 7134abf [FAB-17492] Modify the test function name of the function ConcatenateBytes
  • cfee149 Explicitly enumerate orderer and peer metrics
  • 90ccd4b Add style guide to contributing.rst
  • 76999ea [FAB-16978] MSP Updates
  • 1f8a6f0 FAB-17484 Improve comments on maintenance filter
  • e22010d [FAB-17475] Documentation style guide
  • e498d32 fix typo
  • 8ccf64e [FAB-17192] Add unit tests for executeCommitter and commitUpdates (#621)
  • 34637b6 Minor simplification of ApproveChaincodeDefinition logic
  • a672575 Fix typo in package error message
  • ce939ab Remove execute permissions on data files
  • a68ff2a Remove 1.x video from 2.0 docs
  • 78c4e58 [FAB-17458] check LifecycleV20 capability before getting cc info (#608)
  • 7907a99 [FAB-17441] approveformyorg should allow update of only package ID (#560)
  • 0624345 Remove manifest-tool from gotools
  • 7dca15f [FAB-17190] Add unit test for statecouchdb buildCommittersForNs and buildCommitters (#567)
  • 5417f84 [FAB-17267] Move add an org to a channel tutorial to test network
  • 5f3eb76 Remove Fabric functionalities doc
  • 5a8bff5 Fix missed merge conflicts
  • ff14f61 Policies topic link fix

This list of changes was auto generated.