Trying to fix test failures caused by Testcontainers running in Docker on Jenkins. The Cassandra Docker image/container is forked inside Docker running in Jenkins CI and is currently throwing:
Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for container port to open (172.17.0.1 ports: [49401] should be listening)
at org.testcontainers.containers.wait.strategy.HostPortWaitStrategy.waitUntilReady(HostPortWaitStrategy.java:49)
at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:35)
at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:892)
at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:440)
... 85 more
In the Testcontainers project, I found:
https://github.com/testcontainers/testcontainers-java/issues/4360
And specifically:
https://github.com/testcontainers/testcontainers-java/issues/4360#issuecomment-892481828
The Jenkins servers (worker nodes) were recently upgraded to:
docker-ce (5:20.10.8~3-0~ubuntu-bionic)
containerd.io (1.4.9-1)
Seems Jackson introduced an API breaking change that now requires a PolymorphicTypeValidator when configuring and activating the default typing as a propery on the ObjectMapper.
Without this dependency the Gradle build logs warnings about:
> Task :spring-geode-autoconfigure:compileTestJava
warning: unknown enum constant When.MAYBE
reason: class file for javax.annotation.meta.When not found
...
Spring Aware Objects currently handled by ObjectAwareUtils includes, but is not limited to: ApplicationContextAware, ApplicationEventPublisherAware, BeanClassLoaderAware, BeanFactoryAware, BeanNameAware, EnvironmentAware and ResourceLoaderAware.
Change AbstractCacheResourceResolver class to be ApplicationContextAware and EnvironmentAware.
Add getLogger() method to the AbstractCacheResourceResolver class.
Add Resource description in Logger message logged by onMissingResource(..) on export.
Annotate AbstractExportResourceResolver.onMisingResource(..) method signature with Spring Framework @NonNull and @Nullable annotations.
Separate logic from afterPropertiesSet() initializing the ApplicationContext, Environment and ResourceLoader objects on aware import/export ResourceResolvers into init methods.
Edit Javadoc.
Resolves gh-92.
Move the isImportProfilesActive(:Environment) method before the importInto(:Region) method.
Annotate toSet(..) class method signature with Spring Framework @NonNull and @Nullable annotations.
Edit Javadoc.
Resolves gh-92.
Add additional, lenient asWritableResource(:Resource) method return an Optional<WritableResource> if the given Resource is not an instance of WritableResource.
Resolves gh-92.
Change doImportInto(:Region) logic to make use of the ImportResourceResolver and ResourceReader on import.
Change doExportFrom(:Region) logic to make use of the ExportResourceResolver and ResourceWriter on export.
Resolves gh-92.
Change CacheResourceResolver, ExportResourceResolver and ImportResourceResolver interfaces into @FunctionalInterfaces; provide default implementation for the resolve(location:String):Optional<Resource> method.
Change access modifier on AbstractExportResourceResolver and AbstractImportResourceResolver from protected to public.
Resolves gh-92.