{"push_id":3149421674,"size":2,"distinct_size":2,"ref":"refs/heads/master","head":"a08d1a11f9cd9ad2d63d4ef0176ecdac7decfc6b","before":"7d0a5a18f92bca0be12ee2a344ddd9bd351b59dd","commits":[{"sha":"4ecec8be4c6fa2d2b0c770003509b921f1880b6c","author":{"name":"Senthil Nathan N","email":"3790a16fda1d8d2920d2fb2dbedc1a4dc27561ce@gmail.com"},"message":"recon: at a time, only 1 func. can use the Cache\n\nAmong ValidateAndPrepare(), PrepareExpiringKeys(), and\nRemoveStaleAndCommitPvtDataOfOldBlocks(), we can allow only one\nfunction to execute at a time. The reason is that each function calls\nLoadCommittedVersions() which would clear the existing entries in the\ntransient buffer/cache and load new entries (such a transient buffer/cache\nis not applicable for the golevelDB). As a result, these three functions\ncan interleave and nullify the optimization provided by the bulk read API.\nOnce the ledger cache (FAB-103) is introduced and existing\nLoadCommittedVersions() is refactored to return a map, we can allow\nthese three functions to execute parallely.\n\nThis CR ensures that these functions are not executed parallely.\n\nFurther, when we commit the old pvtdata, some of these pvtdata might be\nexpiring at the next block commit. As the toPurgeList might have been already\nconstructed by the last Commit() call, we need to update the toPurgeList\nwith eliglble old pvtdata if it is expiring. Till now, we created new\ntoPurgeList by calling PrepareExpiringKeys() from\nRemoveStaleAndCommitPvtDataOfOldBlocks().\n\nThis CR instead updates the existing toPurgeList rather can calling\nPrepareExpiringKeys(). This is because, we don't want to execute these\nfunctions in parallel. Also, it is optimal to update the existing\nexpiring keys list rather than creating a new one especially when no\nnew regular blocks are being committed for a longer duration and a lot\nof old pvtData are being committed.\n\nFAB-13328 #done\nFAB-13329 #done\n\nChange-Id: Ia715bd1a376c6ce19caa7af6f6510e0cf6f5a1dd\nSigned-off-by: senthil <cendhu@gmail.com>","distinct":true,"url":"https://api.github.com/repos/hyperledger/fabric/commits/4ecec8be4c6fa2d2b0c770003509b921f1880b6c"},{"sha":"a08d1a11f9cd9ad2d63d4ef0176ecdac7decfc6b","author":{"name":"David Enyeart","email":"3d699cfec69cc11a9ba1c3a1aef3260ab163489b@us.ibm.com"},"message":"Merge \"recon: at a time, only 1 func. can use the Cache\"","distinct":true,"url":"https://api.github.com/repos/hyperledger/fabric/commits/a08d1a11f9cd9ad2d63d4ef0176ecdac7decfc6b"}]}
{"actor":{"display_login":"hyperledger-github"}}