Hi Jinwoo,

I tested RC2 in colocated partitioned regions and global scope replication
use cases in our backend services. But all in a single peer instance setup.
Tested geode 1.15.x client connecting to 2.0 server and 2.0 client to 2.0.
No issues observed.

I've only found the need to add a bunch of dependencies when moving to
geode 2.0 that were not there before. We don't add geode-all-bom, but add
specific dependencies needed. In version 2.0 I've added them as the
following exceptions happened and I'm listing the dependency that fixed it:

1. <groupId>net.sf.jopt-simple</groupId>
<artifactId>jopt-simple</artifactId>

java.lang.NoClassDefFoundError: joptsimple/internal/Strings
at
org.apache.geode.internal.cache.AbstractDiskRegion.createCompressorFromClassName(AbstractDiskRegion.java:304)
at
org.apache.geode.internal.cache.AbstractDiskRegion.setConfig(AbstractDiskRegion.java:299)
at
org.apache.geode.internal.cache.DiskInitFile.cmnRegionConfig(DiskInitFile.java:554)
at
org.apache.geode.internal.cache.persistence.DiskInitFileParser.parse(DiskInitFileParser.java:386)
at
org.apache.geode.internal.cache.DiskInitFile.recover(DiskInitFile.java:435)
at
org.apache.geode.internal.cache.DiskInitFile.<init>(DiskInitFile.java:1808)
at
org.apache.geode.internal.cache.DiskStoreImpl.loadFiles(DiskStoreImpl.java:1993)
at
org.apache.geode.internal.cache.DiskStoreImpl.<init>(DiskStoreImpl.java:512)
at
org.apache.geode.internal.cache.DiskStoreImpl.<init>(DiskStoreImpl.java:411)
at
org.apache.geode.internal.cache.DiskStoreImpl.<init>(DiskStoreImpl.java:406)
at
org.apache.geode.internal.cache.DiskStoreFactoryImpl.create(DiskStoreFactoryImpl.java:151)
at
org.apache.geode.internal.cache.xmlcache.CacheCreation.createDiskStore(CacheCreation.java:835)
at
org.apache.geode.internal.cache.xmlcache.CacheCreation.lambda$createDiskStores$0(CacheCreation.java:651)
at
java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
at
java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:1024)
at
java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at
java.base/java.util.stream.ForEachOps$ForEachTask.compute(ForEachOps.java:291)
at
java.base/java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:754)
at
java.base/java.util.concurrent.ForkJoinTask.doExec$$$capture(ForkJoinTask.java:387)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java)
at
java.base/java.util.concurrent.ForkJoinPool$WorkQueue.helpComplete(ForkJoinPool.java:1395)
at
java.base/java.util.concurrent.ForkJoinPool.helpComplete(ForkJoinPool.java:2104)
at
java.base/java.util.concurrent.ForkJoinTask.awaitDone(ForkJoinTask.java:420)
at java.base/java.util.concurrent.ForkJoinTask.invoke(ForkJoinTask.java:668)
at
java.base/java.util.stream.ForEachOps$ForEachOp.evaluateParallel(ForEachOps.java:160)
at
java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateParallel(ForEachOps.java:174)
at
java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:233)
at
java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
at
java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:765)
at
org.apache.geode.internal.cache.xmlcache.CacheCreation.createDiskStores(CacheCreation.java:648)
at
org.apache.geode.internal.cache.xmlcache.CacheCreation.create(CacheCreation.java:532)
at
org.apache.geode.internal.cache.xmlcache.CacheXmlParser.create(CacheXmlParser.java:339)
at
org.apache.geode.internal.cache.GemFireCacheImpl.loadCacheXml(GemFireCacheImpl.java:4225)
at
org.apache.geode.internal.cache.GemFireCacheImpl.initializeDeclarativeCache(GemFireCacheImpl.java:1621)
at
org.apache.geode.internal.cache.GemFireCacheImpl.initialize(GemFireCacheImpl.java:1446)
at
org.apache.geode.internal.cache.InternalCacheBuilder.create(InternalCacheBuilder.java:191)
at
org.apache.geode.internal.cache.InternalCacheBuilder.create(InternalCacheBuilder.java:158)
at org.apache.geode.cache.CacheFactory.create(CacheFactory.java:142)
...

I think this is from persistence file of geode 1.15 being read on 2.0.
This  joptsimple is not even in geode-all-bom. I haven't looked where it
was coming from.

