Ejemplo n.º 1
0
  /** Calculates and adds owner partition stats. */
  protected void addOwnerPartitionStats(
      LocalMapStatsImpl stats,
      LocalMapOnDemandCalculatedStats onDemandStats,
      String mapName,
      int partitionId) {
    RecordStore recordStore = getRecordStoreOrNull(mapName, partitionId);
    if (!hasRecords(recordStore)) {
      return;
    }
    int lockedEntryCount = 0;
    long lastAccessTime = 0;
    long lastUpdateTime = 0;
    long hits = 0;

    Iterator<Record> iterator = recordStore.iterator();
    while (iterator.hasNext()) {
      Record record = iterator.next();
      Data key = record.getKey();

      hits += getHits(record);
      lockedEntryCount += isLocked(key, recordStore);
      lastAccessTime = Math.max(lastAccessTime, record.getLastAccessTime());
      lastUpdateTime = Math.max(lastUpdateTime, record.getLastUpdateTime());
    }

    onDemandStats.incrementLockedEntryCount(lockedEntryCount);
    onDemandStats.incrementHits(hits);
    onDemandStats.incrementDirtyEntryCount(
        recordStore.getMapDataStore().notFinishedOperationsCount());
    onDemandStats.incrementOwnedEntryMemoryCost(recordStore.getHeapCost());
    onDemandStats.incrementHeapCost(recordStore.getHeapCost());
    onDemandStats.incrementOwnedEntryCount(recordStore.size());

    stats.setLastAccessTime(lastAccessTime);
    stats.setLastUpdateTime(lastUpdateTime);
  }