perf(instrumentation): [Generated metadata 2] Generate manifest metadata - #1405
Conversation
45fffeb to
d6e0617
Compare
5b50fc6 to
01c33f8
Compare
d6e0617 to
ca575d9
Compare
01c33f8 to
d6cc1ee
Compare
ca575d9 to
a819c4f
Compare
runningcode
left a comment
There was a problem hiding this comment.
looks great! main concern is the separate of responsibilities. and we should also add a configuration cache test for this!
| } | ||
| .toSet() | ||
| val availability = resolveClassAvailability(modules) | ||
| val metadata = ManifestMetadataParser.parse(mergedManifest.get().asFile) |
There was a problem hiding this comment.
if I understand the architecture correctly it seems like we have 3/4 concerns that i would separate this in to 3 tasks. this improves the cacheability and separates responsibilities:
- resolving the class availability
2 parsing the manifest
3 merging the two / generating the source file
There was a problem hiding this comment.
hm, I'm thinking if an intermediate file I/O and task scheduling that we would introduce by splitting this up would cost more than the work avoided by cacheability? It's map lookup + XML parsing which I guess should be rather quick?
a819c4f to
1f5ce9f
Compare
thanks for the review - this one has been addressed in #1404 and should cover this too :) |
a965436 to
e193d84
Compare
1f5ce9f to
b565999
Compare
Read resolved Sentry metadata from the final merged manifest in the generated-source task. Keep the SDK transform parameterless by emitting a stable call to the app-owned generated class, with PackageManager fallback for unresolved resources. Co-Authored-By: OpenAI Codex <noreply@openai.com>
Inject generated manifest metadata directly into ManifestMetadataReader while retaining structural compatibility checks. Co-Authored-By: OpenAI Codex <noreply@openai.com>
Describe the initialization improvement without citing benchmark-specific percentages. Co-Authored-By: Codex <noreply@openai.com>
b565999 to
f66bc28
Compare
Cache class availability and parsed manifest metadata independently so changes to either input avoid repeating unrelated work. Co-Authored-By: Codex <noreply@openai.com>
Keep the build-time option tasks together under an optimization package as their responsibilities expand. Co-Authored-By: Codex <noreply@openai.com>
Place generated sources and intermediate files below build/sentry so AGP-owned output directories remain separate. Co-Authored-By: Codex <noreply@openai.com>
Allow the first configuration-cache test build to restore the cacheable generator task from the shared TestKit build cache. Keep requiring the second build to be up to date. Co-Authored-By: OpenAI Codex <noreply@openai.com>
runningcode
left a comment
There was a problem hiding this comment.
left some comments below
Remove redundant directory creation from tasks whose complete output file paths are declared to Gradle. Co-Authored-By: OpenAI Codex <noreply@openai.com>
Report build-time manifest metadata inference failures through the opt-out-aware telemetry service while preserving the runtime fallback. Co-Authored-By: OpenAI Codex <noreply@openai.com>
Generate typed Sentry metadata from each variant final merged manifest in the app-owned build-time options class.
The SDK ASM transform remains parameterless and emits only a stable symbolic call. Resource-backed or otherwise unresolved values return null so the SDK retains its PackageManager fallback. The matching SDK consumer is getsentry/sentry-java#5969.