From af5d5df427d41dd1a8e83bdeeff79086be2b2060 Mon Sep 17 00:00:00 2001 From: David Enyeart Date: Thu, 16 Dec 2021 14:40:51 -0500 Subject: [PATCH] v2.4.1 release commit Update release notes, documentation, and scripts for v2.4.1. Signed-off-by: David Enyeart --- Makefile | 2 +- docs/source/install.md | 4 +- docs/source/whatsnew.rst | 12 ++++ release_notes/v2.4.1.md | 144 ++++++++++++++++++++++++++++++++++++++ scripts/bootstrap.sh | 6 +- scripts/install-fabric.sh | 4 +- 6 files changed, 164 insertions(+), 8 deletions(-) create mode 100644 release_notes/v2.4.1.md diff --git a/Makefile b/Makefile index 8d31705c040..ee053db8a40 100644 --- a/Makefile +++ b/Makefile @@ -47,7 +47,7 @@ # - verify - runs unit tests for only the changed package tree ALPINE_VER ?= 3.14 -BASE_VERSION = 2.4.0 +BASE_VERSION = 2.4.1 # 3rd party image version # These versions are also set in the runners in ./integration/runners/ diff --git a/docs/source/install.md b/docs/source/install.md index 6915ae08ed2..0b475ccb8e4 100644 --- a/docs/source/install.md +++ b/docs/source/install.md @@ -46,11 +46,11 @@ To view the help and available commands for the download script, please use the curl -sSL https://bit.ly/2ysbOFE | bash -s -- -h ``` -To download a specific release, pass a version identifier for Fabric and Fabric CA Docker images. The command below demonstrates how to download the latest production releases - `Fabric v2.4.0` and `Fabric CA v1.5.2`  +To download a specific release, pass a version identifier for Fabric and Fabric CA Docker images. The command below demonstrates how to download the latest production releases - `Fabric v2.4.1` and `Fabric CA v1.5.2`  ```shell curl -sSL https://bit.ly/2ysbOFE | bash -s -- -curl -sSL https://bit.ly/2ysbOFE | bash -s -- 2.4.0 1.5.2 +curl -sSL https://bit.ly/2ysbOFE | bash -s -- 2.4.1 1.5.2 ``` ## Notes diff --git a/docs/source/whatsnew.rst b/docs/source/whatsnew.rst index 2dab07153ac..b6008c2a53c 100644 --- a/docs/source/whatsnew.rst +++ b/docs/source/whatsnew.rst @@ -39,6 +39,17 @@ This command will be useful, for example, in the following scenarios: For more information, see the `peer lifecycle chaincode calculatepackageid` :doc:`command reference topic`. +'Chaincode as a service' builder delivered with fabric-peer image +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Starting in v2.0 chaincode can be run as a service by utilizing the external builder pattern for chaincodes. +Running 'chaincode as a service' has advantages in Kubernetes and other deployment environments since the chaincode can be managed independently rather than requiring the peer to build chaincode images and start chaincode containers at runtime. +The external builder pattern required you to deliver a builder script or program alongside the peer. + +Starting in v2.4.1 an external builder for 'chaincode as a service' is available in the Fabric release artifacts, and the 'ccaas_builder' is pre-configured with the fabric-peer docker image, +removing the need to build your own external builder and repackage and configure the peer. + +For more information, see the :doc:`cc_service` topic. .. note:: @@ -323,6 +334,7 @@ announced in each of the v2.x releases. * `Fabric v2.3.2 release notes `_. * `Fabric v2.3.3 release notes `_. * `Fabric v2.4.0 release notes `_. +* `Fabric v2.4.1 release notes `_. .. Licensed under Creative Commons Attribution 4.0 International License https://creativecommons.org/licenses/by/4.0/ diff --git a/release_notes/v2.4.1.md b/release_notes/v2.4.1.md new file mode 100644 index 00000000000..1a1e1ea3c4c --- /dev/null +++ b/release_notes/v2.4.1.md @@ -0,0 +1,144 @@ +v2.4.1 Release Notes - December 17, 2021 +======================================== + + +Improvements +------------ + +**peer - Chaincode as a service builder delivered with Fabric release artifacts and in fabric-peer docker image** + +Starting in v2.0 chaincode can be run as a service by utilizing the external builder pattern for chaincodes. +Running 'chaincode as a service' has advantages in Kubernetes and other deployment environments since the chaincode can be managed independently rather than requiring the peer to build chaincode images and start chaincode containers at runtime. +The external builder pattern required you to deliver a builder script or program alongside the peer. +Starting in v2.4.1 an external builder for 'chaincode as a service' is available in the Fabric release artifacts and is pre-configured with the fabric-peer docker image, +removing the need to build your own external builder and repackage and configure the peer. + +**peer - Gateway service now randomizes endorsement layouts** + +For improved load balancing of endorsement requests and fairer workload distribution across organizations, +the gateway service now randomizes the peers it connects to for every transaction. + +**peer - Gateway service concurrency limits** + +Add support for setting gateway service concurrency limits, similar to how concurrency limits are +set for the existing endorser and deliver services. +Concurrency limits ensure that a peer does not process more than the configured number of requests, +reducing the chance of a peer getting overloaded with more requests than it can process. +The peer's core.yaml 'peer.limits.concurrency.gatewayService' setting defaults to 500. + +Fixes +----- + +**peer - Fix for orderer endpoint updates in channel configuration transactions** + +When processing a channel configuration transaction, the gateway service was setting orderer endpoints based on the +prior configuration and therefore the gateway may attempt to submit transactions to outdated orderer endpoints. +A peer restart was required to refresh the orderer endpoints. +The gateway now sets the orderer endpoints based on the updated channel configuration without a peer restart required. + +**peer - Extraneous warnings logged for service discovery endorsers requests** + +The 'discovery.acl' logger was logging an unexpected "identity does not satisfy principal" warning message. +The message has now been removed. + +**peer - Improve gateway service memory garbage collection** + +Remove duplicate proposal responses from gateway service memory to improve garbage collection and peer process memory footprint. + +**peer - Reduce the size of gateway service gRPC error responses for non-matching endorsements** + +The gateway service was returning error responses with full payloads to clients when it received non-matching endorsements from peers. +Large error responses in gRPC can cause loss of connection between client and server. +A shorter error message is now returned to the client, while the full payloads are reported in the peer log as a warning. + + +Dependencies +------------ +Fabric v2.4.1 has been tested with the following dependencies: +* Go 1.16.7 +* CouchDB v3.1.1 + +Fabric docker images on dockerhub utilize Alpine 3.14. + + +Deprecations (existing) +----------------------- + +**Ordering service system channel is deprecated** + +v2.3 introduced the ability to manage an ordering service without a system channel. +Managing an ordering service without a system channel has privacy, scalability, +and operational benefits. The use of a system channel is deprecated and may be removed in a future release. +For information about removal of the system channel, see the [Create a channel without system channel documentation](https://hyperledger-fabric.readthedocs.io/en/release-2.3/create_channel/create_channel_participation.html). + +**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](https://hyperledger-fabric.readthedocs.io/en/v2.2.0/couchdb_as_state_database.html#couchdb-configuration) +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 and not gossip blocks by using the following configuration: +``` +peer.gossip.orgLeader: true +peer.gossip.useLeaderElection: false +peer.gossip.state.enabled: false +peer.deliveryclient.blockGossipEnabled: 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](https://hyperledger-fabric.readthedocs.io/en/release-2.2/enable_cc_lifecycle.html). diff --git a/scripts/bootstrap.sh b/scripts/bootstrap.sh index 351e511b307..ef18340f2b6 100755 --- a/scripts/bootstrap.sh +++ b/scripts/bootstrap.sh @@ -6,7 +6,7 @@ # # if version not passed in, default to latest released version -VERSION=2.4.0 +VERSION=2.4.1 # if ca version not passed in, default to latest released version CA_VERSION=1.5.2 ARCH=$(echo "$(uname -s|tr '[:upper:]' '[:lower:]'|sed 's/mingw64_nt.*/windows/')-$(uname -m | sed 's/x86_64/amd64/g')") @@ -21,8 +21,8 @@ printHelp() { echo "-s : bypass fabric-samples repo clone" echo "-b : bypass download of platform-specific binaries" echo - echo "e.g. bootstrap.sh 2.4.0 1.5.2 -s" - echo "will download docker images and binaries for Fabric v2.4.0 and Fabric CA v1.5.2" + echo "e.g. bootstrap.sh 2.4.1 1.5.2 -s" + echo "will download docker images and binaries for Fabric v2.4.1 and Fabric CA v1.5.2" } # dockerPull() pulls docker images from fabric and chaincode repositories diff --git a/scripts/install-fabric.sh b/scripts/install-fabric.sh index a89d413eb5b..8509df7097f 100755 --- a/scripts/install-fabric.sh +++ b/scripts/install-fabric.sh @@ -23,7 +23,7 @@ _arg_comp=('' ) # if version not passed in, default to latest released version # if ca version not passed in, default to latest released version -_arg_fabric_version="2.4.0" +_arg_fabric_version="2.4.1" _arg_ca_version="1.5.2" ARCH=$(echo "$(uname -s|tr '[:upper:]' '[:lower:]'|sed 's/mingw64_nt.*/windows/')-$(uname -m | sed 's/x86_64/amd64/g')") @@ -51,7 +51,7 @@ print_help() { printf 'Usage: %s [-f|--fabric-version ] [-c|--ca-version ] [] ... [] ...\n' "$0" printf '\t%s\n' ": Component to install one or more of d[ocker]|b[inary]|s[amples]. If none specified, all will be installed" - printf '\t%s\n' "-f, --fabric-version: FabricVersion (default: '2.4.0')" + printf '\t%s\n' "-f, --fabric-version: FabricVersion (default: '2.4.1')" printf '\t%s\n' "-c, --ca-version: Fabric CA Version (default: '1.5.2')" }