要求。
从包含100K记录的文件中读取数据。
对于每条记录,先从IBM DB2数据库表中获取数据,再从NuoDB数据库表中获取数据。
最后将更新后的记录插入到NuoDB数据库表中。
设计方法:采用Chunk-oriented处理方式,从文件中读取1000条记录,然后进行处理并写入数据库。
问题:在处理了约75K条记录,运行了近5个小时后,批处理程序失败,出现以下错误。
Hibernate: select ... the SELECT query for DB2
Hibernate: select ... the SELECT query for NuoDB
2020-06-08 22:00:00.187 INFO [ ,,,] 32215 --- [ Thread-9] ConfigServletWebServerApplicationContext : Closing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@2a7f1f10: startup date [Mon Jun 08 17:22:51 BST 2020]; parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3972a855
2020-06-08 22:00:00.192 INFO [ ,,,] 32215 --- [ Thread-9] o.s.c.support.DefaultLifecycleProcessor : Stopping beans in phase 0
2020-06-08 22:00:00.193 INFO [ ,,,] 32215 --- [ Thread-9] o.s.i.endpoint.EventDrivenConsumer : Removing {logging-channel-adapter:_org.springframework.integration.errorLogger} as a subscriber to the 'errorChannel' channel
2020-06-08 22:00:00.193 INFO [ ,,,] 32215 --- [ Thread-9] o.s.i.channel.PublishSubscribeChannel : Channel ' -1.errorChannel' has 0 subscriber(s).
2020-06-08 22:00:00.193 INFO [ ,,,] 32215 --- [ Thread-9] o.s.i.endpoint.EventDrivenConsumer : stopped _org.springframework.integration.errorLogger
2020-06-08 22:00:00.195 INFO [ ,,,] 32215 --- [ Thread-9] o.s.s.c.ThreadPoolTaskScheduler : Shutting down ExecutorService 'taskScheduler'
2020-06-08 22:00:00.196 INFO [ ,,,] 32215 --- [ Thread-9] o.s.jmx.export.MBeanExporter : Unregistering JMX-exposed beans on shutdown
2020-06-08 22:00:00.203 INFO [ ,,,] 32215 --- [ Thread-9] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'
2020-06-08 22:00:00.203 INFO [ ,,,] 32215 --- [ Thread-9] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'
2020-06-08 22:00:00.203 INFO [ ,,,] 32215 --- [ Thread-9] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'
2020-06-08 22:00:00.203 INFO [ ,,,] 32215 --- [ Thread-9] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'
2020-06-08 22:00:00.203 INFO [ ,,,] 32215 --- [ Thread-9] com.zaxxer.hikari.HikariDataSource : HikariPool-3 - Shutdown initiated...
2020-06-08 22:00:00.210 INFO [ ,,,] 32215 --- [ Thread-9] com.zaxxer.hikari.HikariDataSource : HikariPool-3 - Shutdown completed.
2020-06-08 22:00:00.210 INFO [ ,,,] 32215 --- [ Thread-9] com.zaxxer.hikari.HikariDataSource : HikariPool-2 - Shutdown initiated...
2020-06-08 22:00:00.211 INFO [ ,,,] 32215 --- [ Thread-9] com.zaxxer.hikari.HikariDataSource : HikariPool-2 - Shutdown completed.
2020-06-08 22:00:00.212 INFO [ ,,,] 32215 --- [ Thread-9] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...
2020-06-08 22:00:00.214 INFO [ ,,,] 32215 --- [ Thread-9] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
这个问题到底是什么原因造成的呢,是不是像数据库不能定期触发SELECT查询100K次,持续4-6小时。
我在DEBUG模式下以日志级别重新运行应用程序,得到的错误是这样的。
com.ibm.db2.jcc.am.DisconnectNonTransientConnectionException: [jcc][t4][2030][11211][4.19.72] A communication error occurred during operations on the connection's underlying socket, socket input stream,
or socket output stream. Error location: Command timeout check. Message: Command timed out. ERRORCODE=-4499, SQLSTATE=08001
似乎你的数据库连接已经丢失。你需要重新启动你的作业实例。如果配置正确,你的作业应该从故障后的地方重新启动。