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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions