SkyWalking GraalVM Distro 0.4.0 is released. Go to downloads page to find release tars.
This release is built on the Apache SkyWalking v11.0.0 release tag.
Upstream Sync
- Sync SkyWalking submodule to the upstream v11.0.0 release tag (
6f1fd78e87). - Wire the admin-server family on the admin host (HTTP
:17128, admin-internal gRPC:17129):admin-server,status(relocated from the 10.xstatus-queryplugin —/status/*,/debugging/*),inspect(SWIP-14 metric catalog,/inspect/*),ui-management(dashboard-template REST for the Horizon UI,/ui-management/*), anddsl-debugging(SWIP-13 DSL live debugger). Thestatus-queryplugin is removed. - Adopt every rule file upstream added or reworked: Airflow layer (SWIP-7), BanyanDB self-observability (SWIP-15: reworked
banyandb-service/instance, newbanyandb-endpointandbanyandb-instance-relation), Node.js and PHP runtime meters, the Envoy TCP access-log LAL rule (envoy-als-tcp), iOS (SWIP-11) and mini-program (SWIP-12) OTel rules, Envoy AI Gateway MCP rules, the mini-program log-MAL rules and theai_route_typesearchable log tag — all enabled with the upstream defaults. - Follow the upstream DSL refactors: rule source attribution (
DslSourceRef; generated classes are named{yaml}_L{line}_{rule}exactly as the JVM distro names them), the DSL class-loading move tocore/dsl, LAL input-type routing (Envoy HTTP vs TCP entries on the same layer), andmeter-analyzer-configloading through the sharedRulesloader. - Mirror the new
application.ymloptions: therestSSL*TLS settings of every HTTP server (present for parity, not verified in the native image), the extendedmeterAnalyzerActiveFilesandenabledOtelMetricsRulesdefaults, and the BanyanDB trace-retention pipeline config. - Drop the bundled UI templates: upstream 11.0.0 removed
ui-initialized-templates/andUITemplateInitializer; templates are now managed viaui-management.
DSL Management and Debugging
- DSL live debugger (SWIP-13) is supported. The precompiler flips upstream’s
DSLDebugCodegenSwitchbefore every OAL / MAL / LAL generator pass, so the debug probes and gate holders are compiled into the pre-compiled rule classes; upstream’sdsl-debuggingmodule then runs unchanged, only flipping gates and reading samples at runtime./dsl-debugging/*sessions work on every bundled rule, and/runtime/oal/*lists the OAL catalog. - Read-only rule catalogs.
GET /runtime/rule/list,/runtime/rule/bundledandGET /runtime/ruleserve upstream’s payloads from the raw MAL/LAL files the precompiler exports at build time, so the Horizon UI’s DSL catalog, editor and live-debug pickers list and open every bundled rule (alwaysBUNDLED). - Runtime rule hot-update stays unsupported:
POST /runtime/rule/addOrUpdate|inactivate|delete,/runtime/rule/dump,/runtime/mal/*and/runtime/lal/*answer a structured HTTP 501 — they generate bytecode at runtime, which a closed-world native image cannot do.
GraalVM Native Image Compatibility
- Config loading: generate the new
DSLDebuggingModuleConfigand the BanyanDBTracePipeline/SamplerPluginConfignested configs, and emit a no-op dispatch branch for emptyModuleConfigtypes (InspectModuleConfig,UIManagementModuleConfig). - Port the upstream runtime-rule DSL overloads and the
DslSourceRefsignatures into the same-FQCN replacements: meterDSL.parse(..., ClassPool, ClassLoader),FilterExpression(..., ClassPool, ClassLoader), logDSL.of(..., ClassPool, ClassLoader);LALConfigsgains upstream’sLAL_CATALOG/stampSource;HierarchyDefinitionServiceloads rules by name from aruleName=FQCNmanifest. - The precompiler and the MAL comparison tests compose expressions via the real upstream
MetricConvert.formatExpinstead of a hand-rolled replica, fixing pre-compiled class lookup for chained expressions (.sum/.rate/.downsampling). - Register protobuf descriptor editions classes and protoc-gen-validate classes for native-image reflection. protobuf-java 4.33 reflects on these when parsing the BanyanDB measure descriptors; without the metadata, BanyanDB metrics queries failed at runtime with
Generated message class ... missing method. - Register the whole protobuf descriptor closure of the LAL input types (Envoy
HTTPAccessLogEntry/TCPAccessLogEntry, 52 classes down toStruct/Any/Timestamp) with method access, so theEnvoyAccessLogcontent of theenvoy-alsrules and the DSL debug captures no longer degrade tojsonformat-failed. - Register the distro-only Armeria handlers (
UnsupportedAdminFeatureHandler,BundledRuleCatalogHandler) inreachability-metadata.json, so their routes are registered in the native image. - Keep
FilterExpression#getLiteral()in the same-FQCN MAL replacements: the upstreamAnalyzerreads it from the filter probe that only runs with a debug session attached, so a session on a filtered rule file (e.g.otel-rules/oap.yaml) killed ingestion withNoSuchMethodError.
Documentation
- Document the admin-server family, the status relocation, the read-only rule catalogs, the live debugger and the unsupported hot-update (HTTP 501) in
distro-policy.md,supported-features.mdandconfiguration.md; add the0.4.0→11.0.0row toversion-mapping.md; refresh the build-time counts and the manifest table indocs/internals/dsl-immigration.md.
All issues and pull requests are here