java - Apache Ignite 二进制类型失效

标签 java caching ignite

我创建了名为“SomeType”和字段的二进制类型:

f1:string
f2:string

并基于此类型进行缓存(通过 CacheConfiguration.setQueryEntities)。

现在我想将 f1 从字符串更改为整数。但我不想更改类型的名称。

所以当我尝试

ignite.destroyCache(cacheName)

然后我创建新的缓存(具有相同的名称和二进制类型),我在填充缓存时遇到异常:

org.apache.ignite.binary.BinaryObjectException: Wrong value has been set [typeName=SomeType, fieldName=f1, fieldType=String, assignedValueType=int]

据我了解 http://apache-ignite-users.70518.x6.nabble.com/Ignite-client-reads-old-metadata-even-after-cache-is-destroyed-and-recreated-td5800.html这是预期的行为。

但是如何在不创建新元数据的情况下刷新我的二进制元数据?

最佳答案

是的,这是预期的行为。首先,marshaller 在 Ignite 中是全局的,元数据也是如此,因此销毁缓存不会影响这一点。其次,二进制格式允许动态更改架构,但更改必须兼容。也就是说,您可以更改和/或删除字段,但不能更改它们的类型,因为在这种情况下,使用旧模式的客户端将无法反序列化对象。

关于java - Apache Ignite 二进制类型失效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39697393/

相关文章:

java - 使用NetBeans从Java项目制作可执行文件

java - 查找java应用程序的运行时和复杂性

asp.net - ConfigurationManager.AppSettings 缓存

css - Woocommerce 产品页面空白?

caching - 由同一应用程序的多个实例共享 redis 实例

java - Apache Ignite BinaryObject 膨胀

Java 自定义 JFrame

java - 当 SnackBar 出现在 CoordinatorLayout 中时向上移动 View

java - 在2.0.0版本中启动Ignite服务器后出现此错误

java - Apache Ignite 中的内存指标