could not get chConfig cache reference: QueryBlockConfig failed: queryChaincode failed:

3.1k views Asked by At

I'm developing a middleware in Go that integrates a hyperledger fabric network using fabric-sdk-go. The middleware is running on Docker container and it's set to use the same network of fabric containers (I've check that container is connecting each others), but when I tries connect to the channel the follow error is throwed:

failed to create new channel client: event service creation failed: could not get chConfig cache reference: QueryBlockConfig failed: queryChaincode failed: Transaction processing for endorser [peer0.slaughterhouse.kingbeefcattle.com:7051]: Endorser Client Status Code: (2) CONNECTION_FAILED. Description: dialing connection timed out [peer0.slaughterhouse.kingbeefcattle.com:7051]

There is my config.yaml:

name: "kingbeefcattlenetowrk"
#
# Schema version of the content. Used by the SDK to apply the corresponding parsing rules.
#
version: 1.0.0

#
# The client section used by GO SDK.
#
client:

  # Which organization does this application instance belong to? The value must be the name of an org
  # defined under "organizations"
  organization: slaughterhouse

  logging:
    level: info

  # Root of the MSP directories with keys and certs.
  cryptoconfig:
    path: /crypto-config

  # Some SDKs support pluggable KV stores, the properties under "credentialStore"
  # are implementation specific
  credentialStore:
    path: /tmp/kingbeefcattlestore

    # [Optional]. Specific to the CryptoSuite implementation used by GO SDK. Software-based implementations
    # requiring a key store. PKCS#11 based implementations does not.
    cryptoStore:
      path: /tmp/kingbeefcattlemsp

  # BCCSP config for the client. Used by GO SDK.
  BCCSP:
    security:
     enabled: true
     default:
      provider: "SW"
     hashAlgorithm: "SHA2"
     softVerify: true
     level: 256

  tlsCerts:
    # [Optional]. Use system certificate pool when connecting to peers, orderers (for negotiating TLS) Default: false
    systemCertPool: false

    # [Optional]. Client key and cert for TLS handshake with peers and orderers
    # client:
    #   keyfile:
    #   certfile:

#
# [Optional]. But most apps would have this section so that channel objects can be constructed
# based on the content below. If an app is creating channels, then it likely will not need this
# section.
#
channels:
  # name of the channel
  kingbeefcattlechannel:
    # Required. list of orderers designated by the application to use for transactions on this
    # channel. This list can be a result of access control ("org1" can only access "ordererA"), or
    # operational decisions to share loads from applications among the orderers.  The values must
    # be "names" of orgs defined under "organizations/peers"
    # deprecated: not recommended, to override any orderer configuration items, entity matchers should be used.
    # orderers:
    #  - orderer.example.com

    # Required. list of peers from participating orgs
    peers:
      peer0.slaughterhouse.kingbeefcattle.com:
        # [Optional]. will this peer be sent transaction proposals for endorsement? The peer must
        # have the chaincode installed. The app can also use this property to decide which peers
        # to send the chaincode install request. Default: true
        endorsingPeer: true

        # [Optional]. will this peer be sent query proposals? The peer must have the chaincode
        # installed. The app can also use this property to decide which peers to send the
        # chaincode install request. Default: true
        chaincodeQuery: true

        # [Optional]. will this peer be sent query proposals that do not require chaincodes, like
        # queryBlock(), queryTransaction(), etc. Default: true
        ledgerQuery: true

        # [Optional]. will this peer be the target of the SDK's listener registration? All peers can
        # produce events but the app typically only needs to connect to one to listen to events.
        # Default: true
        eventSource: true

      peer1.slaughterhouse.kingbeefcattle.com:

    policies:
      #[Optional] options for retrieving channel configuration blocks
      queryChannelConfig:
        #[Optional] min number of success responses (from targets/peers)
        minResponses: 1
        #[Optional] channel config will be retrieved for these number of random targets
        maxTargets: 1
        #[Optional] retry options for query config block
        retryOpts:
          #[Optional] number of retry attempts
          attempts: 5
          #[Optional] the back off interval for the first retry attempt
          initialBackoff: 500ms
          #[Optional] the maximum back off interval for any retry attempt
          maxBackoff: 5s
          #[Optional] he factor by which the initial back off period is exponentially incremented
          backoffFactor: 2.0


#
# list of participating organizations in this network
#
organizations:
  slaughterhouse:
    mspid: SlaughterhouseMSP
    cryptoPath: peerOrganizations/slaughterhouse.kingbeefcattle.com/users/{userName}@slaughterhouse.kingbeefcattle.com/msp
    peers:
      - peer0.slaughterhouse.kingbeefcattle.com
      # - peer1.slaughterhouse.kingbeefcattle.com

#
# List of orderers to send transaction and channel create/update requests to. For the time
# being only one orderer is needed. If more than one is defined, which one get used by the
# SDK is implementation specific. Consult each SDK's documentation for its handling of orderers.
#
orderers:
  orderer.kingbeefcattle.com:
    url: orderer.kingbeefcattle.com:7050
    # url: grpc://172.22.0.4:7050
    # these are standard properties defined by the gRPC library
    # they will be passed in as-is to gRPC client constructor
    grpcOptions:
      # ssl-target-name-override: orderer.kingbeefcattle.com
      # These parameters should be set in coordination with the keepalive policy on the server,
      # as incompatible settings can result in closing of connection.
      # When duration of the 'keep-alive-time' is set to 0 or less the keep alive client parameters are disabled
      keep-alive-time: 0s
      keep-alive-timeout: 20s
      keep-alive-permit: false
      fail-fast: false
      # allow-insecure will be taken into consideration if address has no protocol defined, if true then grpc or else grpcs
      allow-insecure: false

    tlsCACerts:
      # Certificate location absolute path
      path: /crypto-config/ordererOrganizations/kingbeefcattle.com/tlsca/tlsca.kingbeefcattle.com-cert.pem
#
# List of peers to send various requests to, including endorsement, query
# and event listener registration.
#
peers:
  peer0.slaughterhouse.kingbeefcattle.com:
    #this URL is used to send endorsement and query requests
    url: peer0.slaughterhouse.kingbeefcattle.com:7051
    # eventUrl is only needed when using eventhub (default is delivery service)
    eventUrl: peer0.slaughterhouse.kingbeefcattle.com:7053
    # url: grpc://172.22.0.2:7051
    # # eventUrl is only needed when using eventhub (default is delivery service)
    # eventUrl: grpc://172.22.0.2:7053

    grpcOptions:
      # ssl-target-name-override: peer0.slaughterhouse.kingbeefcattle.com
      # These parameters should be set in coordination with the keepalive policy on the server,
      # as incompatible settings can result in closing of connection.
      # When duration of the 'keep-alive-time' is set to 0 or less the keep alive client parameters are disabled
      keep-alive-time: 0s
      keep-alive-timeout: 20s
      keep-alive-permit: false
      fail-fast: false
      # allow-insecure will be taken into consideration if address has no protocol defined, if true then grpc or else grpcs
      allow-insecure: false

    tlsCACerts:
      # Certificate location absolute path
      # path: /crypto-config/peerOrganizations/slaughterhouse.kingbeefcattle.com/peers/peer0.slaughterhouse.kingbeefcattle.com/tls/ca.crt
      path: /crypto-config/peerOrganizations/slaughterhouse.kingbeefcattle.com/tlsca/tlsca.slaughterhouse.kingbeefcattle.com-cert.pem

Could someone help, please?

3

There are 3 answers

0
Fernando Cezar Heredia Marino On

I found the cause of problem, it was because I've configure the peer port with the value it exposes to the host (being on the same network).

To fix this I changed to port 7051 and 7053 (events), so some requests started to work, but now I has the following error that occurs intermittently:

Transaction processing for endorser [peer1.slaughterhouse.kingbeefcattle.com:7051]: Endorser Client Status Code: (2) CONNECTION_FAILED. Description: dialing connection timed out [peer1.slaughterhouse.kingbeefcattle.com:7051]

Note: this is not the peer host I've set up in my config.yaml, actually this peer is from another org...

Could this be with the CORE_PEER_GOSSIP_USELEADERELECTION = true setting?

0
Sumit Arora On

To Fix this, I added below entires on the hosts file e.g sudo vi /etc/hosts file :

127.0.0.1    orderer.example.com
127.0.0.1    peer0.org1.example.com
127.0.0.1    ca.example.com
0
Captain Levi On

This error happened as the peer discovery works by referring localhost mapped url not the url like peer0.org1.example.com. So, Change the config.yaml file to be something like

orderers:
  orderer.example.com:
    url: localhost:7050
    grpcOptions:
      ssl-target-name-override: orderer.example.com
      keep-alive-time: 0s
      keep-alive-timeout: 20s
      keep-alive-permit: false
      fail-fast: false

      allow-insecure: false

    tlsCACerts:

      path: ${GOPATH}/src/github.com/ProjectName/fixtures/crypto-config/ordererOrganizations/example.com/tlsca/tlsca.example.com-cert.pem

peers:
  peer0.org1.example.com:

    url: localhost:7051
    eventUrl: localhost:7053

    grpcOptions:
      ssl-target-name-override: peer0.org1.example.com
      keep-alive-time: 0s
      keep-alive-timeout: 20s
      keep-alive-permit: false
      fail-fast: false

      allow-insecure: false

    tlsCACerts:
      # Certificate location absolute path
      path: ${GOPATH}/src/github.com/ProjectFolder/fixtures/crypto-config/peerOrganizations/org1.example.com/tlsca/tlsca.org1.example.com-cert.pem