public PersistentOfflineTopicStats estimateUnloadedTopicBacklog(ManagedLedgerFactoryImpl factory, TopicName topicName) throws Exception { String managedLedgerName = topicName.getPersistenceNamingEncoding(); long numberOfEntries = 0; long totalSize = 0; final NavigableMap<Long, MLDataFormats.ManagedLedgerInfo.LedgerInfo> ledgers = new ConcurrentSkipListMap<>(); final PersistentOfflineTopicStats offlineTopicStats = new PersistentOfflineTopicStats(managedLedgerName, brokerName); // calculate total managed ledger size and number of entries without loading the topic readLedgerMeta(factory, topicName, ledgers); for (MLDataFormats.ManagedLedgerInfo.LedgerInfo ls : ledgers.values()) { numberOfEntries += ls.getEntries(); totalSize += ls.getSize(); if (accurate) { offlineTopicStats.addLedgerDetails(ls.getEntries(), ls.getTimestamp(), ls.getSize(), ls.getLedgerId()); } } offlineTopicStats.totalMessages = numberOfEntries; offlineTopicStats.storageSize = totalSize; if (log.isDebugEnabled()) { log.debug("[{}] Total number of entries - {} and size - {}", managedLedgerName, numberOfEntries, totalSize); } // calculate per cursor message backlog calculateCursorBacklogs(factory, topicName, ledgers, offlineTopicStats); offlineTopicStats.statGeneratedAt.setTime(System.currentTimeMillis()); return offlineTopicStats; }
hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER; hash = (53 * hash) + com.google.protobuf.Internal.hashLong( getTimestamp());
private ManagedLedgerInfo updateMLInfoTimestamp(ManagedLedgerInfo info) { List<ManagedLedgerInfo.LedgerInfo> infoList = new ArrayList<>(info.getLedgerInfoCount()); long currentTime = System.currentTimeMillis(); for (ManagedLedgerInfo.LedgerInfo ledgerInfo : info.getLedgerInfoList()) { if (!ledgerInfo.hasTimestamp() || ledgerInfo.getTimestamp() == 0) { ManagedLedgerInfo.LedgerInfo.Builder singleInfoBuilder = ledgerInfo.toBuilder(); singleInfoBuilder.setTimestamp(currentTime); infoList.add(singleInfoBuilder.build()); } else { infoList.add(ledgerInfo); } } ManagedLedgerInfo.Builder mlInfo = ManagedLedgerInfo.newBuilder(); mlInfo.addAllLedgerInfo(infoList); if (info.hasTerminatedPosition()) { mlInfo.setTerminatedPosition(info.getTerminatedPosition()); } return mlInfo.build(); }
boolean expired = hasLedgerRetentionExpired(ls.getTimestamp()); boolean overRetentionQuota = isLedgerRetentionOverSizeQuota(); "[{}] Checking ledger {} -- time-old: {} sec -- " + "expired: {} -- over-quota: {} -- current-ledger: {}", name, ls.getLedgerId(), (clock.millis() - ls.getTimestamp()) / 1000.0, expired, overRetentionQuota, currentLedger.getId()); break; } else if (expired) { log.debug("[{}] Ledger {} has expired, ts {}", name, ls.getLedgerId(), ls.getTimestamp()); ledgersToDelete.add(ls); } else if (overRetentionQuota) {
boolean expired = hasLedgerRetentionExpired(ls.getTimestamp()); boolean overRetentionQuota = TOTAL_SIZE_UPDATER.get(this) > ((long) config.getRetentionSizeInMB()) * 1024 * 1024; log.debug( "[{}] Checking ledger {} -- time-old: {} sec -- expired: {} -- over-quota: {} -- current-ledger: {}", name, ls.getLedgerId(), (System.currentTimeMillis() - ls.getTimestamp()) / 1000.0, expired, overRetentionQuota, currentLedger.getId());
result = result && (getTimestamp() == other.getTimestamp());
hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER; hash = (53 * hash) + com.google.protobuf.Internal.hashLong( getTimestamp());
public PersistentOfflineTopicStats estimateUnloadedTopicBacklog(ManagedLedgerFactoryImpl factory, TopicName topicName) throws Exception { String managedLedgerName = topicName.getPersistenceNamingEncoding(); long numberOfEntries = 0; long totalSize = 0; final NavigableMap<Long, MLDataFormats.ManagedLedgerInfo.LedgerInfo> ledgers = new ConcurrentSkipListMap<>(); final PersistentOfflineTopicStats offlineTopicStats = new PersistentOfflineTopicStats(managedLedgerName, brokerName); // calculate total managed ledger size and number of entries without loading the topic readLedgerMeta(factory, topicName, ledgers); for (MLDataFormats.ManagedLedgerInfo.LedgerInfo ls : ledgers.values()) { numberOfEntries += ls.getEntries(); totalSize += ls.getSize(); if (accurate) { offlineTopicStats.addLedgerDetails(ls.getEntries(), ls.getTimestamp(), ls.getSize(), ls.getLedgerId()); } } offlineTopicStats.totalMessages = numberOfEntries; offlineTopicStats.storageSize = totalSize; if (log.isDebugEnabled()) { log.debug("[{}] Total number of entries - {} and size - {}", managedLedgerName, numberOfEntries, totalSize); } // calculate per cursor message backlog calculateCursorBacklogs(factory, topicName, ledgers, offlineTopicStats); offlineTopicStats.statGeneratedAt.setTime(System.currentTimeMillis()); return offlineTopicStats; }
public PersistentOfflineTopicStats estimateUnloadedTopicBacklog(ManagedLedgerFactoryImpl factory, DestinationName dn) throws Exception { String managedLedgerName = dn.getPersistenceNamingEncoding(); long numberOfEntries = 0; long totalSize = 0; final NavigableMap<Long, MLDataFormats.ManagedLedgerInfo.LedgerInfo> ledgers = new ConcurrentSkipListMap<>(); final PersistentOfflineTopicStats offlineTopicStats = new PersistentOfflineTopicStats(managedLedgerName, brokerName); // calculate total managed ledger size and number of entries without loading the topic readLedgerMeta(factory, dn, ledgers); for (MLDataFormats.ManagedLedgerInfo.LedgerInfo ls : ledgers.values()) { numberOfEntries += ls.getEntries(); totalSize += ls.getSize(); if (accurate) { offlineTopicStats.addLedgerDetails(ls.getEntries(), ls.getTimestamp(), ls.getSize(), ls.getLedgerId()); } } offlineTopicStats.totalMessages = numberOfEntries; offlineTopicStats.storageSize = totalSize; if (log.isDebugEnabled()) { log.debug("[{}] Total number of entries - {} and size - {}", managedLedgerName, numberOfEntries, totalSize); } // calculate per cursor message backlog calculateCursorBacklogs(factory, dn, ledgers, offlineTopicStats); offlineTopicStats.statGeneratedAt.setTime(System.currentTimeMillis()); return offlineTopicStats; }
public Builder mergeFrom(org.apache.bookkeeper.mledger.proto.MLDataFormats.ManagedLedgerInfo.LedgerInfo other) { if (other == org.apache.bookkeeper.mledger.proto.MLDataFormats.ManagedLedgerInfo.LedgerInfo.getDefaultInstance()) return this; if (other.hasLedgerId()) { setLedgerId(other.getLedgerId()); } if (other.hasEntries()) { setEntries(other.getEntries()); } if (other.hasSize()) { setSize(other.getSize()); } if (other.hasTimestamp()) { setTimestamp(other.getTimestamp()); } if (other.hasOffloadContext()) { mergeOffloadContext(other.getOffloadContext()); } this.mergeUnknownFields(other.unknownFields); onChanged(); return this; }
private ManagedLedgerInfo updateMLInfoTimestamp(ManagedLedgerInfo info) { List<ManagedLedgerInfo.LedgerInfo> infoList = new ArrayList<>(info.getLedgerInfoCount()); long currentTime = System.currentTimeMillis(); for (ManagedLedgerInfo.LedgerInfo ledgerInfo : info.getLedgerInfoList()) { if (!ledgerInfo.hasTimestamp() || ledgerInfo.getTimestamp() == 0) { ManagedLedgerInfo.LedgerInfo.Builder singleInfoBuilder = ledgerInfo.toBuilder(); singleInfoBuilder.setTimestamp(currentTime); infoList.add(singleInfoBuilder.build()); } else { infoList.add(ledgerInfo); } } ManagedLedgerInfo.Builder mlInfo = ManagedLedgerInfo.newBuilder(); mlInfo.addAllLedgerInfo(infoList); if (info.hasTerminatedPosition()) { mlInfo.setTerminatedPosition(info.getTerminatedPosition()); } return mlInfo.build(); }
private ManagedLedgerInfo updateMLInfoTimestamp(ManagedLedgerInfo info) { List<ManagedLedgerInfo.LedgerInfo> infoList = new ArrayList<>(info.getLedgerInfoCount()); long currentTime = System.currentTimeMillis(); for (ManagedLedgerInfo.LedgerInfo ledgerInfo : info.getLedgerInfoList()) { if (!ledgerInfo.hasTimestamp() || ledgerInfo.getTimestamp() == 0) { ManagedLedgerInfo.LedgerInfo.Builder singleInfoBuilder = ledgerInfo.toBuilder(); singleInfoBuilder.setTimestamp(currentTime); infoList.add(singleInfoBuilder.build()); } else { infoList.add(ledgerInfo); } } ManagedLedgerInfo.Builder mlInfo = ManagedLedgerInfo.newBuilder(); mlInfo.addAllLedgerInfo(infoList); if (info.hasTerminatedPosition()) { mlInfo.setTerminatedPosition(info.getTerminatedPosition()); } return mlInfo.build(); }
public Builder mergeFrom(org.apache.bookkeeper.mledger.proto.MLDataFormats.ManagedLedgerInfo.LedgerInfo other) { if (other == org.apache.bookkeeper.mledger.proto.MLDataFormats.ManagedLedgerInfo.LedgerInfo.getDefaultInstance()) return this; if (other.hasLedgerId()) { setLedgerId(other.getLedgerId()); } if (other.hasEntries()) { setEntries(other.getEntries()); } if (other.hasSize()) { setSize(other.getSize()); } if (other.hasTimestamp()) { setTimestamp(other.getTimestamp()); } this.mergeUnknownFields(other.getUnknownFields()); return this; }
boolean expired = hasLedgerRetentionExpired(ls.getTimestamp()); boolean overRetentionQuota = isLedgerRetentionOverSizeQuota(); "[{}] Checking ledger {} -- time-old: {} sec -- " + "expired: {} -- over-quota: {} -- current-ledger: {}", name, ls.getLedgerId(), (clock.millis() - ls.getTimestamp()) / 1000.0, expired, overRetentionQuota, currentLedger.getId()); break; } else if (expired) { log.debug("[{}] Ledger {} has expired, ts {}", name, ls.getLedgerId(), ls.getTimestamp()); ledgersToDelete.add(ls); } else if (overRetentionQuota) {
LedgerInfo i = iter.next(); if (iter.hasNext()) { assertTrue(ts <= i.getTimestamp(), i.toString()); ts = i.getTimestamp(); } else { assertTrue(i.getTimestamp() == 0 || ts <= i.getTimestamp(), i.toString()); LedgerInfo i = iter.next(); if (iter.hasNext()) { assertTrue(ts <= i.getTimestamp(), i.toString()); ts = i.getTimestamp(); } else { assertTrue(i.getTimestamp() > 0, "well closed LedgerInfo should set a timestamp > 0");
result = result && (getTimestamp() == other.getTimestamp());
public Builder mergeFrom(org.apache.bookkeeper.mledger.proto.MLDataFormats.ManagedLedgerInfo.LedgerInfo other) { if (other == org.apache.bookkeeper.mledger.proto.MLDataFormats.ManagedLedgerInfo.LedgerInfo.getDefaultInstance()) return this; if (other.hasLedgerId()) { setLedgerId(other.getLedgerId()); } if (other.hasEntries()) { setEntries(other.getEntries()); } if (other.hasSize()) { setSize(other.getSize()); } if (other.hasTimestamp()) { setTimestamp(other.getTimestamp()); } if (other.hasOffloadContext()) { mergeOffloadContext(other.getOffloadContext()); } this.mergeUnknownFields(other.unknownFields); onChanged(); return this; }