/** * Utility method for formatting a duration in nano seconds * into a human readable string. * @param nanos number of nano seconds * @return human readable string */ public static String formatTime(long nanos) { return TimeDurationFormatter.forLogging().format(nanos, TimeUnit.NANOSECONDS); }
if (deleteSplitDocsElapsed > 0) { timeDeletingSplitDocs = String.format(" (of which %s deleting)", df.format(deleteSplitDocsElapsed, MICROSECONDS)); timings = String.format(fmt, df.format(collectDeletedDocsElapsed, MICROSECONDS), df.format(checkDeletedDocsElapsed, MICROSECONDS), df.format(sortDocIdsElapsed, MICROSECONDS), df.format(updateResurrectedDocumentsElapsed, MICROSECONDS), df.format(deleteDeletedDocsElapsed, MICROSECONDS), df.format(collectAndDeleteSplitDocsElapsed, MICROSECONDS), timeDeletingSplitDocs); } else { if (deleteSplitDocs.elapsed(MICROSECONDS) > 0) { timeDeletingSplitDocs = String.format(" (of which %s deleting)", df.format(deleteSplitDocs.elapsed(MICROSECONDS), MICROSECONDS)); timings = String.format(fmt, df.format(collectDeletedDocs.elapsed(MICROSECONDS), MICROSECONDS), df.format(checkDeletedDocs.elapsed(MICROSECONDS), MICROSECONDS), df.format(sortDocIds.elapsed(MICROSECONDS), MICROSECONDS), df.format(updateResurrectedDocuments.elapsed(MICROSECONDS), MICROSECONDS), df.format(deleteDeletedDocs.elapsed(MICROSECONDS), MICROSECONDS), df.format(collectAndDeleteSplitDocs.elapsed(MICROSECONDS), MICROSECONDS), timeDeletingSplitDocs); ", intermediateSplitDocGCCount=" + intermediateSplitDocGCCount + ", iterationCount=" + iterationCount + ", timeActive=" + df.format(activeElapsed, MICROSECONDS) + ", " + timings + "}";
if (deleteSplitDocsElapsed > 0) { timeDeletingSplitDocs = String.format(" (of which %s deleting)", df.format(deleteSplitDocsElapsed, MICROSECONDS)); timings = String.format(fmt, df.format(collectDeletedDocsElapsed, MICROSECONDS), df.format(checkDeletedDocsElapsed, MICROSECONDS), df.format(sortDocIdsElapsed, MICROSECONDS), df.format(updateResurrectedDocumentsElapsed, MICROSECONDS), df.format(deleteDeletedDocsElapsed, MICROSECONDS), df.format(collectAndDeleteSplitDocsElapsed, MICROSECONDS), timeDeletingSplitDocs); } else { if (deleteSplitDocs.elapsed(MICROSECONDS) > 0) { timeDeletingSplitDocs = String.format(" (of which %s deleting)", df.format(deleteSplitDocs.elapsed(MICROSECONDS), MICROSECONDS)); timings = String.format(fmt, df.format(collectDeletedDocs.elapsed(MICROSECONDS), MICROSECONDS), df.format(checkDeletedDocs.elapsed(MICROSECONDS), MICROSECONDS), df.format(sortDocIds.elapsed(MICROSECONDS), MICROSECONDS), df.format(updateResurrectedDocuments.elapsed(MICROSECONDS), MICROSECONDS), df.format(deleteDeletedDocs.elapsed(MICROSECONDS), MICROSECONDS), df.format(collectAndDeleteSplitDocs.elapsed(MICROSECONDS), MICROSECONDS), timeDeletingSplitDocs); ", intermediateSplitDocGCCount=" + intermediateSplitDocGCCount + ", iterationCount=" + iterationCount + ", timeActive=" + df.format(activeElapsed, MICROSECONDS) + ", " + timings + "}";
/** * Utility method for formatting a duration in nano seconds * into a human readable string. * @param nanos number of nano seconds * @return human readable string */ public static String formatTime(long nanos) { return TimeDurationFormatter.forLogging().format(nanos, TimeUnit.NANOSECONDS); }
@Test public void defaultFormatter() { assertEquals("2.000 d", df.format(2, TimeUnit.DAYS)); assertEquals("24.00 h", df.format(1, TimeUnit.DAYS)); assertEquals("10.50 d", df.format(24 * 10 + 12, TimeUnit.HOURS)); assertEquals("2.500 h", df.format(150, TimeUnit.MINUTES)); assertEquals("10.00 min", df.format(10, TimeUnit.MINUTES)); assertEquals("1234 us", df.format(1234, TimeUnit.MICROSECONDS)); assertEquals("1234 ns", df.format(1234, TimeUnit.NANOSECONDS)); }
private String estimatePendingTraversal(double nodesPerSecond) { if (estimatedCount >= 0) { if (estimatedCount > traversalCount){ long pending = estimatedCount - traversalCount; long timeRequired = (long)(pending / nodesPerSecond); double percentComplete = ((double) traversalCount/estimatedCount) * 100; return String.format("(Elapsed %s, Expected %s, Completed %1.2f%%)", watch, TimeDurationFormatter.forLogging().format(timeRequired, TimeUnit.SECONDS), percentComplete ); } else { return String.format("(Elapsed %s)", watch); } } return ""; }
@Test public void uniFormatterWithOneThreshold() { assertEquals("2,000 d", dfu.format(2, TimeUnit.DAYS)); assertEquals("1,000 d", dfu.format(1, TimeUnit.DAYS)); assertEquals("10,50 d", dfu.format(24 * 10 + 12, TimeUnit.HOURS)); assertEquals("2,500 h", dfu.format(150, TimeUnit.MINUTES)); assertEquals("10,00 min", dfu.format(10, TimeUnit.MINUTES)); assertEquals("1,234 ms", dfu.format(1234, TimeUnit.MICROSECONDS)); assertEquals("1,234 \u00b5s", dfu.format(1234, TimeUnit.NANOSECONDS)); } }
private String estimatePendingTraversal(double nodesPerSecond) { if (estimatedCount >= 0) { if (estimatedCount > traversalCount){ long pending = estimatedCount - traversalCount; long timeRequired = (long)(pending / nodesPerSecond); double percentComplete = ((double) traversalCount/estimatedCount) * 100; return String.format("(Elapsed %s, Expected %s, Completed %1.2f%%)", watch, TimeDurationFormatter.forLogging().format(timeRequired, TimeUnit.SECONDS), percentComplete ); } else { return String.format("(Elapsed %s)", watch); } } return ""; }
private String estimatePendingTraversal(double nodesPerSecond) { if (estimatedCount >= 0) { if (estimatedCount > traversalCount){ long pending = estimatedCount - traversalCount; long timeRequired = (long)(pending / nodesPerSecond); double percentComplete = ((double) traversalCount/estimatedCount) * 100; return String.format("(Elapsed %s, Expected %s, Completed %1.2f%%)", watch, TimeDurationFormatter.forLogging().format(timeRequired, TimeUnit.SECONDS), percentComplete ); } else { return String.format("(Elapsed %s)", watch); } } return ""; }
private VersionGCStats gc(long maxRevisionAgeInMillis) throws IOException { VersionGCStats stats = new VersionGCStats(); stats.active.start(); Recommendations rec = new Recommendations(maxRevisionAgeInMillis, options); GCPhases phases = new GCPhases(cancel, stats, gcMonitor); try { if (rec.ignoreDueToCheckPoint) { phases.stats.ignoredGCDueToCheckPoint = true; monitor.skipped("Checkpoint prevented revision garbage collection"); cancel.set(true); } else { final RevisionVector headRevision = nodeStore.getHeadRevision(); final RevisionVector sweepRevisions = nodeStore.getSweepRevisions(); monitor.info("Looking at revisions in {}", rec.scope); collectDeletedDocuments(phases, headRevision, rec); collectSplitDocuments(phases, sweepRevisions, rec); } } catch (LimitExceededException ex) { stats.limitExceeded = true; } finally { phases.close(); stats.canceled = cancel.get(); } rec.evaluate(stats); monitor.info("Revision garbage collection finished in {}. {}", TimeDurationFormatter.forLogging().format(phases.elapsed.elapsed(MICROSECONDS), MICROSECONDS), stats); stats.active.stop(); return stats; }
private VersionGCStats gc(long maxRevisionAgeInMillis) throws IOException { VersionGCStats stats = new VersionGCStats(); stats.active.start(); Recommendations rec = new Recommendations(maxRevisionAgeInMillis, options); GCPhases phases = new GCPhases(cancel, stats, gcMonitor); try { if (rec.ignoreDueToCheckPoint) { phases.stats.ignoredGCDueToCheckPoint = true; monitor.skipped("Checkpoint prevented revision garbage collection"); cancel.set(true); } else { final RevisionVector headRevision = nodeStore.getHeadRevision(); final RevisionVector sweepRevisions = nodeStore.getSweepRevisions(); monitor.info("Looking at revisions in {}", rec.scope); collectDeletedDocuments(phases, headRevision, rec); collectSplitDocuments(phases, sweepRevisions, rec); } } catch (LimitExceededException ex) { stats.limitExceeded = true; } finally { phases.close(); stats.canceled = cancel.get(); } rec.evaluate(stats); monitor.info("Revision garbage collection finished in {}. {}", TimeDurationFormatter.forLogging().format(phases.elapsed.elapsed(MICROSECONDS), MICROSECONDS), stats); stats.active.stop(); return stats; }