Как заблокировать клиентский запрос Java Thin до завершения предварительной загрузки данных в кластер Ignite - PullRequest
0 голосов
/ 25 сентября 2019

Мы запускаем кластер воспламенения с 3 узлами, который предварительно загружает данные из сторонней базы данных (используя пользовательское хранилище кэша).когда мы пытаемся подключиться к кластеру с помощью тонкого клиента java и если запрос достигает кластера до завершения загрузки данных, мы получаем исключение неизвестной пары и некоторое нестабильное поведение.

Можно ли в любом случае заблокировать клиентский запрос (соединение через сокет TCP) до завершения загрузки данных?
Я пытался с разными событиями жизненного цикла (NODE_START_COMPLETED), но безуспешно.

Трассировка стека

Caused by: org.apache.ignite.binary.BinaryInvalidTypeException: Unknown pair [platformId=0, typeId=-845247802]
        at org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:707)
        at org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1757)
        at org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1716)
        at org.apache.ignite.internal.binary.BinaryObjectImpl.deserializeValue(BinaryObjectImpl.java:798)
        at org.apache.ignite.internal.binary.BinaryObjectImpl.value(BinaryObjectImpl.java:143)
        at org.apache.ignite.internal.processors.cache.CacheObjectUtils.unwrapBinary(CacheObjectUtils.java:177)
        at org.apache.ignite.internal.processors.cache.CacheObjectUtils.unwrapBinaryIfNeeded(CacheObjectUtils.java:67)
        at org.apache.ignite.internal.processors.cache.CacheObjectContext.unwrapBinaryIfNeeded(CacheObjectContext.java:125)
        at org.apache.ignite.internal.processors.cache.GridCacheContext.unwrapBinaryIfNeeded(GridCacheContext.java:1773)
        at org.apache.ignite.internal.processors.cache.GridCacheContext.unwrapBinaryIfNeeded(GridCacheContext.java:1761)
        at org.apache.ignite.internal.processors.cache.store.GridCacheStoreManagerAdapter.put(GridCacheStoreManagerAdapter.java:573)
        at org.apache.ignite.internal.processors.cache.store.GridCacheStoreManagerAdapter.putAll(GridCacheStoreManagerAdapter.java:627)
        at org.apache.ignite.internal.processors.cache.transactions.IgniteTxAdapter.batchStoreCommit(IgniteTxAdapter.java:1507)
        at org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter.userCommit(IgniteTxLocalAdapter.java:589)
        at org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.localFinish(GridNearTxLocal.java:3646)
        at org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxFinishFuture.doFinish(GridNearTxFinishFuture.java:475)
        ... 41 common frames omitted
Caused by: java.lang.ClassNotFoundException: Unknown pair [platformId=0, typeId=-845247802]
        at org.apache.ignite.internal.MarshallerContextImpl.getClassName(MarshallerContextImpl.java:394)
        at org.apache.ignite.internal.MarshallerContextImpl.getClass(MarshallerContextImpl.java:344)
        at org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:698)
        ... 56 common frames omitted

1 Ответ

0 голосов
/ 27 сентября 2019

В настоящее время нет способа запретить тонким клиентам подключаться к кластеру с помощью Ignite API.Я создал билет JIRA для этого улучшения: https://issues.apache.org/jira/browse/IGNITE-12237

Неизвестное исключение пары, похоже, не вызвано тем, что тонкие клиенты подключаются в неправильное время.Обычно это вызвано отсутствием каталога marshaller в рабочем пути.

...