2. <groupId>org.apache.geode</groupId>
<artifactId>geode-deployment-legacy</artifactId>

org.apache.geode.deployment.internal.exception.ServiceLoadingFailureException:
No implementation of JarDeploymentService could be loaded.

at
org.apache.geode.internal.deployment.DeploymentServiceFactory.createJarDeploymentService(DeploymentServiceFactory.java:47)
at
org.apache.geode.internal.deployment.DeploymentServiceFactory.getJarDeploymentServiceInstance(DeploymentServiceFactory.java:70)
at
org.apache.geode.internal.classloader.ClassPathLoader.<init>(ClassPathLoader.java:79)
at
org.apache.geode.internal.classloader.ClassPathLoader.setLatestToDefault(ClassPathLoader.java:86)
at
org.apache.geode.internal.classloader.ClassPathLoader.getLatest(ClassPathLoader.java:102)
at
org.apache.geode.distributed.DistributedSystem.getFileURL(DistributedSystem.java:663)
at
org.apache.geode.distributed.DistributedSystem.getPropertiesFileURL(DistributedSystem.java:605)
at
org.apache.geode.distributed.DistributedSystem.getPropertyFileURL(DistributedSystem.java:623)
at
org.apache.geode.distributed.internal.DistributionConfigImpl.<init>(DistributionConfigImpl.java:939)
at
org.apache.geode.distributed.internal.DistributionConfigImpl.<init>(DistributionConfigImpl.java:902)
at
org.apache.geode.distributed.internal.ConnectionConfigImpl.lambda$new$2(ConnectionConfigImpl.java:37)
at
org.apache.geode.distributed.internal.ConnectionConfigImpl.convert(ConnectionConfigImpl.java:73)
at
org.apache.geode.distributed.internal.ConnectionConfigImpl.<init>(ConnectionConfigImpl.java:36)
at
org.apache.geode.distributed.internal.InternalDistributedSystem$Builder.build(InternalDistributedSystem.java:3044)
at
org.apache.geode.distributed.internal.InternalDistributedSystem.connectInternal(InternalDistributedSystem.java:283)
at
org.apache.geode.distributed.internal.InternalDistributedSystem.connectInternal(InternalDistributedSystem.java:209)
at
org.apache.geode.internal.cache.InternalCacheBuilder.createInternalDistributedSystem(InternalCacheBuilder.java:346)
at java.base/java.util.Optional.orElseGet(Optional.java:364)
at
org.apache.geode.internal.cache.InternalCacheBuilder.create(InternalCacheBuilder.java:157)
at org.apache.geode.cache.CacheFactory.create(CacheFactory.java:142)

I don't know the whole story. But looks like some breaking change for jar
deployments. We don't use any jar deployments features. Fixed by adding
geode-deployment-legacy. Not sure why legacy and what the new way is. Maybe
documented in migration docs?

3. <groupId>io.micrometer</groupId>
<artifactId>micrometer-core</artifactId>

java.lang.NoClassDefFoundError:
io/micrometer/core/instrument/binder/MeterBinder

at java.base/java.lang.ClassLoader.defineClass1(Native Method)
...
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
at
org.apache.geode.metrics.internal.InternalDistributedSystemMetricsService$Builder.<init>(InternalDistributedSystemMetricsService.java:238)
at
org.apache.geode.internal.cache.InternalCacheBuilder.<init>(InternalCacheBuilder.java:109)
at
org.apache.geode.internal.cache.InternalCacheBuilder.<init>(InternalCacheBuilder.java:98)
at org.apache.geode.cache.CacheFactory.<init>(CacheFactory.java:112)
at org.apache.geode.cache.CacheFactory.<init>(CacheFactory.java:101)

For whatever reason wasn't an issue before.

4. <groupId>org.apache.geode</groupId>
<artifactId>geode-management</artifactId>

java.lang.NoClassDefFoundError:
org/apache/geode/management/internal/operation/RegionRedundancyStatusImpl

