From a354f6ffa28c132cbe225103b57e518649231d44 Mon Sep 17 00:00:00 2001 From: Meng Xu Date: Wed, 26 Feb 2020 14:12:56 -0800 Subject: [PATCH] FastRestore:Applier:Use isSchedulable to guard OOM --- fdbserver/RestoreApplier.actor.cpp | 5 ++++- fdbserver/RestoreRoleCommon.actor.h | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/fdbserver/RestoreApplier.actor.cpp b/fdbserver/RestoreApplier.actor.cpp index 4b587db402..b4d936411c 100644 --- a/fdbserver/RestoreApplier.actor.cpp +++ b/fdbserver/RestoreApplier.actor.cpp @@ -112,7 +112,10 @@ ACTOR static Future handleSendMutationVectorRequest(RestoreSendVersionedMu .detail("BatchIndex", req.batchIndex) .detail("RestoreAsset", req.asset.toString()) .detail("ProcessedFileVersion", curFilePos.get()) - .detail("Request", req.toString()); + .detail("Request", req.toString()) + .detail("CurrentMemory", getSystemStatistics().processMemory); + + wait(isSchedulable(self, req.batchIndex, __FUNCTION__); wait(curFilePos.whenAtLeast(req.prevVersion)); diff --git a/fdbserver/RestoreRoleCommon.actor.h b/fdbserver/RestoreRoleCommon.actor.h index 1f54e632dd..a94fb58805 100644 --- a/fdbserver/RestoreRoleCommon.actor.h +++ b/fdbserver/RestoreRoleCommon.actor.h @@ -53,6 +53,7 @@ struct RestoreSimpleRequest; using VersionedMutationsMap = std::map; +ACTOR Future isSchedulable(Reference self, int actorBatchIndex, std::string name); ACTOR Future handleHeartbeat(RestoreSimpleRequest req, UID id); ACTOR Future handleInitVersionBatchRequest(RestoreVersionBatchRequest req, Reference self); void handleFinishRestoreRequest(const RestoreFinishRequest& req, Reference self);