summaryrefslogtreecommitdiff
path: root/src/mongo/db/s/chunk_splitter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/s/chunk_splitter.cpp')
-rw-r--r--src/mongo/db/s/chunk_splitter.cpp69
1 files changed, 47 insertions, 22 deletions
diff --git a/src/mongo/db/s/chunk_splitter.cpp b/src/mongo/db/s/chunk_splitter.cpp
index f49d08743a7..3c420e838fb 100644
--- a/src/mongo/db/s/chunk_splitter.cpp
+++ b/src/mongo/db/s/chunk_splitter.cpp
@@ -44,6 +44,7 @@
#include "mongo/db/s/split_chunk.h"
#include "mongo/db/s/split_vector.h"
#include "mongo/db/service_context.h"
+#include "mongo/logv2/log.h"
#include "mongo/s/balancer_configuration.h"
#include "mongo/s/catalog/type_chunk.h"
#include "mongo/s/catalog_cache.h"
@@ -204,8 +205,11 @@ bool isAutoBalanceEnabled(OperationContext* opCtx,
auto collStatus = Grid::get(opCtx)->catalogClient()->getCollection(opCtx, nss);
if (!collStatus.isOK()) {
- log() << "Auto-split for " << nss << " failed to load collection metadata"
- << causedBy(redact(collStatus.getStatus()));
+ LOGV2(21903,
+ "Auto-split for {nss} failed to load collection "
+ "metadata{causedBy_collStatus_getStatus}",
+ "nss"_attr = nss,
+ "causedBy_collStatus_getStatus"_attr = causedBy(redact(collStatus.getStatus())));
return false;
}
@@ -245,7 +249,7 @@ void ChunkSplitter::onStepUp() {
}
_isPrimary = true;
- log() << "The ChunkSplitter has started and will accept autosplit tasks.";
+ LOGV2(21904, "The ChunkSplitter has started and will accept autosplit tasks.");
}
void ChunkSplitter::onStepDown() {
@@ -255,8 +259,9 @@ void ChunkSplitter::onStepDown() {
}
_isPrimary = false;
- log() << "The ChunkSplitter has stopped and will no longer run new autosplit tasks. Any "
- << "autosplit tasks that have already started will be allowed to finish.";
+ LOGV2(21905,
+ "The ChunkSplitter has stopped and will no longer run new autosplit tasks. Any autosplit "
+ "tasks that have already started will be allowed to finish.");
}
void ChunkSplitter::waitForIdle() {
@@ -312,9 +317,13 @@ void ChunkSplitter::_runAutosplit(std::shared_ptr<ChunkSplitStateDriver> chunkSp
const uint64_t maxChunkSizeBytes = balancerConfig->getMaxChunkSizeBytes();
- LOG(1) << "about to initiate autosplit: " << redact(chunk.toString())
- << " dataWritten since last check: " << dataWritten
- << " maxChunkSizeBytes: " << maxChunkSizeBytes;
+ LOGV2_DEBUG(21906,
+ 1,
+ "about to initiate autosplit: {chunk} dataWritten since last check: "
+ "{dataWritten} maxChunkSizeBytes: {maxChunkSizeBytes}",
+ "chunk"_attr = redact(chunk.toString()),
+ "dataWritten"_attr = dataWritten,
+ "maxChunkSizeBytes"_attr = maxChunkSizeBytes);
chunkSplitStateDriver->prepareSplit();
auto splitPoints = uassertStatusOK(splitVector(opCtx.get(),
@@ -328,9 +337,11 @@ void ChunkSplitter::_runAutosplit(std::shared_ptr<ChunkSplitStateDriver> chunkSp
maxChunkSizeBytes));
if (splitPoints.empty()) {
- LOG(1)
- << "ChunkSplitter attempted split but not enough split points were found for chunk "
- << redact(chunk.toString());
+ LOGV2_DEBUG(21907,
+ 1,
+ "ChunkSplitter attempted split but not enough split points were found for "
+ "chunk {chunk}",
+ "chunk"_attr = redact(chunk.toString()));
// Reset our size estimate that we had prior to splitVector to 0, while still counting
// the bytes that have been written in parallel to this split task
chunkSplitStateDriver->abandonPrepare();
@@ -377,12 +388,19 @@ void ChunkSplitter::_runAutosplit(std::shared_ptr<ChunkSplitStateDriver> chunkSp
const bool shouldBalance = isAutoBalanceEnabled(opCtx.get(), nss, balancerConfig);
- log() << "autosplitted " << nss << " chunk: " << redact(chunk.toString()) << " into "
- << (splitPoints.size() + 1) << " parts (maxChunkSizeBytes " << maxChunkSizeBytes
- << ")"
- << (topChunkMinKey.isEmpty() ? ""
- : " (top chunk migration suggested" +
- (std::string)(shouldBalance ? ")" : ", but no migrations allowed)"));
+ LOGV2(
+ 21908,
+ "autosplitted {nss} chunk: {chunk} into {splitPoints_size_1} parts (maxChunkSizeBytes "
+ "{maxChunkSizeBytes}){topChunkMinKey_isEmpty_top_chunk_migration_suggested_std_string_"
+ "shouldBalance_but_no_migrations_allowed}",
+ "nss"_attr = nss,
+ "chunk"_attr = redact(chunk.toString()),
+ "splitPoints_size_1"_attr = (splitPoints.size() + 1),
+ "maxChunkSizeBytes"_attr = maxChunkSizeBytes,
+ "topChunkMinKey_isEmpty_top_chunk_migration_suggested_std_string_shouldBalance_but_no_migrations_allowed"_attr =
+ (topChunkMinKey.isEmpty() ? ""
+ : " (top chunk migration suggested" +
+ (std::string)(shouldBalance ? ")" : ", but no migrations allowed)")));
// Because the ShardServerOpObserver uses the metadata from the CSS for tracking incoming
// writes, if we split a chunk but do not force a CSS refresh, subsequent inserts will see
@@ -403,13 +421,20 @@ void ChunkSplitter::_runAutosplit(std::shared_ptr<ChunkSplitStateDriver> chunkSp
// assumption that succeeding inserts will fall on the top chunk.
moveChunk(opCtx.get(), nss, topChunkMinKey);
} catch (const DBException& ex) {
- log() << "Top-chunk optimization failed to move chunk "
- << redact(ChunkRange(min, max).toString()) << " in collection " << nss
- << " after a successful split" << causedBy(redact(ex.toStatus()));
+ LOGV2(21909,
+ "Top-chunk optimization failed to move chunk {ChunkRange_min_max} in collection "
+ "{nss} after a successful split{causedBy_ex_toStatus}",
+ "ChunkRange_min_max"_attr = redact(ChunkRange(min, max).toString()),
+ "nss"_attr = nss,
+ "causedBy_ex_toStatus"_attr = causedBy(redact(ex.toStatus())));
}
} catch (const DBException& ex) {
- log() << "Unable to auto-split chunk " << redact(ChunkRange(min, max).toString())
- << " in namespace " << nss << causedBy(redact(ex.toStatus()));
+ LOGV2(21910,
+ "Unable to auto-split chunk {ChunkRange_min_max} in namespace "
+ "{nss}{causedBy_ex_toStatus}",
+ "ChunkRange_min_max"_attr = redact(ChunkRange(min, max).toString()),
+ "nss"_attr = nss,
+ "causedBy_ex_toStatus"_attr = causedBy(redact(ex.toStatus())));
}
}