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/> > > >
