Skip to content

Commit 892e85b

Browse files
Vladimir Kotalahornace
authored andcommitted
track logged chunks
fixes #3720
1 parent da76b5f commit 892e85b

File tree

1 file changed

+22
-10
lines changed
  • opengrok-indexer/src/main/java/org/opengrok/indexer/util

1 file changed

+22
-10
lines changed

opengrok-indexer/src/main/java/org/opengrok/indexer/util/Progress.java

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525

2626
import org.opengrok.indexer.configuration.RuntimeEnvironment;
2727

28+
import java.util.HashMap;
29+
import java.util.Map;
2830
import java.util.concurrent.atomic.AtomicLong;
2931
import java.util.logging.Level;
3032
import java.util.logging.Logger;
@@ -81,27 +83,37 @@ public void increment() {
8183

8284
private void logLoop() {
8385
long cachedCount = 0;
86+
Map<Level, Long> lastLoggedChunk = new HashMap<>();
87+
Map<Level, Integer> levelCount = Map.of(Level.INFO, 100,
88+
Level.FINE, 50,
89+
Level.FINER, 10,
90+
Level.FINEST, 1);
8491

8592
while (true) {
8693
long currentCount = this.currentCount.get();
87-
Level currentLevel;
94+
Level currentLevel = Level.FINEST;
8895

96+
// Do not log if there was no progress.
8997
if (cachedCount < currentCount) {
90-
if (currentCount <= 1 || currentCount % 100 == 0) {
98+
if (currentCount <= 1 || currentCount == totalCount) {
9199
currentLevel = Level.INFO;
92-
} else if (currentCount % 50 == 0) {
93-
currentLevel = Level.FINE;
94-
} else if (currentCount % 10 == 0) {
95-
currentLevel = Level.FINER;
96100
} else {
97-
currentLevel = Level.FINEST;
101+
if (lastLoggedChunk.getOrDefault(Level.INFO, -1L) <
102+
currentCount / levelCount.get(Level.INFO)) {
103+
currentLevel = Level.INFO;
104+
} else if (lastLoggedChunk.getOrDefault(Level.FINE, -1L) <
105+
currentCount / levelCount.get(Level.FINE)) {
106+
currentLevel = Level.FINE;
107+
} else if (lastLoggedChunk.getOrDefault(Level.FINER, -1L) <
108+
currentCount / levelCount.get(Level.FINER)) {
109+
currentLevel = Level.FINER;
110+
}
98111
}
99112

100-
// Do not log if there was no progress.
101113
if (logger.isLoggable(currentLevel)) {
114+
lastLoggedChunk.put(currentLevel, currentCount / levelCount.get(currentLevel));
102115
logger.log(currentLevel, "Progress: {0} ({1}%) for {2}",
103-
new Object[]{currentCount, currentCount * 100.0f /
104-
totalCount, suffix});
116+
new Object[]{currentCount, currentCount * 100.0f / totalCount, suffix});
105117
}
106118
}
107119

0 commit comments

Comments
 (0)