Java 一致性:使用条目处理器从缓存中逐出密钥时出现问题
我正在尝试使用Java 一致性:使用条目处理器从缓存中逐出密钥时出现问题,java,oracle-coherence,Java,Oracle Coherence,我正在尝试使用executeprocessor退出缓存密钥,有人知道此错误的含义吗?当此代码使用Coherence 3.5时,我在Coherence 3.7中遇到此错误 错误: 读写备份映射的内部映射具有意外的收回禁止;自定义地图应接受并使用提供的审批人 public class EvictProcessor extends AbstractProcessor implements ExternalizableLite, PortableObject { static ValueExt
executeprocessor
退出缓存密钥,有人知道此错误的含义吗?当此代码使用Coherence 3.5
时,我在Coherence 3.7
中遇到此错误
错误:
读写备份映射的内部映射具有意外的收回禁止;自定义地图应接受并使用提供的审批人
public class EvictProcessor extends AbstractProcessor implements
ExternalizableLite, PortableObject {
static ValueExtractor s_extractorMap = new ReflectionExtractor("getMap");
static ValueExtractor s_extractorKey = new ReflectionExtractor("getBinaryKey");
public EvictProcessor() {
}
public Object process(com.tangosol.util.InvocableMap.Entry entry) {
if (entry.isPresent())
{
final ReadWriteBackingMap bm = (ReadWriteBackingMap) s_extractorMap.extract(entry);
final ConfigurableCacheMap local = (ConfigurableCacheMap) bm.getInternalCache();
local.evict(s_extractorKey.extract(entry));
}
return null
}
public void readExternal(PofReader pofreader) throws IOException {}
public void writeExternal(PofWriter pofwriter) throws IOException {}
}
然后我使用上面的executeprocessor
从缓存中逐出条目
cache.invoke(key,new EvictProcessor ());
当我将一致性升级到
3.7.1.16
时,上述错误消失,但逐出仍不起作用 一致性v3.7.1.16
中存在缺陷,使用BackingMap
逐出。升级到一致性v12时,此问题已得到修复。请参阅:。有一个关于executionapprover
修复错误的信息。也许您应该升级Coherence版本。@KrzysztofKosmatka当我升级到Coherence 3.7.1.16时,此错误消息消失,但手动逐出仍不起作用。条目的实际类别是什么?它是否有方法getMap
和getBinaryKey
?过程
方法是否无一例外地结束?我没有彻底搜索,但在任何常见的InvocableMap.Entry
实现中都没有看到getMap
方法。可能在3.5和3.7之间执行InvocableMap.Entry
已更改或getMap
方法已删除。我只是在这里猜测,但也许它会对您有所帮助。@KrzysztofKosmatka在升级到3.7.1.16之后,对于少数分布式缓存来说,逐出仍然不起作用。我看不到任何错误或警告。我很抱歉,我不能再帮你了。