Skip to content

Commit 25bcc91

Browse files
authored
HBASE-23037 Make the split WAL related log more readable (#632)
Signed-off-by: Duo Zhang <zhangduo@apache.org>
1 parent 18ac610 commit 25bcc91

File tree

3 files changed

+24
-13
lines changed

3 files changed

+24
-13
lines changed

hbase-server/src/main/java/org/apache/hadoop/hbase/master/SplitLogManager.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
import org.apache.hadoop.hbase.log.HBaseMarkers;
5252
import org.apache.hadoop.hbase.monitoring.MonitoredTask;
5353
import org.apache.hadoop.hbase.monitoring.TaskMonitor;
54+
import org.apache.hadoop.hbase.procedure2.util.StringUtils;
5455
import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
5556
import org.apache.hadoop.hbase.util.FSUtils;
5657
import org.apache.hadoop.hbase.util.HasThread;
@@ -289,10 +290,12 @@ public long splitLogDistributed(final Set<ServerName> serverNames, final List<Pa
289290
}
290291
SplitLogCounters.tot_mgr_log_split_batch_success.increment();
291292
}
292-
String msg = "Finished splitting (more than or equal to) " + totalSize +
293-
" bytes in " + ((batch == null)? 0: batch.installed) +
294-
" log files in " + logDirs + " in " +
295-
((startTime == 0)? startTime: (EnvironmentEdgeManager.currentTime() - startTime)) + "ms";
293+
String msg =
294+
"Finished splitting (more than or equal to) " + StringUtils.humanSize(totalSize) + " (" +
295+
totalSize + " bytes) in " + ((batch == null) ? 0 : batch.installed) + " log files in " +
296+
logDirs + " in " +
297+
((startTime == 0) ? startTime : (EnvironmentEdgeManager.currentTime() - startTime)) +
298+
"ms";
296299
status.markComplete(msg);
297300
LOG.info(msg);
298301
return totalSize;

hbase-server/src/main/java/org/apache/hadoop/hbase/wal/BoundedLogWriterCreationOutputSink.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
import java.io.IOException;
2121
import java.util.ArrayList;
22-
import java.util.Arrays;
2322
import java.util.HashMap;
2423
import java.util.List;
2524
import java.util.Map;
@@ -73,7 +72,7 @@ boolean executeCloseTask(CompletionService<Void> completionService, List<IOExcep
7372
for (final Map.Entry<byte[], WALSplitter.RegionEntryBuffer> buffer : entryBuffers.buffers
7473
.entrySet()) {
7574
LOG.info("Submitting writeThenClose of {}",
76-
Arrays.toString(buffer.getValue().encodedRegionName));
75+
Bytes.toString(buffer.getValue().encodedRegionName));
7776
completionService.submit(new Callable<Void>() {
7877
@Override
7978
public Void call() throws Exception {
@@ -148,4 +147,4 @@ private Path writeThenClose(WALSplitter.RegionEntryBuffer buffer) throws IOExcep
148147
}
149148
return dst;
150149
}
151-
}
150+
}

hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALSplitter.java

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,13 @@
4444
import org.apache.hadoop.hbase.master.SplitLogManager;
4545
import org.apache.hadoop.hbase.monitoring.MonitoredTask;
4646
import org.apache.hadoop.hbase.monitoring.TaskMonitor;
47+
import org.apache.hadoop.hbase.procedure2.util.StringUtils;
4748
import org.apache.hadoop.hbase.regionserver.LastSequenceId;
4849
import org.apache.hadoop.hbase.regionserver.wal.WALCellCodec;
4950
import org.apache.hadoop.hbase.util.Bytes;
5051
import org.apache.hadoop.hbase.util.CancelableProgressable;
5152
import org.apache.hadoop.hbase.util.ClassSize;
53+
import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
5254
import org.apache.hadoop.hbase.util.FSUtils;
5355
import org.apache.hadoop.hbase.wal.WAL.Entry;
5456
import org.apache.hadoop.hbase.wal.WAL.Reader;
@@ -221,9 +223,11 @@ boolean splitLogFile(FileStatus logfile, CancelableProgressable reporter) throws
221223
"Splitting log file " + logfile.getPath() + "into a temporary staging area.");
222224
Reader logFileReader = null;
223225
this.fileBeingSplit = logfile;
226+
long startTS = EnvironmentEdgeManager.currentTime();
224227
try {
225228
long logLength = logfile.getLen();
226-
LOG.info("Splitting WAL={}, length={}", logPath, logLength);
229+
LOG.info("Splitting WAL={}, size={} ({} bytes)", logPath, StringUtils.humanSize(logLength),
230+
logLength);
227231
status.setStatus("Opening log file");
228232
if (reporter != null && !reporter.progress()) {
229233
progress_failed = true;
@@ -234,13 +238,16 @@ boolean splitLogFile(FileStatus logfile, CancelableProgressable reporter) throws
234238
LOG.warn("Nothing to split in WAL={}", logPath);
235239
return true;
236240
}
241+
long openCost = EnvironmentEdgeManager.currentTime() - startTS;
242+
LOG.info("Open WAL={} cost {} ms", logPath, openCost);
237243
int numOpenedFilesBeforeReporting = conf.getInt("hbase.splitlog.report.openedfiles", 3);
238244
int numOpenedFilesLastCheck = 0;
239245
outputSink.setReporter(reporter);
240246
outputSink.startWriterThreads();
241247
outputSinkStarted = true;
242248
Entry entry;
243249
Long lastFlushedSequenceId = -1L;
250+
startTS = EnvironmentEdgeManager.currentTime();
244251
while ((entry = getNextLogLine(logFileReader, logPath, skipErrors)) != null) {
245252
byte[] region = entry.getKey().getEncodedRegionName();
246253
String encodedRegionNameAsStr = Bytes.toString(region);
@@ -324,11 +331,13 @@ boolean splitLogFile(FileStatus logfile, CancelableProgressable reporter) throws
324331
progress_failed = outputSink.finishWritingAndClose() == null;
325332
}
326333
} finally {
327-
String msg =
328-
"Processed " + editsCount + " edits across " + outputSink.getNumberOfRecoveredRegions()
329-
+ " regions; edits skipped=" + editsSkipped + "; log file=" + logPath +
330-
", length=" + logfile.getLen() + // See if length got updated post lease recovery
331-
", corrupted=" + isCorrupted + ", progress failed=" + progress_failed;
334+
long processCost = EnvironmentEdgeManager.currentTime() - startTS;
335+
// See if length got updated post lease recovery
336+
String msg = "Processed " + editsCount + " edits across " +
337+
outputSink.getNumberOfRecoveredRegions() + " regions cost " + processCost +
338+
" ms; edits skipped=" + editsSkipped + "; WAL=" + logPath + ", size=" +
339+
StringUtils.humanSize(logfile.getLen()) + ", length=" + logfile.getLen() +
340+
", corrupted=" + isCorrupted + ", progress failed=" + progress_failed;
332341
LOG.info(msg);
333342
status.markComplete(msg);
334343
}

0 commit comments

Comments
 (0)