Summary
Pre-release fixes for btrace-extensions/* — one packaging defect and two correctness/safety bugs, plus a stale manifest version. Grouped from the module review.
Items
Also worth reconciling: three descriptor-format variants coexist across the extensions (DSL + legacy @ExtensionDescriptor package-info + @ServiceDescriptor; DSL + @ServiceDescriptor; DSL-only), and the legacy package-infos hard-code version="1.0" that mismatches the manifest.
Owner: extensions / build team.
Summary
Pre-release fixes for
btrace-extensions/*— one packaging defect and two correctness/safety bugs, plus a stale manifest version. Grouped from the module review.Items
btrace-ext-testand bothexamples/*extensions (whose own READMEs say "not maintained as part of core BTrace") ship in the releasedextensions/dir.btrace-dist/build.gradle:516-532. Fix: add an explicit allow-list of extensions to bundle.StatsdImpl.increment()opens a freshDatagramSocketand does a blockingInetAddress.getByName()DNS lookup on the probe (application) thread on every call.StatsdImpl.java:32-50. Fix: resolve once and reuse a cached socket/address.StatsMetricImplaccumulates sum-of-squares in along(value*value), which overflows for realistic ns-latency inputs and silently corruptsstddev.StatsMetricImpl.java:54,94. Fix: usedoubleaccumulation (or a numerically stable online-variance algorithm).BTrace-API-Version: 2.3+. The gradle plugin hard-codes2.3+into every extension manifest while the loader default is3.0+(ExtensionMetadata.java:141). 3.0 satisfies2.3+so there is no functional gate today, but it is misleading and should track the current namespace/version. (Related to the gradle-plugin descriptor issue.)Also worth reconciling: three descriptor-format variants coexist across the extensions (DSL + legacy
@ExtensionDescriptorpackage-info +@ServiceDescriptor; DSL +@ServiceDescriptor; DSL-only), and the legacy package-infos hard-codeversion="1.0"that mismatches the manifest.Owner: extensions / build team.