Uploaded image for project: 'Fabric'
  1. Fabric
  2. FAB-12220

SideDB - CouchDB Private Collections Test: Invoke and Query ORG not in collection

    XMLWordPrintable

Details

    • System Test
    • Manual
    • Pass
    • Hide
      =====> v1.4 Test Results:


      =====> v1.3 Test Results:

      ORG3 peers do get errors for QUERY with ORG1 and ORG2 is target List:

      "transType": "Invoke",
      "invokeType": "Query",
      "targetPeers": "AllPeers",
      "nProcPerOrg": "2",
      "nRequest": "1000",
      "runDur": "1200",
      "TLS": "enabled",
      "channelOpt": {
      "name": "testorgschannel1",
      "action": "create",
      "orgName": [
      "org1",
      "org2"
      ]
      },

       

      ORG3 peer log:

      2018-09-28 10:05:43.320 UTC [chaincode] HandleTransaction -> ERRO 2629 [0f3855fd] Failed to handle GET_STATE. error: private data matching public hash version is not available. Public hash version = &version.Height{BlockNum:0xac, TxNum:0x9}, Private data version = (*version.Height)(nil)
      github.com/hyperledger/fabric/core/chaincode.(*Handler).HandleGetState
      /opt/gopath/src/github.com/hyperledger/fabric/core/chaincode/handler.go:580

      Total number of errors:

      ibmadmin@SDBPTE2:~$ docker logs peer0.org3.example.com 2>&1 | grep -ai "Failed to handle GET_STATE" | wc -l
      4000
      ibmadmin@SDBPTE2:~$ docker logs peer1.org3.example.com 2>&1 | grep -ai "Failed to handle GET_STATE" | wc -l
      4000

       

      The PTE Queries gets errors shown in PTE logs:

      info: [PTE 1 main]: stdout: info: [PTE 1 exec]: [Nid:chan:org:id=0:testorgschannel1:org2:1 invoke_query_const] query result: Error: {"Error":"Failed to get private details for marble_testorgschannel1_org2_0_1_1000: GET_STATE failed: transaction ID: 063de646bf4dfe51d503d23a8635e003a77bee7f2d65405f00ab4b960e6c55e7: private data matching public hash version is not available. Public hash version = &version.Height{BlockNum:0xaa, TxNum:0x17}, Private data version = (*version.Height)(nil)"}
      info: [PTE 1 exec]: [Nid:chan:org:id=0:testorgschannel1:org2:1 invoke_query_const] query result: Error: {"Error":"Failed to get private details for marble_testorgschannel1_org2_0_1_1000: GET_STATE failed: transaction ID: 063de646bf4dfe51d503d23a8635e003a77bee7f2d65405f00ab4b960e6c55e7: private data matching public hash version is not available. Public hash version = &version.Height{BlockNum:0xaa, TxNum:0x17}, Private data version = (*version.Height)(nil)"}

      info: [PTE 1 main]: stdout: info: [PTE 1 exec]: [Nid:chan:org:id=0:testorgschannel1:org2:1 invoke_query_const] pte-exec:completed 1000 transaction INVOKE(QUERY) with 0 failures in 925523 ms, timestamp: start 1538128224423 end 1538129149946,Throughput=1.08 TPS

      info: [PTE 1 main]: Child proc exited, procId=4 ,exit code=0
      Show
      =====> v1.4 Test Results: =====> v1.3 Test Results: ORG3 peers do get errors for QUERY with ORG1 and ORG2 is target List: "transType": "Invoke", "invokeType": "Query", "targetPeers": "AllPeers", "nProcPerOrg": "2", "nRequest": "1000", "runDur": "1200", "TLS": "enabled", "channelOpt": { "name": "testorgschannel1", "action": "create", "orgName": [ "org1", "org2" ] },   ORG3 peer log: 2018-09-28 10:05:43.320 UTC [chaincode] HandleTransaction -> ERRO 2629 [0f3855fd] Failed to handle GET_STATE. error: private data matching public hash version is not available. Public hash version = &version.Height{BlockNum:0xac, TxNum:0x9}, Private data version = (*version.Height)(nil) github.com/hyperledger/fabric/core/chaincode.(*Handler).HandleGetState /opt/gopath/src/github.com/hyperledger/fabric/core/chaincode/handler.go:580 Total number of errors: ibmadmin@SDBPTE2 :~$ docker logs peer0.org3.example.com 2>&1 | grep -ai "Failed to handle GET_STATE" | wc -l 4000 ibmadmin@SDBPTE2 :~$ docker logs peer1.org3.example.com 2>&1 | grep -ai "Failed to handle GET_STATE" | wc -l 4000   The PTE Queries gets errors shown in PTE logs: info: [PTE 1 main]: stdout: info: [PTE 1 exec]: [Nid:chan:org:id=0:testorgschannel1:org2:1 invoke_query_const] query result: Error: {"Error":"Failed to get private details for marble_testorgschannel1_org2_0_1_1000: GET_STATE failed: transaction ID: 063de646bf4dfe51d503d23a8635e003a77bee7f2d65405f00ab4b960e6c55e7: private data matching public hash version is not available. Public hash version = &version.Height{BlockNum:0xaa, TxNum:0x17}, Private data version = (*version.Height)(nil)"} info: [PTE 1 exec]: [Nid:chan:org:id=0:testorgschannel1:org2:1 invoke_query_const] query result: Error: {"Error":"Failed to get private details for marble_testorgschannel1_org2_0_1_1000: GET_STATE failed: transaction ID: 063de646bf4dfe51d503d23a8635e003a77bee7f2d65405f00ab4b960e6c55e7: private data matching public hash version is not available. Public hash version = &version.Height{BlockNum:0xaa, TxNum:0x17}, Private data version = (*version.Height)(nil)"} info: [PTE 1 main]: stdout: info: [PTE 1 exec]: [Nid:chan:org:id=0:testorgschannel1:org2:1 invoke_query_const] pte-exec:completed 1000 transaction INVOKE(QUERY) with 0 failures in 925523 ms, timestamp: start 1538128224423 end 1538129149946,Throughput=1.08 TPS info: [PTE 1 main]: Child proc exited, procId=4 ,exit code=0

    Description

      Setup: 
      Network Topology: 1 channel, 3 org, 2 peers per org, each peer with CouchDB container for stateDB, 4 kafka, 3 zookeepers, 2 orderers, 2 ca, TLS enabled, both org associate with all channels.
      Client Driver: PTE
      Test Steps:
      1) chaincode: each channel has one chancode, marbles02_private go chaincode, instantiated.

      ORG1 and ORG2 in private collection policy and ORG3 not in collection policy.

      2)transactions: 4 threads, each thread sends 1000 invokes concurrently with tx id from 1 to 1000

               thread 1 sends to org1 peer1 on channel 1
               thread 2 sends to org2 peer1 on channel 1
               thread 3 sends to org1 peer2 on channel 1
               thread 4 sends to org2 peer2 on channel 1

      3) Concurrently, do

      4000 invokes transactions (similar to previous step, using 4 threads each sending 1000 new invokes, starting with index 4000)
      4000 private data queries, on all peers in all orgs (similar to previous step, using 4 threads each sending 1000 queries)

      The Queries sent to ORG3 should fail.

       

      Result
      1)hardware setup
      2) RPS (request per second) achieved for queries
      3) CPU and memory usage for the Peers and CouchDB containers

      Attachments

        Issue Links

          Activity

            People

              dongming Dongming Hwang
              rlalgowdar Rajesh Lalgowdar
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: