Skip to content

Commit b461bc2

Browse files
Refactored to use nanoTime
1 parent a0594f0 commit b461bc2

1 file changed

Lines changed: 10 additions & 5 deletions

File tree

dd-trace-core/src/main/java/datadog/trace/common/writer/ListWriter.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package datadog.trace.common.writer;
22

3+
import static java.util.concurrent.TimeUnit.MILLISECONDS;
4+
import static java.util.concurrent.TimeUnit.NANOSECONDS;
35
import static java.util.concurrent.TimeUnit.SECONDS;
46

57
import datadog.trace.core.DDSpan;
@@ -50,21 +52,24 @@ public void write(List<DDSpan> trace) {
5052

5153
private boolean awaitUntilDeadline(long timeout, TimeUnit unit, BooleanSupplier predicate)
5254
throws InterruptedException {
53-
long deadline = System.currentTimeMillis() + unit.toMillis(timeout);
55+
final long deadline = System.nanoTime() + unit.toNanos(timeout);
5456

5557
while (true) {
5658
if (predicate.getAsBoolean()) {
5759
return true;
5860
}
5961

60-
long now = System.currentTimeMillis();
61-
long waitTime = deadline - now;
62-
if (waitTime <= 0) {
62+
long now = System.nanoTime();
63+
long remaining = deadline - now;
64+
if (remaining <= 0) {
6365
break;
6466
}
6567

68+
long millis = NANOSECONDS.toMillis(remaining);
69+
long nanos = remaining - MILLISECONDS.toNanos(millis);
70+
6671
synchronized (monitor) {
67-
monitor.wait(waitTime);
72+
monitor.wait(millis, (int) nanos);
6873
}
6974
}
7075

0 commit comments

Comments
 (0)