Почему задачи не уничтожаются после запуска в Spring Cloud Data Flow? - PullRequest
0 голосов
/ 08 февраля 2020

Я создал несколько проектов Spring Batch и развернул это задание с помощью Spring Cloud Data Flow (SCDF).
После запуска задачи (задания) в SCDF создается JVM для выполнения задачи (задания).
Однако, когда задача завершена, эта JVM не заканчивается. Это все еще существовало.
Когда я запускаю свою работу 20 раз, она объявляет, что

Cannot launch task A. The maximum concurrent task executions is at its limit [20]

И есть некоторая информация о моей работе, первый журнал заданий заканчивается:

HikariPool-1 - Shutting down...

Но после того, как я использовал свойство ниже для Spring Batch Project:

spring.cloud.task.singleInstanceEnabled=true

и использовал метод afterJob с помощью JobExecutionListenerSupport Журнал задачи (задания) заканчивается:

o.s.b.c.l.support.SimpleJobLauncher      : Job: [SimpleJob: [name=remindJob]] completed with the following parameters: [{run.id=3}] and the following status: [COMPLETED] in 7s636ms
o.s.integration.leader.DefaultCandidate  : DefaultCandidate{role=EngineProcess, id=126} leadership has been revoked: LockContext{role=Process, id=126, isLeader=false}

Это какие-то проблемы с моим Spring Batch Job?

И мой главный вопрос - это то, кто отвечает за полную остановку JVM (задачи)? Часть Spring Cloud Data Flow или Spring Batch и как?

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

1 Ответ

0 голосов
/ 11 февраля 2020

Я получил решения от github, которые устанавливают свойство spring.cloud.task.closecontext_enabled = true. Однако я хотел бы глубоко понять причину, по которой контекст не закрывается полностью без spring.cloud.task.closecontext_enabled. После установки этого свойства в true. В журнале проекта Spring Batch было показано ПРЕДУПРЕЖДЕНИЕ:

main] o.s.b.f.support.DisposableBeanAdapter : Destroy method 'close' on bean with name 'getStudent' threw an exception: org.springframework.batch.item.ItemStreamException: Error while closing item reader

И есть код ItemReader:

@Bean
public JdbcCursorItemReader<Student> getStudent() {
    JdbcCursorItemReader <Student> reader = new JdbcCursorItemReader<>();
    reader.setDataSource(dataSource);
    reader.setSql(QueryConstants.getStudent);   
    reader.setRowMapper(new BeanPropertyRowMapper<>(Student.class)); 
    return reader;  
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...