File tree Expand file tree Collapse file tree
dd-trace-core/src/main/java/datadog/trace/common/writer Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11package datadog .trace .common .writer ;
22
3+ import static java .util .concurrent .TimeUnit .MILLISECONDS ;
4+ import static java .util .concurrent .TimeUnit .NANOSECONDS ;
35import static java .util .concurrent .TimeUnit .SECONDS ;
46
57import 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
You can’t perform that action at this time.
0 commit comments