001/* 002 * Licensed to the Apache Software Foundation (ASF) under one 003 * or more contributor license agreements. See the NOTICE file 004 * distributed with this work for additional information 005 * regarding copyright ownership. The ASF licenses this file 006 * to you under the Apache License, Version 2.0 (the 007 * "License"); you may not use this file except in compliance 008 * with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, software 013 * distributed under the License is distributed on an "AS IS" BASIS, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018package org.apache.hadoop.hbase; 019 020import java.util.Collections; 021import java.util.List; 022import java.util.Map; 023import java.util.stream.Collectors; 024import org.apache.hadoop.hbase.client.CompactionState; 025import org.apache.hadoop.hbase.util.Strings; 026import org.apache.yetus.audience.InterfaceAudience; 027 028import org.apache.hbase.thirdparty.com.google.common.base.Preconditions; 029import org.apache.hbase.thirdparty.com.google.protobuf.UnsafeByteOperations; 030 031import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil; 032import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos; 033import org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos; 034import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos; 035 036@InterfaceAudience.Private 037public final class RegionMetricsBuilder { 038 039 public static List<RegionMetrics> 040 toRegionMetrics(AdminProtos.GetRegionLoadResponse regionLoadResponse) { 041 return regionLoadResponse.getRegionLoadsList().stream() 042 .map(RegionMetricsBuilder::toRegionMetrics).collect(Collectors.toList()); 043 } 044 045 public static RegionMetrics toRegionMetrics(ClusterStatusProtos.RegionLoad regionLoadPB) { 046 return RegionMetricsBuilder 047 .newBuilder(regionLoadPB.getRegionSpecifier().getValue().toByteArray()) 048 .setBloomFilterSize(new Size(regionLoadPB.getTotalStaticBloomSizeKB(), Size.Unit.KILOBYTE)) 049 .setCompactedCellCount(regionLoadPB.getCurrentCompactedKVs()) 050 .setCompactingCellCount(regionLoadPB.getTotalCompactingKVs()) 051 .setCompletedSequenceId(regionLoadPB.getCompleteSequenceId()) 052 .setDataLocality(regionLoadPB.hasDataLocality() ? regionLoadPB.getDataLocality() : 0.0f) 053 .setDataLocalityForSsd( 054 regionLoadPB.hasDataLocalityForSsd() ? regionLoadPB.getDataLocalityForSsd() : 0.0f) 055 .setBlocksLocalWeight( 056 regionLoadPB.hasBlocksLocalWeight() ? regionLoadPB.getBlocksLocalWeight() : 0) 057 .setBlocksLocalWithSsdWeight( 058 regionLoadPB.hasBlocksLocalWithSsdWeight() ? regionLoadPB.getBlocksLocalWithSsdWeight() : 0) 059 .setBlocksTotalWeight(regionLoadPB.getBlocksTotalWeight()) 060 .setCompactionState( 061 ProtobufUtil.createCompactionStateForRegionLoad(regionLoadPB.getCompactionState())) 062 .setFilteredReadRequestCount(regionLoadPB.getFilteredReadRequestsCount()) 063 .setStoreFileUncompressedDataIndexSize( 064 new Size(regionLoadPB.getTotalStaticIndexSizeKB(), Size.Unit.KILOBYTE)) 065 .setLastMajorCompactionTimestamp(regionLoadPB.getLastMajorCompactionTs()) 066 .setMemStoreSize(new Size(regionLoadPB.getMemStoreSizeMB(), Size.Unit.MEGABYTE)) 067 .setReadRequestCount(regionLoadPB.getReadRequestsCount()) 068 .setCpRequestCount(regionLoadPB.getCpRequestsCount()) 069 .setWriteRequestCount(regionLoadPB.getWriteRequestsCount()) 070 .setStoreFileIndexSize(new Size(regionLoadPB.getStorefileIndexSizeKB(), Size.Unit.KILOBYTE)) 071 .setStoreFileRootLevelIndexSize( 072 new Size(regionLoadPB.getRootIndexSizeKB(), Size.Unit.KILOBYTE)) 073 .setStoreCount(regionLoadPB.getStores()).setStoreFileCount(regionLoadPB.getStorefiles()) 074 .setStoreRefCount(regionLoadPB.getStoreRefCount()) 075 .setMaxCompactedStoreFileRefCount(regionLoadPB.getMaxCompactedStoreFileRefCount()) 076 .setStoreFileSize(new Size(regionLoadPB.getStorefileSizeMB(), Size.Unit.MEGABYTE)) 077 .setStoreSequenceIds(regionLoadPB.getStoreCompleteSequenceIdList().stream() 078 .collect(Collectors.toMap( 079 (ClusterStatusProtos.StoreSequenceId s) -> s.getFamilyName().toByteArray(), 080 ClusterStatusProtos.StoreSequenceId::getSequenceId))) 081 .setUncompressedStoreFileSize( 082 new Size(regionLoadPB.getStoreUncompressedSizeMB(), Size.Unit.MEGABYTE)) 083 .setRegionSizeMB(new Size(regionLoadPB.getRegionSizeMB(), Size.Unit.MEGABYTE)) 084 .setCurrentRegionCachedRatio(regionLoadPB.getCurrentRegionCachedRatio()) 085 .setCurrentRegionColdDataRatio(regionLoadPB.getCurrentRegionColdDataRatio()).build(); 086 } 087 088 private static List<ClusterStatusProtos.StoreSequenceId> 089 toStoreSequenceId(Map<byte[], Long> ids) { 090 return ids.entrySet().stream() 091 .map(e -> ClusterStatusProtos.StoreSequenceId.newBuilder() 092 .setFamilyName(UnsafeByteOperations.unsafeWrap(e.getKey())).setSequenceId(e.getValue()) 093 .build()) 094 .collect(Collectors.toList()); 095 } 096 097 public static ClusterStatusProtos.RegionLoad toRegionLoad(RegionMetrics regionMetrics) { 098 return ClusterStatusProtos.RegionLoad.newBuilder() 099 .setRegionSpecifier(HBaseProtos.RegionSpecifier.newBuilder() 100 .setType(HBaseProtos.RegionSpecifier.RegionSpecifierType.REGION_NAME) 101 .setValue(UnsafeByteOperations.unsafeWrap(regionMetrics.getRegionName())).build()) 102 .setTotalStaticBloomSizeKB((int) regionMetrics.getBloomFilterSize().get(Size.Unit.KILOBYTE)) 103 .setCurrentCompactedKVs(regionMetrics.getCompactedCellCount()) 104 .setTotalCompactingKVs(regionMetrics.getCompactingCellCount()) 105 .setCompleteSequenceId(regionMetrics.getCompletedSequenceId()) 106 .setDataLocality(regionMetrics.getDataLocality()) 107 .setFilteredReadRequestsCount(regionMetrics.getFilteredReadRequestCount()) 108 .setTotalStaticIndexSizeKB( 109 (int) regionMetrics.getStoreFileUncompressedDataIndexSize().get(Size.Unit.KILOBYTE)) 110 .setLastMajorCompactionTs(regionMetrics.getLastMajorCompactionTimestamp()) 111 .setMemStoreSizeMB((int) regionMetrics.getMemStoreSize().get(Size.Unit.MEGABYTE)) 112 .setReadRequestsCount(regionMetrics.getReadRequestCount()) 113 .setCpRequestsCount(regionMetrics.getCpRequestCount()) 114 .setWriteRequestsCount(regionMetrics.getWriteRequestCount()) 115 .setStorefileIndexSizeKB((long) regionMetrics.getStoreFileIndexSize().get(Size.Unit.KILOBYTE)) 116 .setRootIndexSizeKB( 117 (int) regionMetrics.getStoreFileRootLevelIndexSize().get(Size.Unit.KILOBYTE)) 118 .setStores(regionMetrics.getStoreCount()).setStorefiles(regionMetrics.getStoreFileCount()) 119 .setStoreRefCount(regionMetrics.getStoreRefCount()) 120 .setMaxCompactedStoreFileRefCount(regionMetrics.getMaxCompactedStoreFileRefCount()) 121 .setStorefileSizeMB((int) regionMetrics.getStoreFileSize().get(Size.Unit.MEGABYTE)) 122 .addAllStoreCompleteSequenceId(toStoreSequenceId(regionMetrics.getStoreSequenceId())) 123 .setStoreUncompressedSizeMB( 124 (int) regionMetrics.getUncompressedStoreFileSize().get(Size.Unit.MEGABYTE)) 125 .setRegionSizeMB((int) regionMetrics.getRegionSizeMB().get(Size.Unit.MEGABYTE)) 126 .setCurrentRegionCachedRatio(regionMetrics.getCurrentRegionCachedRatio()) 127 .setCurrentRegionColdDataRatio(regionMetrics.getCurrentRegionColdDataRatio()).build(); 128 } 129 130 public static RegionMetricsBuilder newBuilder(byte[] name) { 131 return new RegionMetricsBuilder(name); 132 } 133 134 private final byte[] name; 135 private int storeCount; 136 private int storeFileCount; 137 private int storeRefCount; 138 private int maxCompactedStoreFileRefCount; 139 private long compactingCellCount; 140 private long compactedCellCount; 141 private Size storeFileSize = Size.ZERO; 142 private Size memStoreSize = Size.ZERO; 143 private Size indexSize = Size.ZERO; 144 private Size rootLevelIndexSize = Size.ZERO; 145 private Size uncompressedDataIndexSize = Size.ZERO; 146 private Size bloomFilterSize = Size.ZERO; 147 private Size uncompressedStoreFileSize = Size.ZERO; 148 private long writeRequestCount; 149 private long readRequestCount; 150 private long cpRequestCount; 151 private long filteredReadRequestCount; 152 private long completedSequenceId; 153 private Map<byte[], Long> storeSequenceIds = Collections.emptyMap(); 154 private float dataLocality; 155 private long lastMajorCompactionTimestamp; 156 private float dataLocalityForSsd; 157 private long blocksLocalWeight; 158 private long blocksLocalWithSsdWeight; 159 private long blocksTotalWeight; 160 private CompactionState compactionState; 161 private Size regionSizeMB = Size.ZERO; 162 private float currentRegionCachedRatio; 163 private float currentRegionColdDataRatio; 164 165 private RegionMetricsBuilder(byte[] name) { 166 this.name = name; 167 } 168 169 public RegionMetricsBuilder setStoreCount(int value) { 170 this.storeCount = value; 171 return this; 172 } 173 174 public RegionMetricsBuilder setStoreFileCount(int value) { 175 this.storeFileCount = value; 176 return this; 177 } 178 179 public RegionMetricsBuilder setStoreRefCount(int value) { 180 this.storeRefCount = value; 181 return this; 182 } 183 184 public RegionMetricsBuilder setMaxCompactedStoreFileRefCount(int value) { 185 this.maxCompactedStoreFileRefCount = value; 186 return this; 187 } 188 189 public RegionMetricsBuilder setCompactingCellCount(long value) { 190 this.compactingCellCount = value; 191 return this; 192 } 193 194 public RegionMetricsBuilder setCompactedCellCount(long value) { 195 this.compactedCellCount = value; 196 return this; 197 } 198 199 public RegionMetricsBuilder setStoreFileSize(Size value) { 200 this.storeFileSize = value; 201 return this; 202 } 203 204 public RegionMetricsBuilder setMemStoreSize(Size value) { 205 this.memStoreSize = value; 206 return this; 207 } 208 209 public RegionMetricsBuilder setStoreFileIndexSize(Size value) { 210 this.indexSize = value; 211 return this; 212 } 213 214 public RegionMetricsBuilder setStoreFileRootLevelIndexSize(Size value) { 215 this.rootLevelIndexSize = value; 216 return this; 217 } 218 219 public RegionMetricsBuilder setStoreFileUncompressedDataIndexSize(Size value) { 220 this.uncompressedDataIndexSize = value; 221 return this; 222 } 223 224 public RegionMetricsBuilder setBloomFilterSize(Size value) { 225 this.bloomFilterSize = value; 226 return this; 227 } 228 229 public RegionMetricsBuilder setUncompressedStoreFileSize(Size value) { 230 this.uncompressedStoreFileSize = value; 231 return this; 232 } 233 234 public RegionMetricsBuilder setWriteRequestCount(long value) { 235 this.writeRequestCount = value; 236 return this; 237 } 238 239 public RegionMetricsBuilder setReadRequestCount(long value) { 240 this.readRequestCount = value; 241 return this; 242 } 243 244 public RegionMetricsBuilder setCpRequestCount(long value) { 245 this.cpRequestCount = value; 246 return this; 247 } 248 249 public RegionMetricsBuilder setFilteredReadRequestCount(long value) { 250 this.filteredReadRequestCount = value; 251 return this; 252 } 253 254 public RegionMetricsBuilder setCompletedSequenceId(long value) { 255 this.completedSequenceId = value; 256 return this; 257 } 258 259 public RegionMetricsBuilder setStoreSequenceIds(Map<byte[], Long> value) { 260 this.storeSequenceIds = value; 261 return this; 262 } 263 264 public RegionMetricsBuilder setDataLocality(float value) { 265 this.dataLocality = value; 266 return this; 267 } 268 269 public RegionMetricsBuilder setLastMajorCompactionTimestamp(long value) { 270 this.lastMajorCompactionTimestamp = value; 271 return this; 272 } 273 274 public RegionMetricsBuilder setDataLocalityForSsd(float value) { 275 this.dataLocalityForSsd = value; 276 return this; 277 } 278 279 public RegionMetricsBuilder setBlocksLocalWeight(long value) { 280 this.blocksLocalWeight = value; 281 return this; 282 } 283 284 public RegionMetricsBuilder setBlocksLocalWithSsdWeight(long value) { 285 this.blocksLocalWithSsdWeight = value; 286 return this; 287 } 288 289 public RegionMetricsBuilder setBlocksTotalWeight(long value) { 290 this.blocksTotalWeight = value; 291 return this; 292 } 293 294 public RegionMetricsBuilder setCompactionState(CompactionState compactionState) { 295 this.compactionState = compactionState; 296 return this; 297 } 298 299 public RegionMetricsBuilder setRegionSizeMB(Size value) { 300 this.regionSizeMB = value; 301 return this; 302 } 303 304 public RegionMetricsBuilder setCurrentRegionCachedRatio(float value) { 305 this.currentRegionCachedRatio = value; 306 return this; 307 } 308 309 public RegionMetricsBuilder setCurrentRegionColdDataRatio(float value) { 310 this.currentRegionColdDataRatio = value; 311 return this; 312 } 313 314 public RegionMetrics build() { 315 return new RegionMetricsImpl(name, storeCount, storeFileCount, storeRefCount, 316 maxCompactedStoreFileRefCount, compactingCellCount, compactedCellCount, storeFileSize, 317 memStoreSize, indexSize, rootLevelIndexSize, uncompressedDataIndexSize, bloomFilterSize, 318 uncompressedStoreFileSize, writeRequestCount, readRequestCount, cpRequestCount, 319 filteredReadRequestCount, completedSequenceId, storeSequenceIds, dataLocality, 320 lastMajorCompactionTimestamp, dataLocalityForSsd, blocksLocalWeight, blocksLocalWithSsdWeight, 321 blocksTotalWeight, compactionState, regionSizeMB, currentRegionCachedRatio, 322 currentRegionColdDataRatio); 323 } 324 325 private static class RegionMetricsImpl implements RegionMetrics { 326 private final byte[] name; 327 private final int storeCount; 328 private final int storeFileCount; 329 private final int storeRefCount; 330 private final int maxCompactedStoreFileRefCount; 331 private final long compactingCellCount; 332 private final long compactedCellCount; 333 private final Size storeFileSize; 334 private final Size memStoreSize; 335 private final Size indexSize; 336 private final Size rootLevelIndexSize; 337 private final Size uncompressedDataIndexSize; 338 private final Size bloomFilterSize; 339 private final Size uncompressedStoreFileSize; 340 private final long writeRequestCount; 341 private final long readRequestCount; 342 private final long cpRequestCount; 343 private final long filteredReadRequestCount; 344 private final long completedSequenceId; 345 private final Map<byte[], Long> storeSequenceIds; 346 private final float dataLocality; 347 private final long lastMajorCompactionTimestamp; 348 private final float dataLocalityForSsd; 349 private final long blocksLocalWeight; 350 private final long blocksLocalWithSsdWeight; 351 private final long blocksTotalWeight; 352 private final CompactionState compactionState; 353 private final Size regionSizeMB; 354 private final float currentRegionCachedRatio; 355 private final float currentRegionColdDataRatio; 356 357 RegionMetricsImpl(byte[] name, int storeCount, int storeFileCount, int storeRefCount, 358 int maxCompactedStoreFileRefCount, final long compactingCellCount, long compactedCellCount, 359 Size storeFileSize, Size memStoreSize, Size indexSize, Size rootLevelIndexSize, 360 Size uncompressedDataIndexSize, Size bloomFilterSize, Size uncompressedStoreFileSize, 361 long writeRequestCount, long readRequestCount, long cpRequestCount, 362 long filteredReadRequestCount, long completedSequenceId, Map<byte[], Long> storeSequenceIds, 363 float dataLocality, long lastMajorCompactionTimestamp, float dataLocalityForSsd, 364 long blocksLocalWeight, long blocksLocalWithSsdWeight, long blocksTotalWeight, 365 CompactionState compactionState, Size regionSizeMB, float currentRegionCachedRatio, 366 float currentRegionColdDataRatio) { 367 this.name = Preconditions.checkNotNull(name); 368 this.storeCount = storeCount; 369 this.storeFileCount = storeFileCount; 370 this.storeRefCount = storeRefCount; 371 this.maxCompactedStoreFileRefCount = maxCompactedStoreFileRefCount; 372 this.compactingCellCount = compactingCellCount; 373 this.compactedCellCount = compactedCellCount; 374 this.storeFileSize = Preconditions.checkNotNull(storeFileSize); 375 this.memStoreSize = Preconditions.checkNotNull(memStoreSize); 376 this.indexSize = Preconditions.checkNotNull(indexSize); 377 this.rootLevelIndexSize = Preconditions.checkNotNull(rootLevelIndexSize); 378 this.uncompressedDataIndexSize = Preconditions.checkNotNull(uncompressedDataIndexSize); 379 this.bloomFilterSize = Preconditions.checkNotNull(bloomFilterSize); 380 this.uncompressedStoreFileSize = Preconditions.checkNotNull(uncompressedStoreFileSize); 381 this.writeRequestCount = writeRequestCount; 382 this.readRequestCount = readRequestCount; 383 this.cpRequestCount = cpRequestCount; 384 this.filteredReadRequestCount = filteredReadRequestCount; 385 this.completedSequenceId = completedSequenceId; 386 this.storeSequenceIds = Preconditions.checkNotNull(storeSequenceIds); 387 this.dataLocality = dataLocality; 388 this.lastMajorCompactionTimestamp = lastMajorCompactionTimestamp; 389 this.dataLocalityForSsd = dataLocalityForSsd; 390 this.blocksLocalWeight = blocksLocalWeight; 391 this.blocksLocalWithSsdWeight = blocksLocalWithSsdWeight; 392 this.blocksTotalWeight = blocksTotalWeight; 393 this.compactionState = compactionState; 394 this.regionSizeMB = regionSizeMB; 395 this.currentRegionCachedRatio = currentRegionCachedRatio; 396 this.currentRegionColdDataRatio = currentRegionColdDataRatio; 397 } 398 399 @Override 400 public byte[] getRegionName() { 401 return name; 402 } 403 404 @Override 405 public int getStoreCount() { 406 return storeCount; 407 } 408 409 @Override 410 public int getStoreFileCount() { 411 return storeFileCount; 412 } 413 414 @Override 415 public int getStoreRefCount() { 416 return storeRefCount; 417 } 418 419 @Override 420 public int getMaxCompactedStoreFileRefCount() { 421 return maxCompactedStoreFileRefCount; 422 } 423 424 @Override 425 public Size getStoreFileSize() { 426 return storeFileSize; 427 } 428 429 @Override 430 public Size getMemStoreSize() { 431 return memStoreSize; 432 } 433 434 @Override 435 public long getReadRequestCount() { 436 return readRequestCount; 437 } 438 439 @Override 440 public long getCpRequestCount() { 441 return cpRequestCount; 442 } 443 444 @Override 445 public long getFilteredReadRequestCount() { 446 return filteredReadRequestCount; 447 } 448 449 @Override 450 public long getWriteRequestCount() { 451 return writeRequestCount; 452 } 453 454 @Override 455 public Size getStoreFileIndexSize() { 456 return indexSize; 457 } 458 459 @Override 460 public Size getStoreFileRootLevelIndexSize() { 461 return rootLevelIndexSize; 462 } 463 464 @Override 465 public Size getStoreFileUncompressedDataIndexSize() { 466 return uncompressedDataIndexSize; 467 } 468 469 @Override 470 public Size getBloomFilterSize() { 471 return bloomFilterSize; 472 } 473 474 @Override 475 public long getCompactingCellCount() { 476 return compactingCellCount; 477 } 478 479 @Override 480 public long getCompactedCellCount() { 481 return compactedCellCount; 482 } 483 484 @Override 485 public long getCompletedSequenceId() { 486 return completedSequenceId; 487 } 488 489 @Override 490 public Map<byte[], Long> getStoreSequenceId() { 491 return Collections.unmodifiableMap(storeSequenceIds); 492 } 493 494 @Override 495 public Size getUncompressedStoreFileSize() { 496 return uncompressedStoreFileSize; 497 } 498 499 @Override 500 public float getDataLocality() { 501 return dataLocality; 502 } 503 504 @Override 505 public long getLastMajorCompactionTimestamp() { 506 return lastMajorCompactionTimestamp; 507 } 508 509 @Override 510 public float getDataLocalityForSsd() { 511 return dataLocalityForSsd; 512 } 513 514 @Override 515 public long getBlocksLocalWeight() { 516 return blocksLocalWeight; 517 } 518 519 @Override 520 public long getBlocksLocalWithSsdWeight() { 521 return blocksLocalWithSsdWeight; 522 } 523 524 @Override 525 public long getBlocksTotalWeight() { 526 return blocksTotalWeight; 527 } 528 529 @Override 530 public CompactionState getCompactionState() { 531 return compactionState; 532 } 533 534 @Override 535 public Size getRegionSizeMB() { 536 return regionSizeMB; 537 } 538 539 @Override 540 public float getCurrentRegionCachedRatio() { 541 return currentRegionCachedRatio; 542 } 543 544 @Override 545 public float getCurrentRegionColdDataRatio() { 546 return currentRegionColdDataRatio; 547 } 548 549 @Override 550 public String toString() { 551 StringBuilder sb = 552 Strings.appendKeyValue(new StringBuilder(), "storeCount", this.getStoreCount()); 553 Strings.appendKeyValue(sb, "storeFileCount", this.getStoreFileCount()); 554 Strings.appendKeyValue(sb, "storeRefCount", this.getStoreRefCount()); 555 Strings.appendKeyValue(sb, "maxCompactedStoreFileRefCount", 556 this.getMaxCompactedStoreFileRefCount()); 557 Strings.appendKeyValue(sb, "uncompressedStoreFileSize", this.getUncompressedStoreFileSize()); 558 Strings.appendKeyValue(sb, "lastMajorCompactionTimestamp", 559 this.getLastMajorCompactionTimestamp()); 560 Strings.appendKeyValue(sb, "storeFileSize", this.getStoreFileSize()); 561 if (this.getUncompressedStoreFileSize().get() != 0) { 562 Strings.appendKeyValue(sb, "compressionRatio", 563 String.format("%.4f", (float) this.getStoreFileSize().get(Size.Unit.MEGABYTE) 564 / (float) this.getUncompressedStoreFileSize().get(Size.Unit.MEGABYTE))); 565 } 566 Strings.appendKeyValue(sb, "memStoreSize", this.getMemStoreSize()); 567 Strings.appendKeyValue(sb, "readRequestCount", this.getReadRequestCount()); 568 Strings.appendKeyValue(sb, "cpRequestCount", this.getCpRequestCount()); 569 Strings.appendKeyValue(sb, "writeRequestCount", this.getWriteRequestCount()); 570 Strings.appendKeyValue(sb, "rootLevelIndexSize", this.getStoreFileRootLevelIndexSize()); 571 Strings.appendKeyValue(sb, "uncompressedDataIndexSize", 572 this.getStoreFileUncompressedDataIndexSize()); 573 Strings.appendKeyValue(sb, "bloomFilterSize", this.getBloomFilterSize()); 574 Strings.appendKeyValue(sb, "compactingCellCount", this.getCompactingCellCount()); 575 Strings.appendKeyValue(sb, "compactedCellCount", this.getCompactedCellCount()); 576 float compactionProgressPct = Float.NaN; 577 if (this.getCompactingCellCount() > 0) { 578 compactionProgressPct = 579 ((float) this.getCompactedCellCount() / (float) this.getCompactingCellCount()); 580 } 581 Strings.appendKeyValue(sb, "compactionProgressPct", compactionProgressPct); 582 Strings.appendKeyValue(sb, "completedSequenceId", this.getCompletedSequenceId()); 583 Strings.appendKeyValue(sb, "dataLocality", this.getDataLocality()); 584 Strings.appendKeyValue(sb, "dataLocalityForSsd", this.getDataLocalityForSsd()); 585 Strings.appendKeyValue(sb, "blocksLocalWeight", blocksLocalWeight); 586 Strings.appendKeyValue(sb, "blocksLocalWithSsdWeight", blocksLocalWithSsdWeight); 587 Strings.appendKeyValue(sb, "blocksTotalWeight", blocksTotalWeight); 588 Strings.appendKeyValue(sb, "compactionState", compactionState); 589 Strings.appendKeyValue(sb, "regionSizeMB", regionSizeMB); 590 Strings.appendKeyValue(sb, "currentRegionCachedRatio", currentRegionCachedRatio); 591 Strings.appendKeyValue(sb, "currentRegionColdDataRatio", currentRegionColdDataRatio); 592 return sb.toString(); 593 } 594 } 595 596}