at java.base/java.lang.ClassLoader.defineClass1(Native Method)
...
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
at
org.apache.geode.internal.DSFIDFactory.registerDSFIDTypes(DSFIDFactory.java:460)
at org.apache.geode.internal.DSFIDFactory.<init>(DSFIDFactory.java:434)
at
org.apache.geode.internal.InternalDataSerializer.<clinit>(InternalDataSerializer.java:344)
at
org.apache.geode.distributed.internal.InternalDistributedSystem$Builder.build(InternalDistributedSystem.java:3041)
at
org.apache.geode.distributed.internal.InternalDistributedSystem.connectInternal(InternalDistributedSystem.java:283)
at
org.apache.geode.distributed.internal.InternalDistributedSystem.connectInternal(InternalDistributedSystem.java:209)
at
org.apache.geode.internal.cache.InternalCacheBuilder.createInternalDistributedSystem(InternalCacheBuilder.java:346)
at java.base/java.util.Optional.orElseGet(Optional.java:364)
at
org.apache.geode.internal.cache.InternalCacheBuilder.create(InternalCacheBuilder.java:157)
at org.apache.geode.cache.CacheFactory.create(CacheFactory.java:142)

5. <groupId>jakarta.transaction</groupId>
<artifactId>jakarta.transaction-api</artifactId>

java.lang.NoClassDefFoundError: jakarta/transaction/Synchronization

at java.base/java.lang.ClassLoader.defineClass1(Native Method)
...
at java.base/java.lang.Class.getConstructor(Class.java:2442)
at
org.apache.geode.internal.serialization.internal.DSFIDSerializerImpl.register(DSFIDSerializerImpl.java:341)
at
org.apache.geode.internal.DSFIDFactory.registerDSFIDTypes(DSFIDFactory.java:573)
at org.apache.geode.internal.DSFIDFactory.<init>(DSFIDFactory.java:434)
at
org.apache.geode.internal.InternalDataSerializer.<clinit>(InternalDataSerializer.java:344)
at
org.apache.geode.distributed.internal.InternalDistributedSystem$Builder.build(InternalDistributedSystem.java:3041)
at
org.apache.geode.distributed.internal.InternalDistributedSystem.connectInternal(InternalDistributedSystem.java:283)
at
org.apache.geode.distributed.internal.InternalDistributedSystem.connectInternal(InternalDistributedSystem.java:209)
at
org.apache.geode.internal.cache.InternalCacheBuilder.createInternalDistributedSystem(InternalCacheBuilder.java:346)
at java.base/java.util.Optional.orElseGet(Optional.java:364)
at
org.apache.geode.internal.cache.InternalCacheBuilder.create(InternalCacheBuilder.java:157)
at org.apache.geode.cache.CacheFactory.create(CacheFactory.java:142)

6. <groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>

java.lang.NoClassDefFoundError: org/apache/shiro/subject/Subject

at
org.apache.geode.internal.cache.tier.sockets.CacheClientProxyFactory.<clinit>(CacheClientProxyFactory.java:44)
at
org.apache.geode.internal.cache.tier.sockets.CacheClientNotifier.getInstance(CacheClientNotifier.java:151)
at
org.apache.geode.internal.cache.tier.sockets.CacheClientNotifier.getInstance(CacheClientNotifier.java:180)
at
org.apache.geode.internal.cache.tier.sockets.AcceptorImpl.<init>(AcceptorImpl.java:632)
at
org.apache.geode.internal.cache.tier.sockets.AcceptorBuilder.create(AcceptorBuilder.java:291)
at
org.apache.geode.internal.cache.CacheServerImpl.createAcceptor(CacheServerImpl.java:420)
at
org.apache.geode.internal.cache.CacheServerImpl.start(CacheServerImpl.java:377)

7. <groupId>antlr</groupId>
<artifactId>antlr</artifactId>

java.lang.NoClassDefFoundError: antlr/TokenStream
at
org.apache.geode.cache.query.internal.DefaultQuery.<init>(DefaultQuery.java:164)
at
org.apache.geode.cache.query.internal.DefaultQueryService.newQuery(DefaultQueryService.java:151)

8. <groupId>com.healthmarketscience.rmiio</groupId>
<artifactId>rmiio</artifactId>

