diff --git a/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java b/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java index 18bdf6091193..b9d089f48741 100644 --- a/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java +++ b/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java @@ -180,7 +180,35 @@ public static CommitLogReplayer construct(CommitLog commitLog, UUID localHostId) cfPersisted.put(cfs.metadata.id, filter); } CommitLogPosition globalPosition = firstNotCovered(cfPersisted.values()); - logger.debug("Global replay position is {} from columnfamilies {}", globalPosition, FBUtilities.toString(cfPersisted)); + + // Limit the amount of column family data logged to prevent massive log lines + if (logger.isDebugEnabled()) + { + int maxColumnFamiliesToLog = 10; + int cfCount = cfPersisted.size(); + if (cfCount <= maxColumnFamiliesToLog) + { + logger.debug("Global replay position is {} from {} columnfamilies: {}", + globalPosition, cfCount, FBUtilities.toString(cfPersisted)); + } + else + { + // For large numbers of column families, just log the count and a sample + Map> sample = new HashMap<>(); + int count = 0; + for (Map.Entry> entry : cfPersisted.entrySet()) + { + if (count++ >= maxColumnFamiliesToLog) + break; + sample.put(entry.getKey(), entry.getValue()); + } + logger.debug("Global replay position is {} from {} columnfamilies (showing first {}): {}", + globalPosition, cfCount, maxColumnFamiliesToLog, FBUtilities.toString(sample)); + logger.debug("Use TRACE level to see all {} columnfamilies", cfCount); + logger.trace("Full columnfamilies list: {}", FBUtilities.toString(cfPersisted)); + } + } + return new CommitLogReplayer(commitLog, globalPosition, cfPersisted, replayFilter); } @@ -429,7 +457,25 @@ public static IntervalSet persistedIntervals(Iterable sample = new ArrayList<>(); + int count = 0; + for (String sstable : skippedSSTables) + { + if (count++ >= maxSSTablesToLog) + break; + sample.add(sstable); + } + logger.debug("Ignored commitLogIntervals from {} sstables (showing first {}): {}", + skippedSSTables.size(), maxSSTablesToLog, sample); + logger.debug("Use TRACE level to see all {} skipped sstables", skippedSSTables.size()); + logger.trace("Full list of ignored sstables: {}", skippedSSTables); + } } if (truncatedAt != null)