v2.2.1
v2.2.1 Release Notes - September 30, 2020
What's New in Hyperledger Fabric v2.2.1
Hyperledger Fabric v2.2.1 provides important improvements and fixes, with a focus on the following areas:
- Management of certificate expirations
- Hardware security module (HSM) efficiency
- Upgrade to v2.x
Fixes
FAB-18163: orderer certificate expiration - TLSHandshakeTimeShift without separate cluster port
If the TLS certificates of the ordering service nodes expire and are not replaced in time,
communication between them cannot be established, making it impossible to send
new transactions to the ordering service. To recover from such a scenario, it is possible
to configure a backwards timeshift that ordering service nodes will utilize for TLS
handshakes so that transactions can be processed.
If the Raft cluster service is sharing the orderer’s main gRPC server port,
configure the new orderer.yaml General.TLS.TLSHandshakeTimeShift
property.
If using a separate cluster listener port,
configure the orderer.yaml General.Cluster.TLSHandshakeTimeShift
property.
FAB-18205: orderer certificate expiration - Permit peer CLI to communicate with orderers with expired TLS certificates
The change allows peer CLI to communicate with ordering service nodes with expired TLS certificates
by setting the --tlsHandshakeTimeShift
flag to a desired backwards timeshift.
The change applies to the peer channel fetch
and peer channel update
commands to allow
fetching configuration blocks and updating the channel configuration for orderers with expired TLS certificates.
FAB-18171: orderer certificate expiration - Disregard certificate validity period in intra-orderer communication
This change makes the orderer cluster authentication infrastructure
disregard validity periods when comparing certificates, and only regard public keys.
With this change, an expiring Raft TLS certificate can be replaced
with a new certificate that has the same public key, without requiring channel configuration updates.
FAB-18188: peer and orderer certificate expiration - Log expiration date upon startup
The enrollment, TLS server, and TLS client certificate expiration dates are now logged upon peer and orderer startup.
peer and orderer PKCS#11 - Add object handle cache
With this change, object handles are cached in the PKCS#11 implementation.
In support of this change, in addition to pooling idle sessions, the
provider tracks active sessions. If some condition occurs that results
in all sessions being closed, cached object handles are no longer valid
so the handle cache is purged.
FAB-18250: peer and orderer PKCS#11 - Introduce error checking for evicting invalid PKCS#11 sessions
FAB-17722 introduced a call to the pkcs11 GetSessionInfo function for retrieving the current state of
the PKCS11 session. The result of this function was used to determine whether a session was still
valid to perform HSM operations or if it should be evicted from the session pool. Performance tests
showed that the call to GetSessionInfo was computationally prohibitively expensive. FAB-18242 reverted
this change and FAB-18250 introduced a new method for determining if the PKCS11 session is invalid.
Now when an HSM operation fails, we check the resultant error against the known session error codes and
evict the session from the pool if the error was the result of an invalid session.
FAB-18208: peer - Do not sign gossip message if membership is empty
This change suppresses the signing of gossip messages if the message will not get
sent regardless due to an empty gossip membership. The change reduces CPU consumption
and eliminates unnecessary calls to an HSM.
peer and orderer PKCS#11 - Add log message if a key cannot be found
A debug message is now provided in the bccsp_p11 logger if a key cannot be found in the HSM.
FAB-18194: peer - Fix service discovery for legacy installed chaincodes
The service discovery endorsers query may fail with errors
"failed constructing descriptor for chaincodes" and
"required chaincodes are not installed on sufficient peers", even
when a chaincode is installed on a sufficient number of peers.
The peer initialization has been fixed so that chaincodes installed with the legacy chaincode
lifecycle are correctly recognized by service discovery.
FAB-18191: peer - Remove contents of leveldb directory instead of the directory when dropping databases
The peer upgrade-dbs
, rebuild-dbs
, reset
, and rollback
commands each drop a peer's
leveldb databases so that they can be rebuilt upon the next peer startup.
The commands now remove all contents of the leveldb directories, rather than dropping the
directory itself. This fix is required if mounting one of the leveldb directories in addition
to the overall peer data directory as specified in core.yaml peer.fileSystemPath
.
FAB-15810: peer - Deprioritize fetching of missing private data
The private data reconciler attempts to retrieve missing private data from other
peers in a channel that belong to the same private data collection based on the interval
configured in core.yaml peer.gossip.pvtData.reconcileSleepInterval
(by default every one minute). If private data cannot be reconciled, it will be attempted
every interval and may block the reconciliation of other private data. This fix places
private data that can't be reconciled in a depriorized queue so that other private data
can be reconciled. The depriorized entries will be re-attempted less often based on the
interval configured in core.yaml ledger.pvtdataStore.deprioritizedDataReconcilerInterval
(by default every 60 minutes).
orderer - Check suspect info once per suspect interval when using Raft
The Raft-based ordering service node was checking to see if it was evicted too often.
This fix ensures that the ordering service node only checks once per suspect interval,
which is every 10 minutes by default.
cryptogen - Duplicate alternate names in multi-domain certificates
When using cryptogen to generate certificates, the X509v3 Subject Alternative Name field contained duplicate entries.
The Subject Alternative Name now contains one entry per alternate name.
FAB-18245: peer - Large values retrieved from chaincode may be incorrect when using CouchDB
Chaincode values larger than 64kb are saved to CouchDB,
but not saved to the peer's CouchDB cache.
However, chaincode still attempted to retrieve from the cache,
and therefore an incorrect value may be retrieved.
The fix ensures that for values larger than 64kb, the data will be retrieved from CouchDB.
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:
- 344fda6 Release commit for v2.2.1
- bebb5d8 Cherry pick secured asset transfer tutorial to 2.2
- ba9eaff [FAB-18041] Add Node.js to CC as external service
- 107a867 Remove No Longer Relevant Release Note
- 99a01b2 Update release notes with FAB-18250
- 7b7ad6b Fix missing word
- f9f3caf Add change in documentation to explain how to add collaborators in translation
- 61c05b8 [FAB-18250] Check Error Before Returning Session to Pool (#1937)
- 765bb73 Remove escc and vscc from list of system chaincodes
- 9906643 Update v2.2.1 release notes with latest fixes
See More
- c5cf627 Fix empty address in peer CLI ClientWait log
- 75046cf Remove GetSessionInfo Call
- 2e4527b Bug Fix: Saving big payloads by cache CouchDB (#1909)
- fe684f8 Fix flakey raft/cft integration test
- e2fa653 Add release notes for v2.2.1
- 6b1ac6f [FAB-18237] always update stateInfo message upon chaincode update
- f32cb81 Bugfix in collection config history mgr (#1904)
- 3ee47a7 fix function name typo in store private data command
- ffcbf25 Clarify tlsHandshakeTimeShift CLI help text (#1894)
- 673c364 Correct the explanation for signcerts in Membership section
- 68d13ed Update write_first_app.rst
- dc8660b Regenerate peer CLI docs
- 6c9abf9 Peer CLI communicate with orderers with expired TLS certs (#1863)
- 6f76408 Bump fabric-config dep to 0.0.7
- c5c1105 address review comments (#1890) (#1893)
- a5a6acd pass unreconciled missing pvtdata to pvtdata store (backport to release-2.2) (#1886)
- ee2bc1b pass unreconciled missing data info to ledger from reconciler (#1797)
- bc00758 construct unreconciled missing pvtdata (#1699)
- e500de9 deprioritize unreconcilable missingPvtData (#1721)
- 10cb4ea mv oldpvtdata commit to separate file
- 7eaead1 refactor pvtdatastore
- 659fe39 Adding notes for the usage of script during samples install
- 2d895c4 [FAB-18208] Do not sign gossip message if membership is empty
- 42da963 Convert Azure Pipeline To Stages (#1874)
- 6a02559 Fix data race in gossip/discovery test
- 7dcd9fd Minor doc fix to clear Sphinx local build error
- 09764d8 fix missing err check in the block commit path (#1543)
- cc6dc99 minor cleanup of pvtdatastore
- 20f0697 reset leveldb batch after the commit
- bebe131 Use directly leveldb batch (#1507)
- 99332da [FAB-18194] Fix service discovery for legacy installed chaincodes
- 0bd0ab2 Update RTD Placeholder
- ef2632e [FAB-18191] Remove contents of leveldb dir instead of the dir itself when dropping dbs (#1828)
- 8dae484 [FAB-18120] Adding DevMode integration test for new lifecycle.
- 9da753a [FAB-18169] Add DevMode support in ChaincodeEndorsementInfoSource
- 8bbedb8 Revert "[FAB-18183] Bump sphinx in requirements.txt to v1.8.5"
- bf8f6fc [FAB-18188] Log orderer and peer cert expiration date upon startup (#1804)
- 0e52fff [FAB-18171] Disregard certificate validity period in intra-orderer communication
- 445b997 [FAB-18183] Bump sphinx in requirements.txt to v1.8.5
- 2fc575c Cache bccsp keys generated from getECKey
- 7b8de81 Add object handle cache to PKCS#11 bccsp provider
- bf2f3fc Make ecPoint a method on impl
- 2a22160 Make findKeyPairFromSKI a method on impl
- 86a5c64 Replace loadLib with initialize method
- 8a63732 Merge pkcs11/impl.go and pkcs11/pkcs11.go
- f47ac7d Drain session pool before creating new sessions
- 4fd232e Add instructions for how to use @Mergifyio backport command
- 2d522b5 Update Add an Org to a Channel tutorial
- 2813aba Updates to CouchDB doc tutorial
- 4919fa7 Updated Using CouchDB to use asset transfer ledger queries smart contract
- 64c7600 Update Channel Update (Adding an Org) tutorial
- 7d6bb0f Update docs to replace fabcar references with basic asset transfer
- 1450e3c Add links for Go and Java sample applications
- b8b7af7 Refactor tutorial to 'Writing Your First Chaincode'
- 14ad1d7 [FAB-18109] Update peer chaincode invoke
- e042657 Fix code snippet display (#1759)
- 9783edb Write Your First App tutorial updates (#1757)
- 9563518 Update "Deploying a smart contract" tutorial. (#1756)
- 417bcd4 Update "Using the Fabric Test network" tutorial (#1755)
- 0b598c4 Update Write Your First Application Tutorial (#1754)
- c4e310d Remove Use of Manifest Tool
- 5f16da8 Update RTD to Target Correct GH Release Branch
- 6491f6a Fix and improve discovery TLS authentication comments in document
- 50aea5e Update doc to reflect change in FAB-18163 (#1729)
- 25a5c40 FAB-18163 TLS Timeshift w/o Separate Cluster Port (#1724) (#1725)
- f60c78a Add Raft metrics to Raft config doc
- c932bb4 Use correct gossip SecretEnvelope reference
- 2821cfc Log Error When PKCS11 Key Not Found (#1679)
- cce8553 fix: modify certificate alternate DNS duplication
- 6e97dd0 fix glossary.rst by reverting commit 21fa648
- 8d590c6 typo fix
- 05655d0 Fix link in Develop apps doc
- 67ce3cb Fix: Missing addToWallet.js in ls command output
- 534e87a Add link to Use a CA to deployment guide
- 9099e5b Fix international language make html instructions
- 3741860 Raft: Check suspect info once per suspect interval (#1600)
- 03f0544 Add LTS release status to What's New doc.
- 6be80ae Print channel name in learnAnchorPeers
- dd556f3 Advice for translators, PRs and tools
- 5dc22d5 Remove ccenv dependency in platforms unit test
- 9bca8d6 Changes for i18n
- 5f11b9b Simple Typo fix
- 5ea85bc Fabric v2.2.0 release commit
- 7b1a1a2 Add release notes for v2.2
- d2dfc63 Improve peer CLI error message when no orderer address passed (#1555)
- 9c3c599 [FAB-18054] Remove default value for top level orderer addresses if (#1550)
- ff00d9b Improve private data logging (#1545)
- 62dfb2d Add org name to consortium error message
- 0de7fc1 Restore couchdb logger (#1532)
- 2169710 Use tcp for statsd and poll for metric arrival
- 568d346 Fix chaincode package example path
- ac3f596 Remove Thirdparty Images From Bootstrap Script
- 9b187f5 Edits to style guide
- a6ad407 Upgrade updates
- 8fd785a Deploy Chaincode Doc
- 4591d52 Add Check For CouchDB 3.1 (#1491)
- 529a931 Only canonize ECDSA signatures in MSP:IsWellFormed (#1498)
- 3d305f7 Disable channel participation API in release-2.2
- a7dc1d4 [FAB-18028] Create new PropagateEnvironment key
- c44e603 Remove BYFN
- da4f52f Remove BYFN from the toc
- 19d79a4 [FAB-18034] Fixed FabCar docs formatting.
- 3ee83a7 [FAB-18034] Improve FabCar docs , Fix queryAllCars description
- f743289 [FAB-18034] Improve FabCar docs with better context, Fix queryAllCars description
- b99f6ae Eliminate warnings when building documents
- f0285ca DOC fixed broken hyperlinks fabric doc, updated old output in go.mod
- 580f90a [FAB-16435] Improve gossip defaults - disable state transfer (#1478)
- ec42cbd [FAB-16435] Improve defaults - maxBlockCountToStore & blockBufferSize (#1477)
- 325b762 import collection configs from snapshot (#1460)
- 327765d Remove DocBuild Job From CI
- c222790 [FAB-16435] Improve gossip defaults - Peers to be leaders by default
- dd13262 [FAB-18030] Discover all peers first before testing gossip membership to avoid flakes
- 09de0b8 Fix unsupported syntax for policy in the documents
- bc3c63e check iter error (#1468)
- 701bf56 [FAB-16789] per PR feedback, fixed sentence about peer pulling block from orderer on joining channel
- 34cea91 check leveldb iterator error (#1428)
- 68f68ca Revert "rm old proto related code from transient store (#1464)" (#1467)
- c712090 rm old proto related code from transient store (#1464)
- 02f0569 [FAB-17992] Remove ledger blockstore data for a channel (#1423)
- ef97677 Update configtx library dependency to v0.0.5
- a9d25f0 Remove references to blacklist and whitelist
- 3e29ecd Fix logging of recovered in NewPublicNymFromBytes
- 52436d3 rm interface from confighistory store
- afc2720 Remove whitelist comment from core.yaml
- d91de16 [FAB-16789] per PR feedback, fixed sentence about peer pulling block from orderer on joining channel
- c59d45e [FAB-16789] removed sentence about P1 peer using orderer, per PR comment.
- 0670442 [FAB-16789] Fix peer join description in network key concept
- d728cd6 Restore assertions related to peer address config
- 193a7de [FAB-17539] Always remember anchor peers in membership (#1422)
- 65345cf Explicitly set gossip.endpoint in integration test (#1455)
- f29b7f1 validation (occ) pkg -- consistently use testify/require (#1454)
- 2b408a6 txmgr pkg -- consistently use testify/require (#1453)
- fb97505 statecouchdb pkg -- consistently use testify/require (#1449)
- 5f098ec statedb pkg -- consistently use testify/require (#1450)
- 98f1858 rwsetutil pkg -- consistently use testify/require (#1452)
- 2188eba queryutil pkg -- consistently use testify/require (#1451)
- 65e88bc [FAB-18021] Improve log messages in
msp/configbuilder.go
- 841e7f0 ledgermgmt pkg -- consistently use testify/require (#1445)
- 341fa8c privacyenabledstate pkg -- consistently use testify/require (#1447)
- 8f7cef3 cceventmgmt pkg -- consistently use testify/require (#1443)
- 9f18781 confighistory pkg -- consistently use testify/require (#1444)
- def99d1 pvtstatepurgemgmt pkg -- consistently use testify/require (#1448)
- fe7fd6c pvtdatapolicy pkg -- consistently use testify/require (#1446)
- 833438f kvledger pkg -- consistently use testify/require (#1440)
- 0c67955 pvtstore pkg -- consistently use testify/require (#1439)
- d74a116 stateleveldb pkg -- consistently use testify/require (#1438)
- 7548f29 replace testify/assert with testify/require (#1437)
- 87409f0 Remove call to couchdb API _ensure_full_commit (#1435)
- afabe64 Channel participation api - redirect from base V1 URL (#1433)
- 091c821 Set Cache-Control no-store for channel participation list (#1421)
- f1154ee [FAB-17993] Skip modifying _users security object (#1430)
- 06ddfbc FAB-17910 Ch.Pat.API: join member w/o onboarding (#1431)
- 3bb28dd [FAB-17963] Ch.Part.API: Validate join block (#1393)
- 68e363d Rename variables in blocksotre code for readability
- 571ef21 Integration test for channel participation API list (#1391)
- 9043107 Remove testingInfo from the root of the project
- c4d3802 Break UT into sub-tests for easy maintenance (#1424)
- da0c6ef [FAB-17897] Document /version endpoint (#1396)
- cff2f18 Bootstrap blockstore from snapshotted TxIDs (#1413)
- a6ad9d8 [FAB-17270] Create a channel tutorial (#1105)
- c15d254 FAB-18013 Ch.Part.API: orderer main.go code hygiene (#1416)
- 865a1ce [FAB-17933] Fix cache update logic for installed chaincode info when an empty or uninstalled package ID is specified
- 17a825a Set http header entries before writing header
- a5411a1 run transient store purge in background (#1411)
- f1fb1a1 Ch. Part. API: etcdraft consenter w/o system channel (#1376)
- 2fdbafb use iter.Seek() instead of creating new iterator (#1397)
- 3a2ab64 Remove dead/accidental QueryInstalledNoReferences helper func
- 95fb8dd Add go plugin note to pluggable {e,v}scc doc
- 376923b Nominate Senthilnathan Natarajan as Fabric Maintainer
- 0d5e664 [FAB-8443] Update sampleconfig chaincodeAddress comments (#1386)
- 5037efc FAB-17985 Registrar newChain not to copy chains map
- 04c2a96 [FAB-17875] Fix OSN leader election failure
- 946016f Fixed a typo (that that)
- 83b039e add iter.Seek() in leveldb wrapper (#1390)
- 95f87c8 Update Pipfile to support localization
- fcf9194 FAB-17951 fetch correct node id for validation (#1367)
- 1d4ec99 Bump Go Version in Vagrant
- 54549c6 Bump Go and Alpine Version
- 32fc629 add rlock to IsEmpty() in leveldb wrapper (#1388)
- c9cf352 Fix the constructor message in complex queries
- 5172ec4 Regenerate proto to sync the go code
- 6c27f01 [FAB-17795] Build channel metadata retroactively if not present (#1369)
- efa5a72 Update private data tutorial for contract api
- e137a20 Update fabric-config dep to v0.0.4 and associated int. test (#1378)
- fe6fbb4 FAB-17967 Updates for new language contributors
- 3d38abe FAB-17912 Ch.Part.API: reject joins (#1375)
- 6598f88 Add FullScanIterator to export channel's data present in the CouchDB (#1348)
- 071a613 [FAB-17958] Delete
--tls
extra arguments from documents - 0dd6b68 Add negative tests for channel info provider (#1371)
- cc0f781 Update vendored fabric-config dependency to v0.0.2 (#1368)
- a699578 FAB-17955 Ch.Part.API: Safe access to system channel (#1365)
- 444f29a [FAB-17942] Add channel info provider to enable ledger to query all channel configs (#1352)
- f8f6457 Add ExtractMSPIDsForApplicationOrgs util method to channelconfig (#1363)
- fcf1615 Add generateSnapshot function on kvledger
- d1ee202 FABG-943 Docs: Go SDK adds new programming model
- 450ba3a FAB-17890 Ch.Part.API: allow registrar to list a single channel (#1349)
- 17f5c7f handle empty namespace in FullScanIter - levedb (#1360)
- ab88de1 Updates in master for v2.1.1 release
- 90a4665 Backfill test for BCCSP environment overrides...
- 330da90 Remove s390x, powerpc64le from RELEASE_PLATFORMS
- adf7436 [FAB-17900] Fixes numeric env variable override bug
- 7199378 [FAB-17900] Update BCCSP.PKCS11.Pin in examples
- 4862f56 [FAB-17935] Change unnecessary warning log line to debug in gossip (#1350)
- 55308c7 Remove unnecessary extension of osn (#1351)
- 4d8b3cc fix infinite loop during full range query (#1347)
- 251e989 fsync and do not generate empty files in snapshots (#1345)
- 41f8b0a [FAB-17059] Add missing mspID when init MembershipProvider.
- 5b036f1 [FAB-17471] Fix OrdererType key to correct line
- 6be8c09 [FAB-17927] Add AllChaincodesInfo to DeployedChaincodeInfoProvider (#1331)
- d71767c _lifecycle ignore previous build failure during install (#1280)
- c428e2a Revert "Bump viper version to the last working commit"
- 2689ed2 Use protolator from fabric-config
- 7fa9da9 Update commercial paper doc to use enrollUser.js
- cc75716 FAB-17841: Ch.Part.API: Remove channel REST handler (#1330)
- d8eb093 Remove txmgr interface
- 19b76b1 Fix some typo in docs
- 3a30ba7 add NOTICE file
- 83f884f Add NOTICE to license ignore list
- 90442af Retire dormant Fabric maintainers
- 1bebd00 Spelling: s/chainocde/chaincode/g
- 853d555 FAB-17840 Ch.Part.API: Join channel REST handler (#1305)
- 019cecc Fixed write_first_app.rst typo
- 445b8f6 Address more concerns highlighted by linters
- c799dcc Address remaining 'gosimple' linter issues
- 0d1c494 Fix spelling errors identified by misspell
- 0e21590 Refactor resetLoop to range instead of for/select
- 07a7112 Apply gosimple checks to consensus/kafka
- 95e1abc Remove unused mockReceiver, add error checks
- b73f95c Remove unused MockPolicyCheckerFactory from policy
- 7e15769 Address ineffectual assigns in protoutil tests
- 3c87a12 Remove unused struct from protoutil tests
- 79d9584 Remove unused rwsetScanner from endorser tests
- 315dd45 Remove dead mockBuilder from dockercontroller
- 36f2c62 Remove unused helpers from raft suite
- b47f547 Remove dead code from txvalidator/v{14,20}
- 39bd29a Remove dead struct from blockindex_test
- b53ac0a Remove unused variable from flogging package
- b382384 Use correct file permissions in cft_test
- b7060f7 Remove unused structure from statecouchdb
- 640dce3 Add error checks to cryptogen/ca/ca_test
This list of changes was auto generated.