MCPcopy Create free account
hub / github.com/facebook/CacheLib / tryRecover

Method tryRecover

cachelib/interface/components/FlashCacheComponent.cpp:607–631  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

605 coroToFiberLatency_(std::make_unique<util::PercentileStats>()) {}
606
607void FlashCacheComponent::tryRecover() {
608 if (persistenceConfig_.recover()) {
609 bool recovered = false;
610 try {
611 auto metadataSize = persistenceConfig_.metadataSize();
612 auto rr = navy::createMetadataRecordReader(*device_, metadataSize);
613 XDCHECK(rr) << "failed to create metadata reader";
614 if (!rr->isEnd() && cache_->recover(*rr)) {
615 // If recovery is successful, invalidate the metadata
616 auto rw = createMetadataRecordWriter(*device_, metadataSize);
617 XDCHECK(rw) << "failed to create metadata writer";
618 recovered = rw->invalidate();
619 }
620 } catch (const std::exception& e) {
621 XLOG(WARN) << "Exception while recovering flash cache: " << e.what();
622 recovered = false;
623 }
624
625 if (!recovered) {
626 cache_->reset();
627 XLOG(WARN) << "Failed to recover flash cache from device, creating a "
628 "new empty cache";
629 }
630 }
631}
632
633bool FlashCacheComponent::writeBackImpl(CacheItem& item, bool allowReplace) {
634 auto& fccItem = static_cast<FlashCacheItem&>(item);

Callers 1

createMethod · 0.45

Calls 8

whatMethod · 0.80
recoverMethod · 0.45
metadataSizeMethod · 0.45
isEndMethod · 0.45
invalidateMethod · 0.45
resetMethod · 0.45

Tested by

no test coverage detected