@@ -273,7 +273,7 @@ public void publishReadTiming(String znode, String server, long msTime) {
273273 public static class RegionStdOutSink extends StdOutSink {
274274 private Map <String , LongAdder > perTableReadLatency = new HashMap <>();
275275 private LongAdder writeLatency = new LongAdder ();
276- private final Map <String , RegionTaskResult > regionMap = new ConcurrentHashMap <>();
276+ private final Map <String , List < RegionTaskResult > > regionMap = new ConcurrentHashMap <>();
277277
278278 public void publishReadFailure (ServerName serverName , RegionInfo region , Exception e ) {
279279 incReadFailureCount ();
@@ -289,10 +289,13 @@ public void publishReadFailure(ServerName serverName, RegionInfo region,
289289
290290 public void publishReadTiming (ServerName serverName , RegionInfo region ,
291291 ColumnFamilyDescriptor column , long msTime ) {
292+ RegionTaskResult rtr = new RegionTaskResult (region , region .getTable (), serverName , column );
293+ rtr .setReadSuccess ();
294+ rtr .setReadLatency (msTime );
295+ List <RegionTaskResult > rtrs = regionMap .get (region .getRegionNameAsString ());
296+ rtrs .add (rtr );
297+ // Note that read success count will be equal to total column family read successes.
292298 incReadSuccessCount ();
293- RegionTaskResult res = this .regionMap .get (region .getRegionNameAsString ());
294- res .setReadSuccess ();
295- res .setReadLatency (msTime );
296299 LOG .info ("Read from {} on {} {} in {}ms" , region .getRegionNameAsString (), serverName ,
297300 column .getNameAsString (), msTime );
298301 }
@@ -311,10 +314,13 @@ public void publishWriteFailure(ServerName serverName, RegionInfo region,
311314
312315 public void publishWriteTiming (ServerName serverName , RegionInfo region ,
313316 ColumnFamilyDescriptor column , long msTime ) {
317+ RegionTaskResult rtr = new RegionTaskResult (region , region .getTable (), serverName , column );
318+ rtr .setWriteSuccess ();
319+ rtr .setWriteLatency (msTime );
320+ List <RegionTaskResult > rtrs = regionMap .get (region .getRegionNameAsString ());
321+ rtrs .add (rtr );
322+ // Note that write success count will be equal to total column family write successes.
314323 incWriteSuccessCount ();
315- RegionTaskResult res = this .regionMap .get (region .getRegionNameAsString ());
316- res .setWriteSuccess ();
317- res .setWriteLatency (msTime );
318324 LOG .info ("Write to {} on {} {} in {}ms" ,
319325 region .getRegionNameAsString (), serverName , column .getNameAsString (), msTime );
320326 }
@@ -337,7 +343,7 @@ public LongAdder getWriteLatency() {
337343 return this .writeLatency ;
338344 }
339345
340- public Map <String , RegionTaskResult > getRegionMap () {
346+ public Map <String , List < RegionTaskResult > > getRegionMap () {
341347 return this .regionMap ;
342348 }
343349
@@ -1046,15 +1052,18 @@ public static class RegionTaskResult {
10461052 private RegionInfo region ;
10471053 private TableName tableName ;
10481054 private ServerName serverName ;
1055+ private ColumnFamilyDescriptor column ;
10491056 private AtomicLong readLatency = null ;
10501057 private AtomicLong writeLatency = null ;
10511058 private boolean readSuccess = false ;
10521059 private boolean writeSuccess = false ;
10531060
1054- public RegionTaskResult (RegionInfo region , TableName tableName , ServerName serverName ) {
1061+ public RegionTaskResult (RegionInfo region , TableName tableName , ServerName serverName ,
1062+ ColumnFamilyDescriptor column ) {
10551063 this .region = region ;
10561064 this .tableName = tableName ;
10571065 this .serverName = serverName ;
1066+ this .column = column ;
10581067 }
10591068
10601069 public RegionInfo getRegionInfo () {
@@ -1081,6 +1090,14 @@ public String getServerNameAsString() {
10811090 return this .serverName .getServerName ();
10821091 }
10831092
1093+ public ColumnFamilyDescriptor getColumnFamily () {
1094+ return this .column ;
1095+ }
1096+
1097+ public String getColumnFamilyNameAsString () {
1098+ return this .column .getNameAsString ();
1099+ }
1100+
10841101 public long getReadLatency () {
10851102 if (this .readLatency == null ) {
10861103 return -1 ;
@@ -1566,9 +1583,8 @@ private static List<Future<Void>> sniff(final Admin admin, final Sink sink,
15661583 RegionInfo region = location .getRegion ();
15671584 tasks .add (new RegionTask (admin .getConnection (), region , rs , (RegionStdOutSink )sink ,
15681585 taskType , rawScanEnabled , rwLatency ));
1569- Map <String , RegionTaskResult > regionMap = ((RegionStdOutSink ) sink ).getRegionMap ();
1570- regionMap .put (region .getRegionNameAsString (), new RegionTaskResult (region ,
1571- region .getTable (), rs ));
1586+ Map <String , List <RegionTaskResult >> regionMap = ((RegionStdOutSink ) sink ).getRegionMap ();
1587+ regionMap .put (region .getRegionNameAsString (), new ArrayList <RegionTaskResult >());
15721588 }
15731589 return executor .invokeAll (tasks );
15741590 }
0 commit comments