java.lang.NoClassDefFoundError:
com/healthmarketscience/rmiio/exporter/RemoteStreamExporter
at
org.apache.geode.management.internal.SystemManagementService.newSystemManagementService(SystemManagementService.java:147)
at
org.apache.geode.management.internal.BaseManagementService.getManagementService(BaseManagementService.java:81)
at
org.apache.geode.management.ManagementService.getManagementService(ManagementService.java:43)
at
org.apache.geode.internal.cache.wan.serial.SerialGatewaySenderQueue.addOverflowStatisticsToMBean(SerialGatewaySenderQueue.java:1094)
at
org.apache.geode.internal.cache.wan.serial.SerialGatewaySenderQueue.initializeRegion(SerialGatewaySenderQueue.java:1070)
at
org.apache.geode.internal.cache.wan.serial.SerialGatewaySenderQueue.<init>(SerialGatewaySenderQueue.java:229)
at
org.apache.geode.internal.cache.wan.serial.SerialGatewaySenderQueue.<init>(SerialGatewaySenderQueue.java:205)
at
org.apache.geode.internal.cache.wan.serial.SerialGatewaySenderEventProcessor.initializeMessageQueue(SerialGatewaySenderEventProcessor.java:129)
at
org.apache.geode.internal.cache.wan.serial.SerialGatewaySenderEventProcessor.<init>(SerialGatewaySenderEventProcessor.java:115)
at
org.apache.geode.cache.asyncqueue.internal.SerialAsyncEventQueueImpl.createEventProcessor(SerialAsyncEventQueueImpl.java:133)
at
org.apache.geode.cache.asyncqueue.internal.SerialAsyncEventQueueImpl.start(SerialAsyncEventQueueImpl.java:98)
at
org.apache.geode.cache.asyncqueue.internal.SerialAsyncEventQueueImpl.start(SerialAsyncEventQueueImpl.java:64)
at
org.apache.geode.cache.asyncqueue.internal.AsyncEventQueueFactoryImpl.create(AsyncEventQueueFactoryImpl.java:184)
...

Thank you!


On Wed, Dec 10, 2025 at 3:57 PM Jinwoo Hwang via dev <[email protected]>
wrote:

> Hello Geode Dev Community,
>
> This is a reminder to review and provide feedback on the 2.0.0.RC2 release
> candidate, including the checks you performed. The voting deadline is 3PM
> PST on Saturday, December 13, 2025.
>
> We are voting on tag rel/v2.0.0.RC2. Relevant links are included in the
> original announcement.
>
> Thank you for your participation.
>
>
> Best regards,
>
> Jinwoo Hwang (he/him/his)
>
>
>
> SAS® Research and Development
>
> http://JinwooHwang.com<http://jinwoohwang.com/>
>
>
>
> From: Jinwoo Hwang <[email protected]>
> Date: Monday, December 8, 2025 at 10:59 PM
> To: [email protected] <[email protected]>
> Subject: [VOTE] Apache Geode 2.0.0.RC2
>
> Hello Geode Dev Community,
>
> Thank you to everyone who provided feedback on 2.0.0.RC1.
>
> This is a release candidate for Apache Geode version 2.0.0.RC2.
> Thanks to all the community members for their contributions to this
> release!
>
> Please do a review and give your feedback, including the checks you
> performed.
>
> Voting deadline:
> 3PM PST Sat, December 13 2025.
>
> Please note that we are voting upon the source tag:
> rel/v2.0.0.RC2
>
> Release notes:
>
> https://cwiki.apache.org/confluence/display/GEODE/Release+Notes#ReleaseNotes-2.0.0
>
> Source and binary distributions:
> https://dist.apache.org/repos/dist/dev/geode/2.0.0.RC2/
>
> Maven staging repo:
> https://repository.apache.org/content/repositories/orgapachegeode-1147
>
> GitHub:
> https://github.com/apache/geode/tree/rel/v2.0.0.RC2
> https://github.com/apache/geode-examples/tree/rel/v2.0.0.RC2
> https://github.com/apache/geode-native/tree/rel/v2.0.0.RC2
> https://github.com/apache/geode-benchmarks/tree/rel/v2.0.0.RC2
>
> Pipelines:
>
> https://concourse.apachegeode-ci.info/teams/main/pipelines/apache-support-2-0-main
>
> https://concourse.apachegeode-ci.info/teams/main/pipelines/apache-support-2-0-rc
>
> Geode's KEYS file containing PGP keys we use to sign the release:
> https://github.com/apache/geode/blob/develop/KEYS
>
> Command to run geode-examples:
> ./gradlew -PgeodeReleaseUrl=
> https://dist.apache.org/repos/dist/dev/geode/2.0.0.RC2
> -PgeodeRepositoryUrl=
> https://repository.apache.org/content/repositories/orgapachegeode-1147
> build runAll
>
>
> Best regards,
>
> Jinwoo Hwang (he/him/his)
>
>
>
> SAS® Research and Development
>
> http://JinwooHwang.com<http://jinwoohwang.com/>
>
>
>

Reply via email to