Repository navigation
chore(deps): upgrade Jackson to 2.18.12 and add missing POM checksums - #7072
Conversation
jsonrpc4j 1.7, jackson-databind 2.16.1 and jackson-annotations 2.16.1 have Gradle Module Metadata checksums but no POM checksums. When their metadata is read from a Maven-style repository without .module files, such as a local Maven repository picked up by mavenLocal(), Gradle uses the POM as metadata and strict dependency verification fails. Add the three POM SHA-256 checksums, generated by Gradle and checked against Maven Central.
halibobo1205
left a comment
There was a problem hiding this comment.
[DISCUSS] Not for this PR: mavenLocal() is the first repository in build.gradle, so the contents of a developer's ~/.m2 can change what Gradle resolves and verifies. Worth a follow-up to either drop it, move it after mavenCentral(), or restrict it with a content { } filter — and/or add a CI check that every .module entry in verification-metadata.xml has a matching .pom entry.
|
@halibobo1205 Thanks, agreed. I'll keep this PR limited to the three missing POM checksums. The repository policy and metadata check are worth a separate follow-up. Any repository change should preserve an explicit way to test locally published dependencies. For Maven components that publish both formats, a one-way check that every |
Bump jackson-databind to 2.18.12; jackson-core and jackson-annotations follow through its dependencies and the Jackson BOM. Update the verification metadata: add jar, .module and .pom checksums for the 2.18.12 modules and the BOM and base POMs, and remove the 2.18.10 entries, which are no longer resolved by any configuration.
|
@halibobo1205 I have widened the scope of this PR after your approval: the new commit a7da03a upgrades Jackson from 2.18.10 to 2.18.12 (2.18.11 and 2.18.12 include security fixes in |
What does this PR do?
gradle/verification-metadata.xml:com.github.briandilley.jsonrpc4j:jsonrpc4j:1.7com.fasterxml.jackson.core:jackson-databind:2.16.1com.fasterxml.jackson.core:jackson-annotations:2.16.1jackson-databindis declared (common/build.gradle);jackson-coreandjackson-annotationsfollow through its dependencies and the Jackson BOM. The verification metadata adds jar,.moduleand.pomchecksums for the 2.18.12 modules and the 2.18.12 BOM and base POMs, and removes the 2.18.10 entries, which are no longer resolved by any configuration.No repository configuration or production code is changed. The jsonrpc4j dependency keeps its Jackson dependencies; it requests 2.16.1, and conflict resolution selects 2.18.12.
Why are these changes required?
Missing POM checksums: these three components have Gradle Module Metadata (
.module) checksums but no POM checksums. In the tested Maven Central resolution path, Gradle uses the verified.modulemetadata, so the missing POM checksums do not surface.mavenLocal()is the first repository inbuild.gradle. If a developer's local Maven repository contains a Maven-downloaded copy of one of these components (POM and jar, no.module), Gradle reads its metadata from the POM and strict dependency verification fails:For jsonrpc4j this already fails on
frameworkcompileClasspath, so:framework:compileJavacannot run. The two Jackson 2.16.1 entries are only conflict candidates. The checksums were generated by--write-verification-metadata sha256with the components resolved from a local Maven-style repository, and match the POMs on Maven Central.Jackson upgrade: 2.18.11 and 2.18.12 include security fixes in
jackson-coreandjackson-databind; see the 2.18.11 and 2.18.12 release notes. The 2.18.12.pomentries are added for the same reason as above: generating from Maven Central alone records only the jar and.module.This PR has been tested by:
:common:test(129),:actuator:test(57) and:plugins:test(169) pass.:framework:test: 4359 tests completed, 8 failed, 12 skipped.InetUtilTestcases that fail in DNS lookups in this environment; the same cases fail on an earlierrelease_v4.8.3commit without these changes.RpcServiceHttp2SecurityTest.shouldEnforceRstLimitForLegacyZeroConfigtimed out reading a frame during the full run; the class passed in 3 separate reruns.-Dmaven.repo.local:.pomentries the build fails, with three artifacts failing verification, includingjackson-annotations-2.18.12.pom ... from repository MavenLocal;frameworkruntimeClasspathfails the build, each time with only the target POM failing verification, from repositoryMavenLocal.frameworkcompileClasspathandruntimeClasspathin all runs. All 1074com/fasterxml/jacksonclasses inFullNode.jarare byte-identical to the classes in the Maven Central 2.18.12jackson-core,jackson-databindandjackson-annotationsjars, with no duplicate entries../gradlew build -x test -x generateGitPropertiespasses.generateGitPropertiesonly writes build version information and does not take part in dependency resolution.FullNode.jarwith JSON-RPC enabled on the full node, solidity and PBFT ports (8545/8555/8565). Single and batch requests, parameter conversion errors, invalid JSON and unknown methods returned the expected responses; the HTTP API responded; no ERROR logs; graceful shutdown.Follow up
None in this PR.
Extra details
None.