Получение ошибки, вызванной: java.lang.Исключение IllegalStateException: Не удается открыть уже открытый элемент чтения, сначала вызовите команду закрыть

#spring-batch

Вопрос:

2021-07-15 17:40:41.004 ОШИБКА 76282 — [ restartedMain] o.s.batch.core.step.AbstractStep : Обнаружена ошибка при выполнении случайных шагов в ETL-загрузках заданий

организация.каркасная работа.партия.товар.Исключение ItemStreamException: Не удалось инициализировать средство чтения в org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader.открыть(AbstractItemCountingItemStreamItemReader.java:153) ~[spring-пакет-инфраструктура-4.2.1.РЕЛИЗ.jar:4.2.1.РЕЛИЗ] в организации.springframework.batch.элемент.поддержка.CompositeItemStream.открыть(CompositeItemStream.java:103) ~[spring-пакет-инфраструктура-4.2.1.РЕЛИЗ.jar:4.2.1.РЕЛИЗ] в организации.springframework.batch.ядро.шаг.задание.TaskletStep.open(TaskletStep.java:311) ~[spring-batch-core-4.2.1.РЕЛИЗ.jar:4.2.1.РЕЛИЗ] в организации.springframework.пакет.ядро.шаг.AbstractStep.инструкции execute(AbstractStep.в Java:205) ~[весна-партия-ядро-4.2.1.- Релизе.баночка:4.2.1.Релиз] в орг.springframework.пакет.ядро.работа.SimpleStepHandler.handleStep(SimpleStepHandler.Ява:148) ~[весна-партия-ядро-4.2.1.- Релизе.баночка:4.2.1.Релиз] в орг.springframework.пакет.ядро.работа.AbstractJob.handleStep(AbstractJob.в Java:410) ~[весна-партия-ядро-4.2.1.- Релизе.баночка:4.2.1.Релиз] в орг.springframework.пакет.ядро.работа.SimpleJob.doExecute(SimpleJob.Ява:136) ~[весна-партия-ядро-4.2.1.- Релизе.баночка:4.2.1.Релиз] в орг.springframework.batch.core.задание.Абстрактная работа.выполнение(АбстрактНая работа.java:319) ~[spring-batch-core-4.2.1.ВЫПУСК.jar:4.2.1.ВЫПУСК] в организации.springframework.batch.core.запустите.поддержка.SimpleJobLauncher$1.запустите(SimpleJobLauncher.java:147) ~[spring-batch-core-4.2.1.РЕЛИЗ.jar:4.2.1.РЕЛИЗ] в org.springframework.core.задача.SyncTaskExecutor.выполнить(SyncTaskExecutor.java:50) ~[spring-core-5.2.3.RELEASE.jar:5.2.3.RELEASE] в org.springframework.batch.core.запуск.поддержка.SimpleJobLauncher.запуск(SimpleJobLauncher.java:140) ~[spring-batch-core-4.2.1.РЕЛИЗ.jar:4.2.1.РЕЛИЗ] на java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Собственный метод) ~[na:na] в java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na] в java.base/jdk.internal.reflect.Делегирование methodaccessorimpl.invoke(делегирование methodaccessorimpl.java:43) ~[na:na] в java.base/java.lang.reflect.Метод.вызов(Метод.java:566) ~[na:na] в org.springframework.aop.поддержка.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344) ~[spring-aop-5.2.3.РЕЛИЗ.jar:5.2.3.РЕЛИЗ] в организации.springframework.aop.каркас.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198) ~[spring-aop-5.2.3.RELEASE.jar:5.2.3.RELEASE] в org.springframework.aop.framework.Рефлексивный метод вызова.продолжайте(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.2.3.RELEASE.jar:5.2.3.RELEASE] в org.springframework.batch.core.конфигурация.аннотация.SimpleBatchConfiguration$passtruadvice.invoke(SimpleBatchConfiguration.java:127) ~[spring-batch-core-4.2.1.РЕЛИЗ.jar:4.2.1.РЕЛИЗ] в организации.springframework.aop.каркас.Рефлексивный метод вызова.продолжайте(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.3.RELEASE.jar:5.2.3.RELEASE] в org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212) ~[spring-aop-5.2.3.RELEASE.jar:5.2.3.RELEASE] в com.sun.proxy.$Proxy147.run(Неизвестный источник) ~[na:na] в org.springframework.загрузка.автоконфигурация.пакет.JobLauncherCommandLineRunner.выполнить(JobLauncherCommandLineRunner.java:192) ~[весенняя загрузка-автоконфигурация-2.2.3.ВЫПУСК.jar:2.2.3.ВЫПУСК] в организации.пружинная рамка.загрузка.автоматическая настройка.пакет.JobLauncherCommandLineRunner.executeLocalJobs(JobLauncherCommandLineRunner.java:166) ~[весенняя загрузка-автоконфигурация-2.2.3.ВЫПУСК.jar:2.2.3.ВЫПУСК] в org.springframework.загрузка.автоконфигурация.пакет.JobLauncherCommandLineRunner.Запуск jobfromproperties(JobLauncherCommandLineRunner.java:153) ~[весенняя загрузка-автоконфигурация-2.2.3.ВЫПУСК.jar:2.2.3.ВЫПУСК] в организации. springframework.загрузка.автоконфигурация.пакет.JobLauncherCommandLineRunner.выполнить(JobLauncherCommandLineRunner.java:148) ~[весенняя загрузка-автоконфигурация-2.2.3.ВЫПУСК.jar:2.2.3.ВЫПУСК] в организации.пружинная рама.ботинок.SpringApplication.callRunner(SpringApplication.java:784) ~[spring-boot-2.2.3.РЕЛИЗ.jar:2.2.3.РЕЛИЗ] в организации.springframework.boot.SpringApplication.Запуск вызовов(SpringApplication.java:768) ~[spring-загрузка-2.2.3.ВЫПУСК.jar:2.2.3.ВЫПУСК] в org.springframework.загрузка.SpringApplication.запустите(SpringApplication.java:322) ~[spring-boot-2.2.3.RELEASE.jar:2.2.3.RELEASE] в org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) ~[spring-boot-2.2.3.РЕЛИЗ.jar:2.2.3.РЕЛИЗ] в организации.пружинная рама.ботинок.SpringApplication.run(SpringApplication.java:1215) ~[spring-boot-2.2.3.RELEASE.jar:2.2.3.RELEASE] в com.athenahealth.pms.Application.main(Приложение.java:24) ~[main/:na] в java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Собственный метод) ~[na:na] в java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na] в java.base/jdk.internal.reflect.Делегирование methodaccessorimpl.invoke(делегирование methodaccessorimpl.java:43) ~[na:na] в java.base/java.lang.reflect.Метод.вызов(Метод.java:566) ~[na:na] в организации.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) ~[spring-boot-devtools-2.2.3.РЕЛИЗ.jar:2.2.3.РЕЛИЗ] Вызвано: java.lang.Исключение IllegalStateException: Не удается открыть уже открытый элемент чтения, сначала вызовите close в org.springframework.util.Утверждение.состояние(Утверждение.java:73) ~[spring-core-5.2.3.RELEASE.jar:5.2.3.RELEASE] в org.springframework.batch.item.база данных.AbstractPagingItemReader.doOpen(AbstractPagingItemReader.java:135) ~[весенняя пакетная инфраструктура-4.2.1.ВЫПУСК.jar:4.2.1.ВЫПУСК] в организации.пружинная конструкция.пакет.элемент.поддержка.AbstractItemCountingItemStreamItemReader.открыть(AbstractItemCountingItemStreamItemReader.java:150) ~[spring-пакет-инфраструктура-4.2.1.РЕЛИЗ.jar:4.2.1.РЕЛИЗ] … 36 пропущенных общих кадров

Вызвано: java.lang.Исключение IllegalStateException: Не удается открыть уже открытый элемент чтения, сначала вызовите команду закрыть

Ответ №1:

Это происходит потому, что spring-batch сама инициирует пакетную операцию при первой загрузке.Поэтому требуется добавить spring.batch.job.enabled=false в файл свойств.