1. 17 Jul, 2018 1 commit
  2. 07 Jul, 2018 1 commit
    • Jason Yellick's avatar
      FAB-11094 Fix deadlock in block iterator · 375995ea
      Jason Yellick authored
      
      
      The deliver service used to not close ledger iterators until after a
      block had been committed.  With FAB-10799, the Deliver service more
      proactively cleans up ledger resources.  This leads to a more likely
      contention between the block iterator's Close() function and the Next()
      function.
      
      These two code paths acquire the same two mutexes, but in different
      orders.  The Next() path always acquires the itr.mgr.cpInfoCond.L first,
      then the itr.closeMarkerLock, while the Close() path inverts this order.
      If both Next() and Close() are invoked at the same time by goroutines,
      this can result in a deadlock where both mutexes lock and never unlock.
      
      This further prevents all blocks from committing and begins to leak
      memory resources.
      
      Change-Id: I99180fec2639a62cdf1cd9a6ce8b33f91ce498b9
      Signed-off-by: default avatarJason Yellick <jyellick@us.ibm.com>
      375995ea
  3. 08 Jun, 2018 1 commit
    • manish's avatar
      [FAB-8557] Fix overwriting txid in block index · f6c97e0f
      manish authored
      
      
      This CR fixes the current behavior of block store index.
      In the current implemetation, the indexes that maintain
      different pieces of information by txid are overwritten
      by a duplicate txid (if any). This CR reverses this behavior
      and keeps the first appearance of txid in the index. The future
      duplicate txids will not overwrite it.
      
      Though, either of these behaviors (keeping the first tx or
      keeping the last tx) are not fully justified, primarily because
      the problem itself is a paradox - in the sense that the ids
      (that are supposed to be unique by definition) are duplicated.
      However, the justification of moving from the current behavior
      to the proposed behavior is that, its easy for someone to replay
      the transaction or simply use an existing txid in a bogus transaction
      just to exploit the current behavior of overwriting the block storage
      index and preventing the legitimate user to query about the status
      of their transactions.
      
      Change-Id: I3b81ae61c756ef78253b58a94644778716fb0e16
      Signed-off-by: default avatarmanish <manish.sethi@gmail.com>
      f6c97e0f
  4. 24 May, 2018 1 commit
  5. 16 Apr, 2018 1 commit
  6. 04 Dec, 2017 1 commit
  7. 15 Nov, 2017 1 commit
  8. 30 Oct, 2017 1 commit
    • manish's avatar
      [FAB-6779] Allow rebuilding block storage indexes · 1daabff7
      manish authored
      
      
      This CR allows building of block storage indexes.
      For rebuilding the indexes, existing index folder would need to be dropped.
      However, please note that this would drop (and rebuild) the indexes for all
      the chains because they share the underlying leveldb.
      
      Also, enabled the flush/synch of batch writting to leveldb (statedb, block indexes, and historydb).
      
      Change-Id: I6a926ab765df4bbb6543d6a3960359d95d60fd68
      Signed-off-by: default avatarmanish <manish.sethi@gmail.com>
      1daabff7
  9. 10 Aug, 2017 1 commit
    • manish's avatar
      [FAB-5654] SideDB - Tx simulation/validation/commit · 8a87b8ae
      manish authored
      
      
      This CR modifies the tranaction simulation, validation, and commit
      code and delivers the end-to-end transaction flow that treats the
      private data in a special manner. This CR mainly leverages the earlier
      submitted independent CRs for sidedb feature for accomplishing this behavior.
      
      This CR also allows ledger to receive the blocks and the pvt data from
      another peer on the same channel (i.e., a peer catching up via state)
      
      This CR is exceptionally large becasue of manily two reasons
      
      1) The way currently the code (and specially the tests) is organized in
      simulation/validation/commit flow, its not easy to submit such kind
      of changes independently that cuase the change in the whole transaction
      processing flow.
      
      2) This CR causes a change in the existing ledger APIs which are used widely
      across other packages (specially in the tests) and hence many files are included
      for fixing the broken dependencies
      
      Change-Id: Id29575176575f4c01793efd3476b68f8364cb592
      Signed-off-by: default avatarmanish <manish.sethi@gmail.com>
      8a87b8ae
  10. 01 Aug, 2017 1 commit
    • Baohua Yang's avatar
      [FAB-5194] Fix usage problems in code · 76c0dc56
      Baohua Yang authored
      
      
      This patchset helps clean up the code and docs:
      
      * Fix redundant parenthesese.
      * Fix mismatching params in func return.
      * Fix variable name collides with imported package name and builtin
        function or reserved words.
      * Fix word typos.
      
      Change-Id: I30304c233067ead7e74d18e3caf2604b3ed1490a
      Signed-off-by: default avatarBaohua Yang <yangbaohua@gmail.com>
      76c0dc56
  11. 26 Jul, 2017 1 commit
  12. 18 May, 2017 1 commit
  13. 07 May, 2017 1 commit
  14. 05 May, 2017 1 commit
  15. 04 May, 2017 1 commit
  16. 25 Apr, 2017 1 commit
  17. 22 Apr, 2017 1 commit
    • Will Lahti's avatar
      [FAB-2351] Update loggers to flogging.MustGetLogger · 7132dd54
      Will Lahti authored
      
      
      This CR updates all loggers throughout the code base to use
      `flogging.MustGetLogger`. This function wraps `logging.MustGetLogger`
      and tracks the logger modules defined in the system. This enables the
      ability to set log levels for modules using regular expressions.
      and make it easy to change the levels for any module and all its
      submodules with a single command (e.g. gossip, ledger, msp).
      
      Change-Id: If5d3229ea2312adb56fc21bfdafbed3d967cf1df
      Signed-off-by: default avatarWill Lahti <wtlahti@us.ibm.com>
      7132dd54
  18. 11 Apr, 2017 1 commit
  19. 02 Mar, 2017 1 commit
  20. 27 Feb, 2017 1 commit
  21. 21 Feb, 2017 1 commit
    • Alessandro Sorniotti's avatar
      [FAB-1392] - Use bytes for headers · 011cd41b
      Alessandro Sorniotti authored
      
      
      This change set ensures that the protobuf representation for headers be in
      bytes. This makes sure that if ever protobuf marshalling is non-deterministic,
      we do not have problems because whenever we hash a header, we do that over
      the serialized version we receive.
      
      Change-Id: I838e0d5dec2f79f88fab63d92bdfb51d92c2f069
      Signed-off-by: default avatarAlessandro Sorniotti <ale.linux@sopit.net>
      011cd41b
  22. 18 Feb, 2017 2 commits
    • Angelo De Caro's avatar
      Replay attack protection · 32668825
      Angelo De Caro authored
      This change-set enforces the field TxID of a
      proposal/transaction to be computed as the result
      of an hash function computed on nonce and creator.
      This is to be able to uniquely identity a proposal/transaction.
      
      In addition, the endorsers verify that a TxID is not duplicated
      by looking up the ledger as done by the committers.
      
      Before merging this change-set, the client-sdk
      needs to be modified to generate the TxID in the
      new expected way.
      
      This change-set comes in the context of
      https://jira.hyperledger.org/browse/FAB-583
      
      
      
      Change-Id: Icc5892976aeec1d4fdca736234355833d04bd4c8
      Signed-off-by: default avatarAngelo De Caro <adc@zurich.ibm.com>
      32668825
    • Luis Sanchez's avatar
      [FAB-2214] 1st block in chain is block 0, not 1 · e49f25fc
      Luis Sanchez authored
      
      
      Made the following changes to fsblkstorage provider:
      
      * Block numbers start at 0, not 1.
      
      * Blockchain height should be last block number + 1.
      
      * A block's Block.Header.Number should be equal to
        the Blockchain height when AddBlock() is called.
      
      * Updated ledger tests to use random temporary dir.
      
      * Update core endorser tests to generate valid block
        numbers.
      
      Change-Id: I0208cd6a4b9da462c29d06126fa651f4c0dcd2fc
      Signed-off-by: default avatarLuis Sanchez <sanchezl@us.ibm.com>
      e49f25fc
  23. 12 Feb, 2017 2 commits
  24. 11 Feb, 2017 2 commits
  25. 09 Feb, 2017 1 commit
    • denyeart's avatar
      [FAB-2052] Finish ledger API GetHistoryForKey() · 9d90fdf6
      denyeart authored
      
      
      Finish the implementation for ledger API GetHistoryForKey().
      
      Lookup the history of key updates by blockNum:tranNum.
      
      For each history record, retrieve the txID and key value
      from block storage. This requires passing a block storage handle
      into the history query executor, and exposing the block storage
      test environment to other packages. Historic txID and key value
      is returned to client to enable simple provenance scenarios.
      
      Added tests for GetHistoryForKey() including recovery scenarios.
      One test required a fix to block storage syncIndex().
      Also tested end-to-end with peer.
      
      Change-Id: I988130e9682f5d8d707c4ec37753bc0e7e297269
      Signed-off-by: default avatardenyeart <enyeart@us.ibm.com>
      9d90fdf6
  26. 08 Feb, 2017 1 commit
  27. 04 Feb, 2017 1 commit
    • denyeart's avatar
      [FAB-2009] Add RetrieveTxByBlockNumTranNum · 96cd9a73
      denyeart authored
      
      
      History database returns the list of (blockNum,tranNum) that
      updated a key.
      RetrieveTxByBlockNumTranNum will allow kvledger
      to retrieve transaction history for this list of key updates.
      
      Change-Id: I9ff3ed6c273c57b65223b283c4f602910e5982bf
      Signed-off-by: default avatardenyeart <enyeart@us.ibm.com>
      96cd9a73
  28. 03 Feb, 2017 1 commit
    • manish's avatar
      Move Blockstorage code under /fabric/common package · 2a16532c
      manish authored
      https://jira.hyperledger.org/browse/FAB-2022
      
      
      
      This changes introduced by this CR
      - Moves the block storage code from package
      core/ledger/blkstorage to common/ledger/blkstorage
      
      - Splits the ledger_interface.go so as to move common interfaces
      and data type to common/ledger package
      
      - Moves some of the util functions to common/ledger package
      
      - Moves core/ledger/ordererledger package to orderer/ledger/fsledger
      orderer folks can futher rename/refactor this as seems suitable to them
      
      Change-Id: I759e16f00dc2ec9bb62196121083cf48eae76948
      Signed-off-by: default avatarmanish <manish.sethi@gmail.com>
      2a16532c