diff --git a/fdbserver/storageserver.actor.cpp b/fdbserver/storageserver.actor.cpp index 0d0e7a1fb7b..f4375668be8 100644 --- a/fdbserver/storageserver.actor.cpp +++ b/fdbserver/storageserver.actor.cpp @@ -10010,9 +10010,28 @@ void changeServerKeysWithPhysicalShards(StorageServer* data, .detail("PhysicalShard", currentShard->toStorageServerShard().toString()); } if (!currentShard.isValid()) { - ASSERT(currentRange == keys); // there shouldn't be any nulls except for the range being inserted + if (currentRange != keys) { + TraceEvent(SevError, "PhysicalShardStateError") + .detail("SubError", "RangeDifferent") + .detail("CurrentRange", currentRange) + .detail("ModifiedRange", keys) + .detail("Assigned", nowAssigned) + .detail("DataMoveId", dataMoveId) + .detail("Version", version); + throw internal_error(); + } } else if (currentShard->notAssigned()) { - ASSERT(nowAssigned); // Adding a new range to the server. + if (!nowAssigned) { + TraceEvent(SevError, "PhysicalShardStateError") + .detail("SubError", "UnassignEmptyRange") + .detail("Assigned", nowAssigned) + .detail("ModifiedRange", keys) + .detail("DataMoveId", dataMoveId) + .detail("Version", version) + .detail("ConflictingShard", currentShard->shardId) + .detail("DesiredShardId", currentShard->desiredShardId); + throw internal_error(); + } StorageServerShard newShard = currentShard->toStorageServerShard(); newShard.range = currentRange; data->addShard(ShardInfo::newShard(data, newShard)); @@ -10031,7 +10050,17 @@ void changeServerKeysWithPhysicalShards(StorageServer* data, .detail("Version", cVer) .detail("ResultingShard", newShard.toString()); } else if (currentShard->adding) { - ASSERT(!nowAssigned); + if (nowAssigned) { + TraceEvent(SevError, "PhysicalShardStateError") + .detail("SubError", "UpdateAddingShard") + .detail("Assigned", nowAssigned) + .detail("ModifiedRange", keys) + .detail("DataMoveId", dataMoveId) + .detail("Version", version) + .detail("ConflictingShard", currentShard->shardId) + .detail("DesiredShardId", currentShard->desiredShardId); + throw internal_error(); + } StorageServerShard newShard = currentShard->toStorageServerShard(); newShard.range = currentRange; data->addShard(ShardInfo::newShard(data, newShard)); @@ -10041,7 +10070,17 @@ void changeServerKeysWithPhysicalShards(StorageServer* data, .detail("Version", cVer) .detail("ResultingShard", newShard.toString()); } else if (currentShard->moveInShard) { - ASSERT(!nowAssigned); + if (nowAssigned) { + TraceEvent(SevError, "PhysicalShardStateError") + .detail("SubError", "UpdateMoveInShard") + .detail("Assigned", nowAssigned) + .detail("ModifiedRange", keys) + .detail("DataMoveId", dataMoveId) + .detail("Version", version) + .detail("ConflictingShard", currentShard->shardId) + .detail("DesiredShardId", currentShard->desiredShardId); + throw internal_error(); + } currentShard->moveInShard->cancel(); updatedMoveInShards.emplace(currentShard->moveInShard->id(), currentShard->moveInShard); StorageServerShard newShard = currentShard->toStorageServerShard();