我需要在Apache Geode版本1.9.0中将lucene核心依赖项从版本6.6.2升级到8.2.0。在启用lucene索引的Geode中加载数据时,简单地删除旧的lucene核心依赖项并添加lucene 8.2.0依赖项会导致以下错误。
[warn 2019/09/21 14:54:57.395 GMT <Pooled Waiting Message Processor 9> tid=0x62] Task failed with exception
java.lang.AbstractMethodError: org.apache.lucene.store.Directory.getPendingDeletions()Ljava/util/Set;
at org.apache.lucene.index.IndexFileDeleter.<init>(IndexFileDeleter.java:212)
at org.apache.lucene.index.IndexWriter.<init>(IndexWriter.java:898)
at org.apache.geode.cache.lucene.internal.IndexRepositoryFactory.finishComputingRepository(IndexRepositoryFactory.java:123)
at org.apache.geode.cache.lucene.internal.IndexRepositoryFactory.computeIndexRepository(IndexRepositoryFactory.java:66)
at org.apache.geode.cache.lucene.internal.PartitionedRepositoryManager.computeRepository(PartitionedRepositoryManager.java:148)
at org.apache.geode.cache.lucene.internal.PartitionedRepositoryManager.lambda$computeRepository$1(PartitionedRepositoryManager.java:167)
at java.util.concurrent.ConcurrentHashMap.compute(ConcurrentHashMap.java:1853)
at org.apache.geode.cache.lucene.internal.PartitionedRepositoryManager.computeRepository(PartitionedRepositoryManager.java:159)
at org.apache.geode.cache.lucene.internal.LuceneBucketListener.lambda$afterPrimary$0(LuceneBucketListener.java:40)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.geode.distributed.internal.ClusterDistributionManager.runUntilShutdown(ClusterDistributionManager.java:960)
at org.apache.geode.distributed.internal.ClusterDistributionManager.doWaitingThread(ClusterDistributionManager.java:850)
at org.apache.geode.internal.logging.LoggingThreadFactory.lambda$newThread$0(LoggingThreadFactory.java:121)
at java.lang.Thread.run(Thread.java:748)
我能得到一些帮助吗?
2条答案
按热度按时间23c0lvtd1#
您正在手动将Geode内部使用的库的版本从
6.x
更改为8.x
,这是一个主要的升级,可能涉及到一些非向后兼容性更改,这就是您收到此异常的原因:手动更改您不控制的框架的库版本是非常糟糕的(通常不受支持)做法,特别是在没有首先测试这些更改的情况下。我建议通过GEODE JIRA site打开一个请求此改进的票证。
干杯干杯干杯
mqkwyuun2#
在一个主要的版本之后,最后的代码可能会工作,因为代码是使用旧的API编写的,你必须向代码维护人员提出同样的要求。