Bug #22415
closedJava SDK fails to build on Debian 12
Description
With the included JDK 17.0.13 and Gradle 4.4.1:
======= test sdk/java-v2
openjdk version "17.0.13" 2024-10-15
OpenJDK Runtime Environment (build 17.0.13+11-Debian-2deb12u1)
OpenJDK 64-Bit Server VM (build 17.0.13+11-Debian-2deb12u1, mixed mode, sharing)
Starting a Gradle Daemon (subsequent builds will be faster)
> Task :compileTestJava
Note: /home/brett/Curii/arvados/sdk/java-v2/src/test/java/org/arvados/client/api/client/CollectionsApiClientTest.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
> Task :test
org.arvados.client.utils.FileMergeTest > fileChunksAreMergedIntoOneFile PASSED
org.arvados.client.utils.FileSplitTest > fileIsDividedIntoSmallerChunks PASSED
org.arvados.client.facade.ArvadosFacadeTest > downloadOfWholeCollectionIsPerformedSuccessfully PASSED
org.arvados.client.facade.ArvadosFacadeTest > downloadOfSingleFilePerformedSuccessfully PASSED
org.arvados.client.facade.ArvadosFacadeTest > downloadOfWholeCollectionUsingKeepWebPerformedSuccessfully PASSED
org.arvados.client.facade.ArvadosFacadeTest > uploadIsPerformedSuccessfullyUsingDiskOnlyKeepServices SKIPPED
org.arvados.client.facade.ArvadosFacadeTest > uploadIsPerformedSuccessfully PASSED
org.arvados.client.logic.collection.FileTokenTest > toStringReturnsOriginalFileTokenInfo PASSED
org.arvados.client.logic.collection.FileTokenTest > fullPathIsReturnedProperly PASSED
org.arvados.client.logic.collection.FileTokenTest > tokenInfoIsDividedCorrectly PASSED
org.arvados.client.logic.collection.ManifestFactoryTest > manifestIsCreatedAsExpected SKIPPED
org.arvados.client.logic.collection.ManifestStreamTest > toStringReturnsProperlyConnectedManifestStream PASSED
org.arvados.client.logic.collection.ManifestDecoderTest > manifestTextWithInvalidStreamNameThrowsException PASSED
org.arvados.client.logic.collection.ManifestDecoderTest > allLocatorsAndFileTokensAreExtractedFromComplexManifest PASSED
org.arvados.client.logic.collection.ManifestDecoderTest > allLocatorsAndFileTokensAreExtractedFromSimpleManifest PASSED
org.arvados.client.logic.collection.ManifestDecoderTest > emptyManifestTextThrowsException PASSED
OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended
org.arvados.client.logic.keep.KeepClientTest > exceptionIsThrownWhenThereAreNoServersAccessible FAILED
org.mockito.exceptions.base.MockitoException
Caused by: org.mockito.exceptions.base.MockitoException
Caused by: java.lang.IllegalStateException
Caused by: java.lang.IllegalArgumentException
org.arvados.client.logic.keep.KeepClientTest > uploadedFile FAILED
org.mockito.exceptions.base.MockitoException
Caused by: org.mockito.exceptions.base.MockitoException
Caused by: java.lang.IllegalStateException
Caused by: java.lang.IllegalArgumentException
org.arvados.client.logic.keep.KeepClientTest > fileIsDownloadedWhenFirstServerDoesNotRespond FAILED
org.mockito.exceptions.base.MockitoException
Caused by: org.mockito.exceptions.base.MockitoException
Caused by: java.lang.IllegalStateException
Caused by: java.lang.IllegalArgumentException
org.arvados.client.logic.keep.KeepClientTest > fileIsDownloaded FAILED
org.mockito.exceptions.base.MockitoException
Caused by: org.mockito.exceptions.base.MockitoException
Caused by: java.lang.IllegalStateException
Caused by: java.lang.IllegalArgumentException
org.arvados.client.logic.keep.KeepClientTest > exceptionIsThrownWhenNoServerResponds FAILED
org.mockito.exceptions.base.MockitoException
Caused by: org.mockito.exceptions.base.MockitoException
Caused by: java.lang.IllegalStateException
Caused by: java.lang.IllegalArgumentException
org.arvados.client.logic.keep.FileDownloaderTest > testDownloadFileWithResume FAILED
org.mockito.exceptions.base.MockitoException
Caused by: org.mockito.exceptions.base.MockitoException
Caused by: java.lang.IllegalStateException
Caused by: java.lang.IllegalArgumentException
org.arvados.client.logic.keep.FileDownloaderTest > downloadingAllFilesFromCollectionWorksProperly FAILED
org.mockito.exceptions.base.MockitoException
Caused by: org.mockito.exceptions.base.MockitoException
Caused by: java.lang.IllegalStateException
Caused by: java.lang.IllegalArgumentException
org.arvados.client.logic.keep.FileDownloaderTest > downloadingSingleFileFromKeepWebWorksCorrectly FAILED
org.mockito.exceptions.base.MockitoException
Caused by: org.mockito.exceptions.base.MockitoException
Caused by: java.lang.IllegalStateException
Caused by: java.lang.IllegalArgumentException
org.arvados.client.logic.keep.KeepLocatorTest > locatorIsStrippedWithMd5sumAndSize PASSED
org.arvados.client.logic.keep.KeepLocatorTest > locatorToStringProperlyShowing PASSED
org.arvados.client.logic.keep.KeepLocatorTest > md5sumIsExtracted PASSED
org.arvados.client.api.client.KeepServicesApiClientTest > listAccessibleKeepServices PASSED
org.arvados.client.api.client.KeepServicesApiClientTest > listKeepServices PASSED
org.arvados.client.api.client.KeepServicesApiClientTest > getKeepService PASSED
org.arvados.client.api.client.BaseStandardApiClientTest > urlBuilderBuildsExpectedUrlFormat FAILED
org.mockito.exceptions.base.MockitoException
Caused by: org.mockito.exceptions.base.MockitoException
Caused by: org.mockito.exceptions.base.MockitoException
Caused by: java.lang.IllegalStateException
Caused by: java.lang.IllegalArgumentException
org.arvados.client.api.client.KeepServerApiClientTest > downloadFileFromServer PASSED
org.arvados.client.api.client.KeepServerApiClientTest > uploadFileToServer PASSED
org.arvados.client.api.client.factory.OkHttpClientFactoryTest > secureOkHttpClientIsCreated PASSED
org.arvados.client.api.client.factory.OkHttpClientFactoryTest > insecureOkHttpClientIsCreated PASSED
org.arvados.client.api.client.LinkApiClientTest > listLinks PASSED
org.arvados.client.api.client.LinkApiClientTest > getLink PASSED
org.arvados.client.api.client.LinkApiClientTest > createLink PASSED
org.arvados.client.api.client.UsersApiClientTest > listUsers PASSED
org.arvados.client.api.client.UsersApiClientTest > getUser PASSED
org.arvados.client.api.client.UsersApiClientTest > getCurrentUser PASSED
org.arvados.client.api.client.UsersApiClientTest > getSystemUser PASSED
org.arvados.client.api.client.UsersApiClientTest > createUser PASSED
org.arvados.client.api.client.GroupsApiClientTest > listProjectsByOwner PASSED
org.arvados.client.api.client.GroupsApiClientTest > listGroups PASSED
org.arvados.client.api.client.GroupsApiClientTest > getGroup PASSED
org.arvados.client.api.client.KeepWebApiClientTest > downloadPartialIsPerformedSuccessfully PASSED
org.arvados.client.api.client.KeepWebApiClientTest > uploadFile PASSED
org.arvados.client.api.client.CollectionsApiClientTest > getCollection PASSED
org.arvados.client.api.client.CollectionsApiClientTest > createCollectionWithManifest PASSED
org.arvados.client.api.client.CollectionsApiClientTest > listCollections PASSED
org.arvados.client.api.client.CollectionsApiClientTest > createCollection PASSED
org.arvados.client.api.client.CollectionsApiClientTest > testUpdateWithReplaceFiles PASSED
WARNING: A terminally deprecated method in java.lang.System has been called
WARNING: System::setSecurityManager has been called by org.gradle.api.internal.tasks.testing.worker.TestWorker (file:/usr/share/gradle/lib/plugins/gradle-testing-base-4.4.1.jar)
WARNING: Please consider reporting this to the maintainers of org.gradle.api.internal.tasks.testing.worker.TestWorker
WARNING: System::setSecurityManager will be removed in a future release
---- Test results ----
FAILURE (53 tests, 42 successes, 9 failures, 2 skipped)
53 tests completed, 9 failed, 2 skipped
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':test'.
> There were failing tests. See the report at: file:///home/brett/Curii/arvados/sdk/java-v2/build/reports/tests/test/index.html
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 9s
5 actionable tasks: 3 executed, 2 up-to-date
======= sdk/java-v2 tests -- FAILED
Individual test failures all look like this:
org.mockito.exceptions.base.MockitoException: Unable to initialize @Spy annotated field 'client'.
Mockito cannot mock this class: class org.arvados.client.api.client.BaseStandardApiClientTest$1.
If you're not sure why you're getting this error, please report to the mailing list.
Java : 17
JVM vendor name : Debian
JVM vendor version : 17.0.13+11-Debian-2deb12u1
JVM name : OpenJDK 64-Bit Server VM
JVM version : 17.0.13+11-Debian-2deb12u1
JVM info : mixed mode, sharing
OS name : Linux
OS version : 6.1.0-28-amd64
You are seeing this disclaimer because Mockito is configured to create inlined mocks.
You can learn about inline mocks and their limitations under item #39 of the Mockito class javadoc.
Underlying exception : org.mockito.exceptions.base.MockitoException: Could not modify all classes [class java.lang.Object, class org.arvados.client.api.client.BaseStandardApiClientTest$1, class org.arvados.client.api.client.BaseStandardApiClient, class org.arvados.client.api.client.BaseApiClient]
at org.mockito.internal.runners.DefaultInternalRunner$1$1.evaluate(DefaultInternalRunner.java:44)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.mockito.internal.runners.DefaultInternalRunner$1.run(DefaultInternalRunner.java:77)
at org.mockito.internal.runners.DefaultInternalRunner.run(DefaultInternalRunner.java:83)
at org.mockito.internal.runners.StrictRunner.run(StrictRunner.java:39)
at org.mockito.junit.MockitoJUnitRunner.run(MockitoJUnitRunner.java:163)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.runTestClass(JUnitTestClassExecuter.java:114)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.execute(JUnitTestClassExecuter.java:57)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassProcessor.processTestClass(JUnitTestClassProcessor.java:66)
at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:51)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:569)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
at jdk.proxy1/jdk.proxy1.$Proxy1.processTestClass(Unknown Source)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:108)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:569)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:146)
at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:128)
at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
at java.base/java.lang.Thread.run(Thread.java:840)
Caused by: org.mockito.exceptions.base.MockitoException:
Mockito cannot mock this class: class org.arvados.client.api.client.BaseStandardApiClientTest$1.
If you're not sure why you're getting this error, please report to the mailing list.
Java : 17
JVM vendor name : Debian
JVM vendor version : 17.0.13+11-Debian-2deb12u1
JVM name : OpenJDK 64-Bit Server VM
JVM version : 17.0.13+11-Debian-2deb12u1
JVM info : mixed mode, sharing
OS name : Linux
OS version : 6.1.0-28-amd64
You are seeing this disclaimer because Mockito is configured to create inlined mocks.
You can learn about inline mocks and their limitations under item #39 of the Mockito class javadoc.
Underlying exception : org.mockito.exceptions.base.MockitoException: Could not modify all classes [class java.lang.Object, class org.arvados.client.api.client.BaseStandardApiClientTest$1, class org.arvados.client.api.client.BaseStandardApiClient, class org.arvados.client.api.client.BaseApiClient]
... 44 more
Caused by: org.mockito.exceptions.base.MockitoException: Could not modify all classes [class java.lang.Object, class org.arvados.client.api.client.BaseStandardApiClientTest$1, class org.arvados.client.api.client.BaseStandardApiClient, class org.arvados.client.api.client.BaseApiClient]
at net.bytebuddy.TypeCache.findOrInsert(TypeCache.java:152)
at net.bytebuddy.TypeCache$WithInlineExpunction.findOrInsert(TypeCache.java:365)
at net.bytebuddy.TypeCache.findOrInsert(TypeCache.java:174)
at net.bytebuddy.TypeCache$WithInlineExpunction.findOrInsert(TypeCache.java:376)
... 44 more
Caused by: java.lang.IllegalStateException:
Byte Buddy could not instrument all classes within the mock's type hierarchy
This problem should never occur for javac-compiled classes. This problem has been observed for classes that are:
- Compiled by older versions of scalac
- Classes that are part of the Android distribution
at org.mockito.internal.creation.bytebuddy.InlineBytecodeGenerator.triggerRetransformation(InlineBytecodeGenerator.java:176)
at org.mockito.internal.creation.bytebuddy.InlineBytecodeGenerator.mockClass(InlineBytecodeGenerator.java:152)
at org.mockito.internal.creation.bytebuddy.TypeCachingBytecodeGenerator$1.call(TypeCachingBytecodeGenerator.java:37)
at org.mockito.internal.creation.bytebuddy.TypeCachingBytecodeGenerator$1.call(TypeCachingBytecodeGenerator.java:34)
at net.bytebuddy.TypeCache.findOrInsert(TypeCache.java:152)
at net.bytebuddy.TypeCache$WithInlineExpunction.findOrInsert(TypeCache.java:365)
at net.bytebuddy.TypeCache.findOrInsert(TypeCache.java:174)
at net.bytebuddy.TypeCache$WithInlineExpunction.findOrInsert(TypeCache.java:376)
at org.mockito.internal.creation.bytebuddy.TypeCachingBytecodeGenerator.mockClass(TypeCachingBytecodeGenerator.java:32)
at org.mockito.internal.creation.bytebuddy.InlineByteBuddyMockMaker.createMockType(InlineByteBuddyMockMaker.java:199)
at org.mockito.internal.creation.bytebuddy.InlineByteBuddyMockMaker.createMock(InlineByteBuddyMockMaker.java:180)
at org.mockito.internal.util.MockUtil.createMock(MockUtil.java:35)
at org.mockito.internal.MockitoCore.mock(MockitoCore.java:63)
at org.mockito.Mockito.mock(Mockito.java:1908)
at org.mockito.internal.configuration.SpyAnnotationEngine.spyInstance(SpyAnnotationEngine.java:76)
at org.mockito.internal.configuration.SpyAnnotationEngine.process(SpyAnnotationEngine.java:64)
at org.mockito.internal.configuration.InjectingAnnotationEngine.processIndependentAnnotations(InjectingAnnotationEngine.java:60)
at org.mockito.internal.configuration.InjectingAnnotationEngine.process(InjectingAnnotationEngine.java:42)
at org.mockito.MockitoAnnotations.initMocks(MockitoAnnotations.java:68)
... 44 more
Caused by: java.lang.IllegalArgumentException: Unsupported class file major version 61
at net.bytebuddy.jar.asm.ClassReader.<init>(ClassReader.java:195)
at net.bytebuddy.jar.asm.ClassReader.<init>(ClassReader.java:176)
at net.bytebuddy.jar.asm.ClassReader.<init>(ClassReader.java:162)
at net.bytebuddy.utility.OpenedClassReader.of(OpenedClassReader.java:86)
at net.bytebuddy.dynamic.scaffold.TypeWriter$Default$ForInlining.create(TypeWriter.java:3394)
at net.bytebuddy.dynamic.scaffold.TypeWriter$Default.make(TypeWriter.java:1933)
at net.bytebuddy.dynamic.scaffold.inline.RedefinitionDynamicTypeBuilder.make(RedefinitionDynamicTypeBuilder.java:217)
at net.bytebuddy.dynamic.scaffold.inline.AbstractInliningDynamicTypeBuilder.make(AbstractInliningDynamicTypeBuilder.java:120)
at net.bytebuddy.dynamic.DynamicType$Builder$AbstractBase.make(DynamicType.java:3404)
at org.mockito.internal.creation.bytebuddy.InlineBytecodeGenerator.transform(InlineBytecodeGenerator.java:253)
at java.instrument/java.lang.instrument.ClassFileTransformer.transform(ClassFileTransformer.java:244)
at java.instrument/sun.instrument.TransformerManager.transform(TransformerManager.java:188)
at java.instrument/sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:541)
at java.instrument/sun.instrument.InstrumentationImpl.retransformClasses0(Native Method)
at java.instrument/sun.instrument.InstrumentationImpl.retransformClasses(InstrumentationImpl.java:169)
at org.mockito.internal.creation.bytebuddy.InlineBytecodeGenerator.triggerRetransformation(InlineBytecodeGenerator.java:173)
... 62 more
Updated by Peter Amstutz about 1 year ago
- Related to Support #22679: Build Jenkins image based on Debian 12 and make sure the whole test & build pipeline works added
Updated by Peter Amstutz about 1 year ago
- Target version set to Development 2025-03-19
Updated by Peter Amstutz about 1 year ago
- Target version changed from Development 2025-03-19 to Development 2025-04-02
Updated by Peter Amstutz 11 months ago
- Related to deleted (Support #22679: Build Jenkins image based on Debian 12 and make sure the whole test & build pipeline works)
Updated by Peter Amstutz 11 months ago
- Blocks Support #22679: Build Jenkins image based on Debian 12 and make sure the whole test & build pipeline works added
Updated by Brett Smith 11 months ago
22415-java-sdk-17 @ d71199d588fafd3dc8b120b5fec9af059b451b15 - developer-run-tests: #4737
- All agreed upon points are implemented / addressed.
- Fixes the issue by upgrading Mockito.
- Upgraded to Gradle 6 while I was at it because it was easy.
- Makes
test-in-docker.shmore friendly to developers by passing arguments more naturally and skipping signing if it isn't configured.
- Anything not implemented (discovered or discussed during work) has a follow-up story.
- After this merges, we will need to update
build-java-sdkto take the current$gradle_uploadstring and pass those as arguments directly totest-in-docker.sh. It's literally just moving one string around I can do after this merges before closing the ticket.
- After this merges, we will need to update
- Code is tested and passing, both automated and manual, what manual testing was done is described
- See above. Also ran
test-in-docker.shmanually.
- See above. Also ran
- Documentation has been updated.
- N/A
- Behaves appropriately at the intended scale (describe intended scale).
- No change
- Considered backwards and forwards compatibility issues between client and server.
- N/A
- Follows our coding standards and GUI style guidelines.
- N/A (no guide for these languages)
Updated by Peter Amstutz 11 months ago
Updated by Peter Amstutz 11 months ago
It is actually less work to do it than to complain about it
Updated by Brett Smith 11 months ago
Brown paper bag fix at 076e02a3e8d37eff4dbba020c2bcae73f0938383 - there's no test for this but you can test it manually.
Updated by Brett Smith 11 months ago
- Status changed from New to In Progress
Here's the latest commit passing on Debian 12: developer-run-tests-doc-sdk-java-R: #2237
15:08:38 ======= test sdk/java-v2 15:08:38 openjdk version "17.0.14" 2025-01-21 15:08:38 OpenJDK Runtime Environment (build 17.0.14+7-Debian-1deb12u1) 15:08:38 OpenJDK 64-Bit Server VM (build 17.0.14+7-Debian-1deb12u1, mixed mode, sharing) 15:08:38 Starting a Gradle Daemon (subsequent builds will be faster) … 15:08:54 ---- Test results ---- 15:08:54 SUCCESS (53 tests, 51 successes, 0 failures, 2 skipped) 15:08:54 15:08:54 15:08:54 BUILD SUCCESSFUL in 16s 15:08:54 5 actionable tasks: 5 executed 15:08:55 ======= test sdk/java-v2 -- 17s
Updated by Brett Smith 11 months ago
- Status changed from In Progress to Resolved
Brett Smith wrote in #note-14:
After this merges, we will need to update
build-java-sdkto take the current$gradle_uploadstring and pass those as arguments directly totest-in-docker.sh. It's literally just moving one string around I can do after this merges before closing the ticket.
This is done. Although, now that I've thought about the Jenkins job some more, I think I just convinced myself we don't really need this test-in-docker.sh script at all. It seems like the original motivation was to be able to run on systems without Gradle, but now that we've standardized on a large, inclusive Jenkins test image, build-java-sdk should be able to just run it directly. But that can be a separate issue.
Updated by Brett Smith 10 months ago
- Release set to 78
Because we have upgraded our test infrastructure to Debian 12, this must go in the 3.1.2 release for tests to pass. It only changes dependency versions, not code or APIs, so seems reasonable to include in a bugfix release.
Updated by Peter Amstutz 10 months ago
Brett Smith wrote in #note-21:
Because we have upgraded our test infrastructure to Debian 12, this must go in the 3.1.2 release for tests to pass. It only changes dependency versions, not code or APIs, so seems reasonable to include in a bugfix release.
Sounds good to me.