Spring Batch Integration - как прервать бесконечную рекурсию, сериализацию удаленного подчиненного шага, ответное сообщение? - PullRequest
0 голосов
/ 30 апреля 2019

При использовании Spring-Batch с Spring-Integration-Kafka, после успешного завершения удаленного шага генерируется сообщение для ответа на главный шаг.

Когда рабочая система пытается сериализовать сообщение,Сериализатор Джексона входит в бесконечную рекурсию между stepExecution и jobExecution.

В SO существует множество потоков, касающихся прерывания рекурсии в сериализации Джексона, но все они построены вокруг аннотирования классов по ошибке.Поскольку это сторонний библиотечный класс, я не могу просто аннотировать его.

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

worker-container-C-1 2019-04-30 13:47:08,957 ERROR o.s.k.l.LoggingErrorHandler - Error while processing: ConsumerRecord(topic = job.step, partition = 0, offset = 6, CreateTime = 1556649984722, serialized key size = 4, serialized value size = 78, headers = RecordHeaders(headers = [RecordHeader(key = sequenceNumber, value = [48]), RecordHeader(key = correlationId, value = [34, 49, 56, 53, 50, 58, 102, 115, 45, 115, 116, 101, 112, 48, 48, 48, 50, 46, 115, 108, 97, 118, 101, 34]), RecordHeader(key = sequenceSize, value = [49]), RecordHeader(key = spring_json_header_types, value = [123, 34, 115, 101, 113, 117, 101, 110, 99, 101, 78, 117, 109, 98, 101, 114, 34, 58, 34, 106, 97, 118, 97, 46, 108, 97, 110, 103, 46, 73, 110, 116, 101, 103, 101, 114, 34, 44, 34, 115, 101, 113, 117, 101, 110, 99, 101, 83, 105, 122, 101, 34, 58, 34, 106, 97, 118, 97, 46, 108, 97, 110, 103, 46, 73, 110, 116, 101, 103, 101, 114, 34, 44, 34, 99, 111, 114, 114, 101, 108, 97, 116, 105, 111, 110, 73, 100, 34, 58, 34, 106, 97, 118, 97, 46, 108, 97, 110, 103, 46, 83, 116, 114, 105, 110, 103, 34, 125])], isReadOnly = false), key = 0, value = StepExecutionRequest: [jobExecutionId=1852, stepExecutionId=21797, stepName=fs-step0002.slave])
org.springframework.messaging.MessageHandlingException: error occurred in message handler [org.springframework.integration.config.ServiceActivatorFactoryBean#1]; nested exception is org.apache.kafka.common.errors.SerializationException: Can't serialize data [StepExecution: id=21797, version=4, name=fm-step0002.master:innerStep9177463, status=COMPLETED, exitStatus=COMPLETED, readCount=1, filterCount=0, writeCount=1 readSkipCount=0, writeSkipCount=0, processSkipCount=0, commitCount=2, rollbackCount=0, exitDescription=] for topic [job.step.reply]
    at org.springframework.integration.support.utils.IntegrationUtils.wrapInHandlingExceptionIfNecessary(IntegrationUtils.java:189) ~[spring-integration-core-5.1.3.RELEASE.jar:5.1.3.RELEASE]
    at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:179) ~[spring-integration-core-5.1.3.RELEASE.jar:5.1.3.RELEASE]
    at org.springframework.integration.dispatcher.AbstractDispatcher.tryOptimizedDispatch(AbstractDispatcher.java:115) ~[spring-integration-core-5.1.3.RELEASE.jar:5.1.3.RELEASE]

Редактировать 1:

На обсуждение будет построено репро и подан билет JIRA.

...