github.com/hechain20/hechain@v0.0.0-20220316014945-b544036ba106/core/ledger/kvledger/ledger_data_remover.go (about) 1 /* 2 Copyright hechain. All Rights Reserved. 3 4 SPDX-License-Identifier: Apache-2.0 5 */ 6 7 package kvledger 8 9 import ( 10 "github.com/hechain20/hechain/common/ledger/blkstorage" 11 "github.com/hechain20/hechain/core/ledger/confighistory" 12 "github.com/hechain20/hechain/core/ledger/kvledger/bookkeeping" 13 "github.com/hechain20/hechain/core/ledger/kvledger/history" 14 "github.com/hechain20/hechain/core/ledger/kvledger/txmgmt/privacyenabledstate" 15 "github.com/hechain20/hechain/core/ledger/pvtdatastorage" 16 ) 17 18 type ledgerDataRemover struct { 19 blkStoreProvider *blkstorage.BlockStoreProvider 20 statedbProvider *privacyenabledstate.DBProvider 21 configHistoryMgr *confighistory.Mgr 22 bookkeepingProvider *bookkeeping.Provider 23 historydbProvider *history.DBProvider 24 pvtdataStoreProvider *pvtdatastorage.Provider 25 } 26 27 // Drop drops channel-specific data from all the ledger DBs, which includes 28 // stateDB, configHistoryDB, bookkeeperDB, historyDB, pvtdataStore, block index and blocks directory. 29 // This function can be called multiple times for the same ledgerID. It is not an error if the ledger 30 // does not exist. The data consistency and concurrency control will be handled outside of this function. 31 func (r *ledgerDataRemover) Drop(ledgerID string) error { 32 logger.Infow("Dropping ledger data", "channel", ledgerID) 33 var err error 34 if err = r.statedbProvider.Drop(ledgerID); err != nil { 35 logger.Errorw("failed to drop ledger data from stateDB", "channel", ledgerID, "error", err) 36 return err 37 } 38 39 if err = r.configHistoryMgr.Drop(ledgerID); err != nil { 40 logger.Errorw("failed to drop ledger data from configHistoryDB", "channel", ledgerID, "error", err) 41 return err 42 } 43 44 if err := r.bookkeepingProvider.Drop(ledgerID); err != nil { 45 logger.Errorw("failed to drop ledger data from bookkeepingDB", "channel", ledgerID, "error", err) 46 return err 47 } 48 49 if r.historydbProvider != nil { 50 if err = r.historydbProvider.Drop(ledgerID); err != nil { 51 logger.Errorw("failed to drop ledger data from historyDB", "channel", ledgerID, "error", err) 52 return err 53 } 54 } 55 56 if err = r.pvtdataStoreProvider.Drop(ledgerID); err != nil { 57 logger.Errorw("failed to drop ledger data from pvtdataStore", "channel", ledgerID, "error", err) 58 return err 59 } 60 61 if err = r.blkStoreProvider.Drop(ledgerID); err != nil { 62 logger.Errorw("failed to drop ledger data from blockstore", "channel", ledgerID, "error", err) 63 return err 64 } 65 return nil 66 }