ci: stop Dependabot proposing Groovy majors that TinkerPop cannot take - #5534
Conversation
Groovy's version is set by TinkerPop, not by ArcadeDB. It appears only in gremlin/pom.xml (org.apache.groovy:groovy) and no other reactor module depends on it. gremlin-groovy 3.8.1 is built against the Groovy 4.0.x line, so Groovy 5 is a major break that cannot be adopted until TinkerPop moves. PR #4969 (4.0.32 -> 5.0.7) has been unmergeable since July for this reason. Ignores majors only. ArcadeDB deliberately runs 4.0.32, ahead of TinkerPop's own 4.0.25, so 4.0.x patch and minor updates keep flowing. ANTLR shares the same TinkerPop coupling but is deliberately left out. antlr4.version is declared per-module with two different intents: gremlin pins 4.9.1 because gremlin-language ships a parser generated by the ANTLR 4.9.1 tool and 4.10 changed the serialized ATN format, while engine independently tracks the latest 4.13.2 for its own grammar. Dependabot ignore rules match coordinates rather than modules, and gremlin's frozen 4.9.1 sits below the engine's current 4.13.2, so any range blocking the gremlin bump would silently freeze the engine too.
|
Tick the box to add this pull request to the merge queue (same as
|
Up to standards ✅🟢 Issues
|
| Metric | Results |
|---|---|
| Coverage variation | ✅ -5.86% coverage variation |
| Diff coverage | ✅ ∅ diff coverage |
Coverage variation details
Coverable lines Covered lines Coverage Common ancestor commit (6de851d) 146712 108822 74.17% Head commit (c270c91) 171643 (+24931) 117264 (+8442) 68.32% (-5.86%) Coverage variation is the difference between the coverage for the head and common ancestor commits of the pull request branch:
<coverage of head commit> - <coverage of common ancestor commit>
Diff coverage details
Coverable lines Covered lines Diff coverage Pull request (#5534) 0 0 ∅ (not applicable) Diff coverage is the percentage of lines that are covered by tests out of the coverable lines that the pull request added or modified:
<covered lines added or modified>/<coverable lines added or modified> * 100%
NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.
Review:
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #5534 +/- ##
============================================
+ Coverage 65.31% 66.42% +1.11%
============================================
Files 1748 1702 -46
Lines 146712 139651 -7061
Branches 31356 30198 -1158
============================================
- Hits 95827 92769 -3058
+ Misses 37933 34296 -3637
+ Partials 12952 12586 -366 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
What does this PR do?
Adds a single Dependabot
ignorerule so Groovy major updates stop being proposed for the Maven reactor:Patch and minor updates are unaffected and keep flowing.
Motivation
Groovy's version is set by TinkerPop, not by ArcadeDB.
org.apache.groovy:groovyis declared in exactly one place,gremlin/pom.xml:106. No other module in the reactor depends on it.gremlin-groovy3.8.1 is built against the Groovy 4.0.x line (TinkerPop 3.8.1's parent pom declaresgroovy.version4.0.25), so Groovy 5 is a major break that cannot be adopted until TinkerPop itself moves.That makes PR #4969 (
4.0.32→5.0.7) structurally unmergeable rather than merely stale. It has been open since 2026-07-04 with 6 failing checks, and re-proposing it every week costs a PR slot and reviewer attention for an upgrade that cannot land.Only majors are ignored, deliberately. ArcadeDB pins 4.0.32, which is ahead of TinkerPop's own 4.0.25, so the project is already taking 4.0.x patches on purpose. Those must keep arriving; this rule does not touch them.
Related issues
Supersedes #4969, which should be closed once this merges.
Does not affect
org.apache.tinkerpop:gremlin-groovy, so the TinkerPop upgrade that would eventually unlock Groovy 5 still gets proposed normally.Additional Notes
ANTLR is deliberately excluded from this rule, despite the identical TinkerPop coupling. This is the part worth reviewing carefully, and the reasoning is recorded as a comment in the config so it is not re-litigated later.
antlr4.versionis declared per-module, with two different intents:gremlin/pom.xml:45gremlin-language3.8.1 ships a parser generated by the ANTLR 4.9.1 tool. ANTLR 4.10 changed the serialized ATN format (theBASE_SERIALIZED_UUIDfield present in 4.9.1'sATNDeserializeris gone in 4.13.2), so a 4.13 runtime cannot read a 4.9.1-generated parser.engine/pom.xml:46Dependabot
ignorerules match dependency coordinates, not modules or properties. Gremlin's frozen 4.9.1 sits below the engine's current 4.13.2, so any version range that blocked the Gremlin bump would also cover the engine's version and silently freeze it. That trades a small amount of noise for the loss of a signal we actually want.PR #3235 should therefore be closed by hand rather than suppressed by config. Closing a Dependabot PR stops it re-proposing that same version; it only returns when a genuinely new ANTLR ships, and 4.13.2 is currently the newest (released 2024). That is roughly one PR every couple of years, and when it arrives it is a real signal for the engine.
Verification: the config parses, the maven entry is otherwise unchanged, no other ecosystem is touched, and the pattern was checked against the real coordinates:
Longer term: the real unlock for both frozen dependencies is a TinkerPop upgrade. When TinkerPop moves to ANTLR 4.13 and Groovy 5, both bumps become trivially mergeable and this ignore rule can be dropped. That is worth a tracking issue against
gremlin.versionrather than two recurring Dependabot PRs.Checklist
I have run the build using— not applicable and not run. The diff is one file,mvn clean package.github/dependabot.yml; no source, nopom.xml, no build input changes.My unit tests cover both failure and success scenarios— no unit tests added. Dependabot configuration is not executable by the build. The equivalent evidence is the pattern-match check above.