From eee4404e4e7d20fc19d3b723abb3169c6eb6709d Mon Sep 17 00:00:00 2001 From: Evan Tschannen Date: Fri, 27 Sep 2019 19:11:34 -0700 Subject: [PATCH] fix: when the shard pointer is replaced with a new AddingShard, we need to restart the warningLogger because the old one will have a pointer to the deleted AddingShard --- fdbserver/storageserver.actor.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fdbserver/storageserver.actor.cpp b/fdbserver/storageserver.actor.cpp index c9908f62ab..8a403af315 100644 --- a/fdbserver/storageserver.actor.cpp +++ b/fdbserver/storageserver.actor.cpp @@ -105,7 +105,7 @@ struct AddingShard : NonCopyable { struct StorageServer* server; Version transferredVersion; - enum Phase { WaitPrevious, Fetching, Waiting }; + enum Phase { WaitPrevious, Fetching, Waiting }; Phase phase; AddingShard( StorageServer* server, KeyRangeRef const& keys ); @@ -2068,6 +2068,7 @@ ACTOR Future fetchKeys( StorageServer *data, AddingShard* shard ) { shard->server->addShard( ShardInfo::addingSplitLeft( KeyRangeRef(keys.begin, nfk), shard ) ); shard->server->addShard( ShardInfo::newAdding( data, KeyRangeRef(nfk, keys.end) ) ); shard = data->shards.rangeContaining( keys.begin ).value()->adding; + warningLogger = logFetchKeysWarning(shard); AddingShard* otherShard = data->shards.rangeContaining( nfk ).value()->adding; keys = shard->keys;