| name | sync-submodule |
| description | Checklist and steps for syncing the skywalking submodule to a new upstream tag or commit. Covers all required checks and updates. |
Sync SkyWalking Submodule
Checklist for updating the skywalking/ submodule to a new upstream tag/commit.
1. Update Submodule
cd skywalking && git fetch origin --tags && git checkout <tag-or-commit>
Verify the upstream <revision> in skywalking/pom.xml — the Makefile extracts it for -Dskywalking.version.
2. Install Upstream to Local Maven Repo
make init-skywalking
3. Analyze Changes
Compare the old and new commits to identify what changed:
cd skywalking && git log --oneline <old-commit>..<new-commit>
Key areas to check for impact
| Area | What to look for |
|---|
OAL engine (oal-rt/) | API changes to OALEngineV2 |
MAL engine (meter-analyzer/) | API changes to MALClassGenerator, new grammar tokens |
LAL engine (log-analyzer/) | API changes to LALClassGenerator |
| New modules | New ModuleDefine/ModuleProvider classes |
| New OAL files | oal/*.oal |
| New MAL rules | otel-rules/, meter-analyzer-config/, log-mal-rules/, envoy-metrics-rules/, telegraf-rules/, zabbix-rules/ |
| New LAL rules | lal/*.yaml |
| Same-FQCN files changed | Upstream versions of files we replace in oap-libs-for-graalvm/ |
| New config fields | Changes to ModuleConfig subclasses |
| application.yml | New module sections, new config properties |
| pom.xml deps | New module artifacts, version bumps |
4. Required Updates (Checklist)
Module wiring (if new modules added)
Config handling (if new ModuleConfig classes)
OAL changes (if new .oal files or scopes)
MAL/LAL changes (if new rule files)
Inventory updates
Distribution packaging
E2E test environment
Same-FQCN replacement staleness
5. Build & Test
make compile
make test
6. Native Image Verification
make native-image-macos
make docker-native
docker tag skywalking-oap-native skywalking-oap-native:latest
e2e run -c test/e2e/cases/simple-java-agent/e2e.yaml
Check OAP logs for reflection errors:
docker logs <container> 2>&1 | grep "ERROR\|NoSuchMethodException\|ClassNotFoundException"
7. Common Pitfalls
- Reflection errors at native image runtime: New classes instantiated via
Class.forName().newInstance() need entries in reflect-config.json or reachability-metadata.json
- Config loading failures: New
ModuleConfig subclasses need config-generator regeneration AND may need @Setter same-FQCN replacement
- Missing config files: Runtime config files (non-DSL) must be in distribution assembly descriptors
- OAL builder registration: OAL-generated builder classes need constructor entries in
reachability-metadata.json
- Config-generator runs against upstream classpath: Setter checks see upstream classes (no
@Setter), not our for-graalvm replacements — the generator trusts that for-graalvm modules will provide setters