Spring Batch MultiResourceItemWriter - сбой перезапуска задания (файл недоступен для записи), если произошел сбой первого фрагмента последнего файла - PullRequest
0 голосов
/ 28 сентября 2018

Я разрабатываю приложение Spring Batch, которое записывает строки базы данных в файлы CSV.База данных огромна, поэтому мне нужно сгенерировать несколько выходных CSV-файлов, разбитых на части (outputfile.csv.1, outputfile.csv.2, outputfile.csv.3 .....)

Я проверяю все данныеслучаи, и я обнаружил проблему, когда я перезапустить неудавшуюся работу в этой ситуации.Когда в первом фрагменте нового многораздельного файла произошел сбой, этот новый файл не создается (я пробовал shouldDeleteIfEmpty = false, но файл не создается).

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

Пример:

ChunkSize = 50

ItemCountLimitPerResource = 100

Force Exception в элементе 325

----------------

Выполнение не выполненоЯ могу видеть в выходных данных сгенерированные файлы (outputfile.csv.1, outputfile.csv.2, outputfile.csv.3) с 300 первыми строками (6 блоков и 3 завершенных файла).

КогдаЯ перезапускаю задание, получаю исключение:

org.springframework.batch.item.ItemStreamException: файл недоступен для записи: [XXXX ... \ outputfile * .csv.4 *]

Похоже, что ожидает этот файл ( .csv.4 ), но он не был создан из-за ошибки в первом чанке (я пробовал mustDeleteIfEmpty = false, но файл не создан)

Просмотр хранилища базы данных Я могу проверить выполнение, и значение индекса ресурса равно 4

{"map": [{" entry ": [

{" string ":" FlatFileItemWriter.current.count "," long ": 700}, {" string ":" JdbcCursorItemReader.read.count "," int": 300}, *

{" string ":" MultiResourceItemWriter.resource.index "," int ": 4}, *

{" string ":" FlatFileItemWriter.written ","long": 50}, {"string": ["batch.taskletType", "org.springframework.batch.core.step.item.ChunkOrientedTasklet"]}, {"string": "MultiResourceItemWriter.resource.item.count"," int ": 0}, {" string ": [" batch.stepType "," org.springframework.batch.core.step.tasklet.TaskletStep "]}]}]}

Я пыталсянастройка флагов FlatFileItemWriter с различными значениями (AppendAllowed, ShouldDeleteIfEmpty, ShouldDeleteIfExists), но возникает та же проблема

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...