Запустите сортировку ключей Java Record TypedApache

Ответить
Anonymous
 Запустите сортировку ключей Java Record Typed

Сообщение Anonymous »

Я пытался использовать типизированный ключ записи 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Apache»