Я пытался использовать типизированный ключ записи Java для кэша Apache Ignite и получил следующую ошибку.
Кто-нибудь еще пробовал использовать типы записей и видел это?Означает ли это, что при использовании типов записей требуется специальная обработка маршалинга? Я использую Java 17.0.12 (версия openjdk «17.0.12» от 16 июля 2024 г.) и Gridgain ignite 8.8.39.
java.lang. UnsupportedOperationException: невозможно получить смещение поля в
классе записи: частный окончательный длинный
*...TestIgniteCache$TestKey.ttlInMillis at
jdk.unsupported/sun.misc.Unsafe.objectFieldOffset(Unknown Source) atorg.apache.ignite.internal.util.GridUnsafe.objectFieldOffset(GridUnsafe.java:1193)
at
org.apache.ignite.internal.binary.BinaryFieldAccessor$AbstractPrimitiveAccessor.(BinaryFieldAccessor.java: 223)
в
org.apache.ignite.internal.binary.BinaryFieldAccessor$LongPrimitiveAccessor.(BinaryFieldAccessor.java:387)
at
org.apache.ignite.internal.binary.BinaryFieldAccessor.create(BinaryFieldAccessor.java: 75)
в
org.apache.ignite.internal.binary.BinaryClassDescriptor.(BinaryClassDescriptor.java:368)
at
org.apache.ignite.internal.binary.BinaryClassDescriptor.(BinaryClassDescriptor.java:155)в
org.apache.ignite.internal.binary.BinaryContext.createDescriptorForClass(BinaryContext.java:648)
at
org.apache.ignite.internal.binary.BinaryContext.descriptorForClass(BinaryContext.java:606 )
в
org.apache.ignite.internal.binary.BinaryWriterExImpl.marshal0(BinaryWriterExImpl.java:181)
at
org.apache.ignite.internal.binary.BinaryWriterExImpl.marshal(BinaryWriterExImpl.java:164 )
в
org.apache.ignite.internal.binary.BinaryWriterExImpl.marshal(BinaryWriterExImpl.java:151)
at
org.apache.ignite.internal.binary.GridBinaryMarshaller.marshal(GridBinaryMarshaller.java:250 )
в
org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl.marshalToBinary(CacheObjectBinaryProcessorImpl.java:506)
at
org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl.toBinary(CacheObjectBinaryProcessorImpl.java:1360)
at
org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl.toCacheKeyObject(CacheObjectBinaryProcessorImpl.java:1137)
at
org.apache.ignite.internal.processors.cache.GridCacheContext.toCacheKeyObject(GridCacheContext.java:1841)
at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$12.apply(GridDhtAtomicCache.java:476)
at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$12.apply(GridDhtAtomicCache.java:474)
at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.asyncOp(GridDhtAtomicCache.java:766)
at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.getAsync(GridDhtAtomicCache.java:474)
at
org.apache.ignite.internal.processors.cache .GridCacheAdapter.get0(GridCacheAdapter.java:4376)
at
org.apache.ignite.internal.processors.cache.GridCacheAdapter.get(GridCacheAdapter.java:4357)
at
org.apache.ignite.internal.processors.cache. GridCacheAdapter.get(GridCacheAdapter.java:1432)
at
org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.get(IgniteCacheProxyImpl.java:1116)
at
org.apache.ignite.internal.processors.cache.GatewayProtectedCacheProxy.get(GatewayProtectedCacheProxy .java:637)
в ..**..cache.TestIgniteCache.get(TestIgniteCache.java:123)
Вот определение класса типизированного ключа записи:
public static record TestKey(K k, long ttlInMillis) {
// default is 5 minutes for now.
private static final long defaultTTLInMillis = 300000L;
/**
* @param k
* @param ttlInMillis
*
* A key with the specified TTL in Milliseconds
*/
public TestKey {
if (Objects.isNull(k)) {
throw new IllegalArgumentException("Key must not be null!");
}
if (0 >= ttlInMillis) {
throw new IllegalArgumentException("ttlInMillis must not be zero or negative!");
}
}
/**
* @param k
*
* A key that has the default TTL as returned by {@link TestKey#defaultTTLInMillis()}
*
*/
public TestKey (K k) {
this(k, defaultTTLInMillis);
}
/**
* @return the defaultttlinmillis
*/
public static final long defaultTTLInMillis() {
return defaultTTLInMillis;
}
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... typed-keys
Запустите сортировку ключей Java Record Typed ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1736530356
Anonymous
Я пытался использовать типизированный ключ записи Java для кэша Apache Ignite и получил следующую ошибку.
Кто-нибудь еще пробовал использовать типы записей и видел это?Означает ли это, что при использовании типов записей требуется специальная обработка маршалинга? Я использую Java 17.0.12 (версия openjdk «17.0.12» от 16 июля 2024 г.) и Gridgain ignite 8.8.39.
java.lang. UnsupportedOperationException: невозможно получить смещение поля в
классе записи: частный окончательный длинный
*.[b].[/b].TestIgniteCache$TestKey.ttlInMillis at
jdk.unsupported/sun.misc.Unsafe.objectFieldOffset(Unknown Source) atorg.apache.ignite.internal.util.GridUnsafe.objectFieldOffset(GridUnsafe.java:1193)
at
org.apache.ignite.internal.binary.BinaryFieldAccessor$AbstractPrimitiveAccessor.(BinaryFieldAccessor.java: 223)
в
org.apache.ignite.internal.binary.BinaryFieldAccessor$LongPrimitiveAccessor.(BinaryFieldAccessor.java:387)
at
org.apache.ignite.internal.binary.BinaryFieldAccessor.create(BinaryFieldAccessor.java: 75)
в
org.apache.ignite.internal.binary.BinaryClassDescriptor.(BinaryClassDescriptor.java:368)
at
org.apache.ignite.internal.binary.BinaryClassDescriptor.(BinaryClassDescriptor.java:155)в
org.apache.ignite.internal.binary.BinaryContext.createDescriptorForClass(BinaryContext.java:648)
at
org.apache.ignite.internal.binary.BinaryContext.descriptorForClass(BinaryContext.java:606 )
в
org.apache.ignite.internal.binary.BinaryWriterExImpl.marshal0(BinaryWriterExImpl.java:181)
at
org.apache.ignite.internal.binary.BinaryWriterExImpl.marshal(BinaryWriterExImpl.java:164 )
в
org.apache.ignite.internal.binary.BinaryWriterExImpl.marshal(BinaryWriterExImpl.java:151)
at
org.apache.ignite.internal.binary.GridBinaryMarshaller.marshal(GridBinaryMarshaller.java:250 )
в
org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl.marshalToBinary(CacheObjectBinaryProcessorImpl.java:506)
at
org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl.toBinary(CacheObjectBinaryProcessorImpl.java:1360)
at
org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl.toCacheKeyObject(CacheObjectBinaryProcessorImpl.java:1137)
at
org.apache.ignite.internal.processors.cache.GridCacheContext.toCacheKeyObject(GridCacheContext.java:1841)
at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$12.apply(GridDhtAtomicCache.java:476)
at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$12.apply(GridDhtAtomicCache.java:474)
at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.asyncOp(GridDhtAtomicCache.java:766)
at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.getAsync(GridDhtAtomicCache.java:474)
at
org.apache.ignite.internal.processors.cache .GridCacheAdapter.get0(GridCacheAdapter.java:4376)
at
org.apache.ignite.internal.processors.cache.GridCacheAdapter.get(GridCacheAdapter.java:4357)
at
org.apache.ignite.internal.processors.cache. GridCacheAdapter.get(GridCacheAdapter.java:1432)
at
org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.get(IgniteCacheProxyImpl.java:1116)
at
org.apache.ignite.internal.processors.cache.GatewayProtectedCacheProxy.get(GatewayProtectedCacheProxy .java:637)
в [b].[/b].**..cache.TestIgniteCache.get(TestIgniteCache.java:123)
Вот определение класса типизированного ключа записи:
public static record TestKey(K k, long ttlInMillis) {
// default is 5 minutes for now.
private static final long defaultTTLInMillis = 300000L;
/**
* @param k
* @param ttlInMillis
*
* A key with the specified TTL in Milliseconds
*/
public TestKey {
if (Objects.isNull(k)) {
throw new IllegalArgumentException("Key must not be null!");
}
if (0 >= ttlInMillis) {
throw new IllegalArgumentException("ttlInMillis must not be zero or negative!");
}
}
/**
* @param k
*
* A key that has the default TTL as returned by {@link TestKey#defaultTTLInMillis()}
*
*/
public TestKey (K k) {
this(k, defaultTTLInMillis);
}
/**
* @return the defaultttlinmillis
*/
public static final long defaultTTLInMillis() {
return defaultTTLInMillis;
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79343965/ignite-marshalling-of-java-record-typed-keys[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия