HBASE-13054 Provide more tracing information for locking/latching events.(Rajeshbabu)
This commit is contained in:
parent
47d081407e
commit
7792dee0c3
|
@ -402,6 +402,9 @@ public class HFileReaderV2 extends AbstractHFileReader {
|
|||
HFileBlock cachedBlock = getCachedBlock(cacheKey, cacheBlock, useLock, isCompaction,
|
||||
updateCacheMetrics, expectedBlockType, expectedDataBlockEncoding);
|
||||
if (cachedBlock != null) {
|
||||
if (Trace.isTracing()) {
|
||||
traceScope.getSpan().addTimelineAnnotation("blockCacheHit");
|
||||
}
|
||||
assert cachedBlock.isUnpacked() : "Packed block leak.";
|
||||
if (cachedBlock.getBlockType().isData()) {
|
||||
if (updateCacheMetrics) {
|
||||
|
|
|
@ -47,6 +47,7 @@ import org.apache.hadoop.hbase.util.CollectionBackedScanner;
|
|||
import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
|
||||
import org.apache.hadoop.hbase.util.Pair;
|
||||
import org.apache.hadoop.hbase.util.ReflectionUtils;
|
||||
import org.apache.htrace.Trace;
|
||||
|
||||
/**
|
||||
* The MemStore holds in-memory modifications to the Store. Modifications
|
||||
|
@ -737,6 +738,9 @@ public class DefaultMemStore implements MemStore {
|
|||
this.snapshotAllocatorAtCreation = snapshotAllocator;
|
||||
this.snapshotAllocatorAtCreation.incScannerCount();
|
||||
}
|
||||
if (Trace.isTracing() && Trace.currentSpan() != null) {
|
||||
Trace.currentSpan().addTimelineAnnotation("Creating MemStoreScanner");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -168,6 +168,8 @@ import org.apache.hadoop.hbase.wal.WALSplitter;
|
|||
import org.apache.hadoop.hbase.wal.WALSplitter.MutationReplay;
|
||||
import org.apache.hadoop.io.MultipleIOException;
|
||||
import org.apache.hadoop.util.StringUtils;
|
||||
import org.apache.htrace.Trace;
|
||||
import org.apache.htrace.TraceScope;
|
||||
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
import com.google.common.base.Optional;
|
||||
|
@ -4694,16 +4696,27 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver { //
|
|||
if (!waitForLock) {
|
||||
return null;
|
||||
}
|
||||
TraceScope traceScope = null;
|
||||
try {
|
||||
if (Trace.isTracing()) {
|
||||
traceScope = Trace.startSpan("HRegion.getRowLockInternal");
|
||||
}
|
||||
// Row is already locked by some other thread, give up or wait for it
|
||||
if (!existingContext.latch.await(this.rowLockWaitDuration, TimeUnit.MILLISECONDS)) {
|
||||
if(traceScope != null) {
|
||||
traceScope.getSpan().addTimelineAnnotation("Failed to get row lock");
|
||||
}
|
||||
throw new IOException("Timed out waiting for lock for row: " + rowKey);
|
||||
}
|
||||
if (traceScope != null) traceScope.close();
|
||||
traceScope = null;
|
||||
} catch (InterruptedException ie) {
|
||||
LOG.warn("Thread interrupted waiting for lock on row: " + rowKey);
|
||||
InterruptedIOException iie = new InterruptedIOException();
|
||||
iie.initCause(ie);
|
||||
throw iie;
|
||||
} finally {
|
||||
if (traceScope != null) traceScope.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue