From e65800c0dffa74b032936e5ac96e7ed9e974fefe Mon Sep 17 00:00:00 2001 From: Jon Fu Date: Tue, 6 Aug 2019 11:01:33 -0700 Subject: [PATCH] disallow worker from rejoining as SS if marked as failed --- fdbserver/MoveKeys.actor.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/fdbserver/MoveKeys.actor.cpp b/fdbserver/MoveKeys.actor.cpp index a40f5f82ba..8d84efe8c7 100644 --- a/fdbserver/MoveKeys.actor.cpp +++ b/fdbserver/MoveKeys.actor.cpp @@ -738,13 +738,17 @@ ACTOR Future> addStorageServer( Database cx, StorageServ StringRef(encodeExcludedServersKey( AddressExclusion( server.address().ip, server.address().port ))) ); state Future> fExclIP = tr.get( StringRef(encodeExcludedServersKey( AddressExclusion( server.address().ip ))) ); + state Future> fFailProc = tr.get( + StringRef(encodeFailedServersKey( AddressExclusion( server.address().ip, server.address().port ))) ); + state Future> fFailIP = tr.get( + StringRef(encodeFailedServersKey( AddressExclusion( server.address().ip ))) ); state Future> fTags = tr.getRange( serverTagKeys, CLIENT_KNOBS->TOO_MANY, true); state Future> fHistoryTags = tr.getRange( serverTagHistoryKeys, CLIENT_KNOBS->TOO_MANY, true); - wait( success(fTagLocalities) && success(fv) && success(fExclProc) && success(fExclIP) && success(fTags) && success(fHistoryTags) ); + wait( success(fTagLocalities) && success(fv) && success(fExclProc) && success(fExclIP) && success(fFailProc) && success(fFailIP) && success(fTags) && success(fHistoryTags) ); - // If we have been added to the excluded state servers list, we have to fail - if (fExclProc.get().present() || fExclIP.get().present()) + // If we have been added to the excluded/failed state servers list, we have to fail + if (fExclProc.get().present() || fExclIP.get().present() || fFailProc.get().present() || fFailIP.get().present() ) throw recruitment_failed(); if(fTagLocalities.get().more || fTags.get().more || fHistoryTags.get().more)