Skip to content

Strict Mode Violation on version property read via getResourceAsStream from EmbeddedInstrumentationProperties in OkHttp library #18495

Description

@surbhiia

Is your feature request related to a problem? Please describe.

  • Yes, In issue 5369 , this comment mentioned the concern but it was not addressed in the PR that closed the issue.

  • Concern: Strict Mode violation for okhttp library instrumentation which depends on reading the version properties file via EmbeddedInstrumentationProperties.

  • Stacktrace:

StrictMode policy violation; ~duration=23 ms: android.os.strictmode.DiskReadViolation
                                                                                                    	at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1658)
                                                                                                    	at java.io.UnixFileSystem.getLastModifiedTime(UnixFileSystem.java:289)
                                                                                                    	at java.io.File.lastModified(File.java:937)
                                                                                                    	at java.util.zip.ZipFile.<init>(ZipFile.java:265)
                                                                                                    	at java.util.zip.ZipFile.<init>(ZipFile.java:187)
                                                                                                    	at java.util.jar.JarFile.<init>(JarFile.java:169)
                                                                                                    	at java.util.jar.JarFile.<init>(JarFile.java:106)
                                                                                                    	at libcore.io.ClassPathURLStreamHandler.<init>(ClassPathURLStreamHandler.java:46)
                                                                                                    	at dalvik.system.DexPathList$Element.maybeInit(DexPathList.java:750)
                                                                                                    	at dalvik.system.DexPathList$Element.findResource(DexPathList.java:777)
                                                                                                    	at dalvik.system.DexPathList.findResource(DexPathList.java:554)
                                                                                                    	at dalvik.system.BaseDexClassLoader.findResource(BaseDexClassLoader.java:313)
                                                                                                    	at java.lang.ClassLoader.getResource(ClassLoader.java:793)
                                                                                                    	at dalvik.system.BaseDexClassLoader.findResource(BaseDexClassLoader.java:307)
                                                                                                    	at java.lang.ClassLoader.getResource(ClassLoader.java:793)
                                                                                                    	at java.lang.ClassLoader.getResourceAsStream(ClassLoader.java:987)
                                                                                                    	at io.opentelemetry.instrumentation.api.internal.EmbeddedInstrumentationProperties.loadVersion(EmbeddedInstrumentationProperties.java:59)
                                                                                                    	at io.opentelemetry.instrumentation.api.internal.EmbeddedInstrumentationProperties.$r8$lambda$A8aev7Zi2U95wHcbAj0-yuCP2Tc(Unknown Source:0)
                                                                                                    	at io.opentelemetry.instrumentation.api.internal.EmbeddedInstrumentationProperties$$ExternalSyntheticLambda0.apply(D8$$SyntheticClass:0)
                                                                                                    	at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1710)
                                                                                                    	at io.opentelemetry.instrumentation.api.internal.EmbeddedInstrumentationProperties.findVersion(EmbeddedInstrumentationProperties.java:51)
                                                                                                    	at io.opentelemetry.instrumentation.api.instrumenter.InstrumenterBuilder.<init>(InstrumenterBuilder.java:80)
                                                                                                    	at io.opentelemetry.instrumentation.api.instrumenter.Instrumenter.builder(Instrumenter.java:67)
                                                                                                    	at io.opentelemetry.instrumentation.api.incubator.builder.internal.DefaultHttpClientInstrumenterBuilder.build(DefaultHttpClientInstrumenterBuilder.java:233)
                                                                                                    	at io.opentelemetry.instrumentation.okhttp.v3_0.OkHttpTelemetryBuilder.build(OkHttpTelemetryBuilder.java:102)
                                                                                                    	at 

Describe the solution you'd like
Same as this PR i.e using oTelVersionClassPlugin to read instrumentation version instead of reading via resource.

Describe alternatives you've considered
No alternatives available.

Tip: React with 👍 to help prioritize this issue. Please use comments to provide useful context, avoiding +1 or me too, to help us triage it. Learn more here.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions