diff --git a/android-plugin/metadata/notice.properties b/android-plugin/metadata/notice.properties index 07638a08c..a2d09fb2d 100644 --- a/android-plugin/metadata/notice.properties +++ b/android-plugin/metadata/notice.properties @@ -1 +1 @@ -dependencies.hash=6AB0841BC9D2A49600D8C01CB49722DD \ No newline at end of file +dependencies.hash=DE88CF9A9513ADACB700200CCAF64110 \ No newline at end of file diff --git a/android-sdk-ktx/metadata/notice.properties b/android-sdk-ktx/metadata/notice.properties index 90d00e98e..c8ce548e5 100644 --- a/android-sdk-ktx/metadata/notice.properties +++ b/android-sdk-ktx/metadata/notice.properties @@ -1 +1 @@ -dependencies.hash=4335DC6BB998D19BBBD590A9B2803A50 \ No newline at end of file +dependencies.hash=3E9E21CD8D354DEE5A74726273DC2F2D \ No newline at end of file diff --git a/android-sdk/metadata/notice.properties b/android-sdk/metadata/notice.properties index a91dc023e..967662cd4 100644 --- a/android-sdk/metadata/notice.properties +++ b/android-sdk/metadata/notice.properties @@ -1 +1 @@ -dependencies.hash=A0177AAB7C169836786E530C6453B8A1 \ No newline at end of file +dependencies.hash=116B097450368CFACC99BF27198E0C94 \ No newline at end of file diff --git a/android-sdk/src/main/java/co/elastic/apm/android/sdk/internal/opentelemetry/tools/ElasticClock.java b/android-sdk/src/main/java/co/elastic/apm/android/sdk/internal/opentelemetry/tools/ElasticClock.java index f046b845f..491e2a476 100644 --- a/android-sdk/src/main/java/co/elastic/apm/android/sdk/internal/opentelemetry/tools/ElasticClock.java +++ b/android-sdk/src/main/java/co/elastic/apm/android/sdk/internal/opentelemetry/tools/ElasticClock.java @@ -45,7 +45,12 @@ public ElasticClock(TrueTimeWrapper trueTimeWrapper) { public long now() { if (trueTimeWrapper.isInitialized()) { Elog.getLogger().debug("Returning true time"); - return TimeUnit.MILLISECONDS.toNanos(trueTimeWrapper.now().getTime()); + try { + return TimeUnit.MILLISECONDS.toNanos(trueTimeWrapper.now().getTime()); + } catch (Throwable t) { + trueTimeWrapper.clearCachedInfo(); + Elog.getLogger().error("Could not get true time", t); + } } Elog.getLogger().debug("Returning system time"); return TimeUnit.MILLISECONDS.toNanos(systemTimeProvider.getCurrentTimeMillis()); diff --git a/android-sdk/src/test/java/co/elastic/apm/android/sdk/internal/otel/ElasticClockTest.java b/android-sdk/src/test/java/co/elastic/apm/android/sdk/internal/otel/ElasticClockTest.java index 53f759e52..14eccfb4a 100644 --- a/android-sdk/src/test/java/co/elastic/apm/android/sdk/internal/otel/ElasticClockTest.java +++ b/android-sdk/src/test/java/co/elastic/apm/android/sdk/internal/otel/ElasticClockTest.java @@ -20,6 +20,7 @@ import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.verify; import org.junit.Before; @@ -31,9 +32,9 @@ import java.util.Date; import java.util.concurrent.TimeUnit; +import co.elastic.apm.android.sdk.internal.opentelemetry.tools.ElasticClock; import co.elastic.apm.android.sdk.internal.time.SystemTimeProvider; import co.elastic.apm.android.sdk.internal.time.ntp.TrueTimeWrapper; -import co.elastic.apm.android.sdk.internal.opentelemetry.tools.ElasticClock; import co.elastic.apm.android.sdk.testutils.BaseTest; @RunWith(MockitoJUnitRunner.class) @@ -61,7 +62,7 @@ public void whenProvidingNanoTime_returnSystemNanoTime() { } @Test - public void whenProvidingNow_withNoTrueTimeAvailable_returnSystemCurrentTimeInNanos() { + public void whenProvidingNow_withTrueTimeNotInitialized_returnSystemCurrentTimeInNanos() { long systemTimeMillis = 12345; long systemTimeNanos = TimeUnit.MILLISECONDS.toNanos(systemTimeMillis); doReturn(systemTimeMillis).when(systemTimeProvider).getCurrentTimeMillis(); @@ -70,6 +71,17 @@ public void whenProvidingNow_withNoTrueTimeAvailable_returnSystemCurrentTimeInNa assertEquals(systemTimeNanos, elasticClock.now()); } + @Test + public void whenProvidingNow_withNoTrueTimeAvailable_returnSystemCurrentTimeInNanos() { + long systemTimeMillis = 12345; + long systemTimeNanos = TimeUnit.MILLISECONDS.toNanos(systemTimeMillis); + doReturn(systemTimeMillis).when(systemTimeProvider).getCurrentTimeMillis(); + doReturn(true).when(trueTimeWrapper).isInitialized(); + doThrow(IllegalStateException.class).when(trueTimeWrapper).now(); + + assertEquals(systemTimeNanos, elasticClock.now()); + } + @Test public void whenProvidingNow_withTrueTimeAvailable_returnTrueTimeInNanos() { long trueTimeMillis = 12345; diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 53c4bb32a..9a40898e0 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,13 +1,13 @@ [versions] opentelemetry-android = "0.5.0-alpha" -opentelemetry = "1.37.0" -opentelemetry-alpha = "1.37.0-alpha" -opentelemetry-semconv = "1.25.0-alpha" -opentelemetry-contrib = "1.35.0-alpha" +opentelemetry = "1.40.0" +opentelemetry-alpha = "1.40.0-alpha" +opentelemetry-semconv = "1.26.0-alpha" +opentelemetry-contrib = "1.37.0-alpha" mockito = "4.11.0" -byteBuddy = "1.14.17" +byteBuddy = "1.14.18" okhttp = "4.12.0" -kotlin = "1.9.22" +kotlin = "1.9.23" google-autoService = "1.1.1" [libraries] diff --git a/manual_licenses_map.txt b/manual_licenses_map.txt index bc06d6e86..d113e42a3 100644 --- a/manual_licenses_map.txt +++ b/manual_licenses_map.txt @@ -1,5 +1,5 @@ -net.bytebuddy:byte-buddy:1.14.17|apache_v2 -net.bytebuddy:byte-buddy-gradle-plugin:1.14.17|apache_v2 +net.bytebuddy:byte-buddy:1.14.18|apache_v2 +net.bytebuddy:byte-buddy-gradle-plugin:1.14.18|apache_v2 org.slf4j:slf4j-api:2.0.0|mit com.squareup.okhttp3:okhttp:3.11.0|apache_v2 com.github.instacart.truetime-android:library:3.5|apache_v2 \ No newline at end of file