Ошибка CordApp Java Heap Space и javax.net.ssl.SSLException - PullRequest
0 голосов
/ 14 ноября 2018

Мы создали приложение с:

  • 2 узлами + 1 нотариусом
  • 2 веб-приложением (по одному на каждый узел)

Corda Version3,2

CordApp имеет:

  • первый поток, получающий на входе список объектов, используемых для создания списка состояний.Этот список будет выводом транзакции
  • список объектов (около 3000 объектов) разделен на списки размером 450 (из-за ошибки ActiveMQ Artemis для списков большего размера [java.lang].IllegalArgumentException: запись слишком велика для хранения])

  • после первого потока мы запускаем другой поток с аналогичной логикой.В этом случае у нас есть список StateAndRef (результаты запроса с RPCops), полученные в качестве входных данных в потоке и используемые в качестве выходных данных для транзакции.

  • либо в этом случае мы разбиваем список (около 3000 объектов) в подсписках из 450 элементов.

Случайно мы получили Ошибка пространства кучи Java и SslHandshakeCompletionEvent (javax.net.ssl.SSLException: истекло время ожидания рукопожатия) .Это кажется серьезной утечкой памяти.

Мы можем выполнить весь рабочий процесс только , используя параметры -Xmx10240m (10 ГБ) на нашей локальной машине.Наблюдая за ресурсом, кажется, что куча особенно растет во время транзакций.

В чем может быть причина этого сбоя?

Не возможно использовать Corda со списками такого размера?

1 Ответ

0 голосов
/ 14 ноября 2018

Решением было добавить переопределение toString и hashCode не только в классе Entity для States, но и в классе, содержащем эти Entities (один расширяет MappedSchema).Теперь узлы никогда не превышают 1,2 ГБ используемой памяти.

...