После обновления до Spring Boot 3.4.3 и, следовательно, до Spring Pactor 3.5.5, я начал получать ошибку при запуске задания. Ранее я использовал пружинную партию 2.6.4, и ошибок не было.
@Configuration
@RequiredArgsConstructor
@EnableBatchProcessing
public class DeleteJobConfig {
private final JobRepository jobRepository;
private final Repository Repository;
private final PlatformTransactionManager platformTransactionManager;
private final ApplicationProperties applicationProperties;
@Bean
public Job deleteJob() {
return new JobBuilder("deleteJob", jobRepository)
.incrementer(new RunIdIncrementer())
.preventRestart()
.start(deleteStep())
.build();
}
@Bean
public Step deleteStep() {
return new StepBuilder("deleteStep", jobRepository)
.chunk(applicationProperties.getBatch().getDeleteJob().getChunkSize(), platformTransactionManager)
.reader(deleteReader())
.writer(deleteWriter())
.build();
}
@Bean
@StepScope
public ItemReader deleteReader() {
...
}
@Bean
public ItemWriter deleteWriter() {
...
}
}
< /code>
Служба запуска: < /p>
@Service
@Slf4j
@RequiredArgsConstructor
public class ArchiverService {
private final JobLauncher jobLauncher;
private final Job deleteJob;
@Override
@Scheduled(
cron = "${app.scheduler.cron.deleting-time}",
zone = "${app.scheduler.zone-moscow}"
)
@SneakyThrows
public void deleteExpiredNotNews() {
log.info("Starting deleteExpiredNotNews");
JobParameters params = new JobParametersBuilder()
.addString("runId", UUID.randomUUID().toString())
.toJobParameters();
jobLauncher.run(deleteJob, params);
log.info("Finished deleteExpiredNotNews");
}
}
< /code>
Stacktrace: < /p>
org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction
at org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:466) ~[spring-orm-6.2.3.jar:6.2.3]
at org.springframework.transaction.support.AbstractPlatformTransactionManager.startTransaction(AbstractPlatformTransactionManager.java:532) ~[spring-tx-6.2.3.jar:6.2.3]
at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:405) ~[spring-tx-6.2.3.jar:6.2.3]
at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:639) ~[spring-tx-6.2.3.jar:6.2.3]
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:374) ~[spring-tx-6.2.3.jar:6.2.3]
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) ~[spring-tx-6.2.3.jar:6.2.3]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) ~[spring-aop-6.2.3.jar:6.2.3]
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:223) ~[spring-aop-6.2.3.jar:6.2.3]
at jdk.proxy2/jdk.proxy2.$Proxy283.getLastJobExecution(Unknown Source) ~[?:?]
at org.springframework.batch.core.launch.support.TaskExecutorJobLauncher.run(TaskExecutorJobLauncher.java:109) ~[spring-batch-core-5.2.1.jar:5.2.1]
at com.my.sales.plan.scheduler.impl.ArchiverService.deleteExpiredNotNews(ArchiverService.java:56) ~[classes/:?]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
at org.springframework.scheduling.support.ScheduledMethodRunnable.runInternal(ScheduledMethodRunnable.java:130) ~[spring-context-6.2.3.jar:6.2.3]
at org.springframework.scheduling.support.ScheduledMethodRunnable.lambda$run$2(ScheduledMethodRunnable.java:124) ~[spring-context-6.2.3.jar:6.2.3]
at io.micrometer.observation.Observation.observe(Observation.java:498) ~[micrometer-observation-1.14.4.jar:1.14.4]
at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:124) ~[spring-context-6.2.3.jar:6.2.3]
at org.springframework.scheduling.config.Task$OutcomeTrackingRunnable.run(Task.java:85) ~[spring-context-6.2.3.jar:6.2.3]
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) [spring-context-6.2.3.jar:6.2.3]
at org.springframework.scheduling.concurrent.ReschedulingRunnable.run(ReschedulingRunnable.java:96) [spring-context-6.2.3.jar:6.2.3]
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) [?:?]
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) [?:?]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) [?:?]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [?:?]
at java.base/java.lang.Thread.run(Thread.java:833) [?:?]
Caused by: org.postgresql.util.PSQLException: Cannot change transaction isolation level in the middle of a transaction.
at org.postgresql.jdbc.PgConnection.setTransactionIsolation(PgConnection.java:1075) ~[postgresql-42.7.5.jar:42.7.5]
at com.zaxxer.hikari.pool.ProxyConnection.setTransactionIsolation(ProxyConnection.java:421) ~[HikariCP-5.1.0.jar:?]
at com.zaxxer.hikari.pool.HikariProxyConnection.setTransactionIsolation(HikariProxyConnection.java) ~[HikariCP-5.1.0.jar:?]
at org.springframework.jdbc.datasource.DataSourceUtils.prepareConnectionForTransaction(DataSourceUtils.java:216) ~[spring-jdbc-6.2.3.jar:6.2.3]
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.beginTransaction(HibernateJpaDialect.java:165) ~[spring-orm-6.2.3.jar:6.2.3]
at org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:420) ~[spring-orm-6.2.3.jar:6.2.3]
... 27 more
Я также попытался удалить запланированное выполнение и запустить его через регулярный контроллер отдыха, но ошибка сохраняется.
После обновления до Spring Boot 3.4.3 и, следовательно, до Spring Pactor 3.5.5, я начал получать ошибку при запуске задания. Ранее я использовал пружинную партию 2.6.4, и ошибок не было.[code]@Configuration @RequiredArgsConstructor @EnableBatchProcessing public class DeleteJobConfig {
private final JobRepository jobRepository; private final Repository Repository; private final PlatformTransactionManager platformTransactionManager; private final ApplicationProperties applicationProperties;
@Bean public Job deleteJob() { return new JobBuilder("deleteJob", jobRepository) .incrementer(new RunIdIncrementer()) .preventRestart() .start(deleteStep()) .build(); }
@Bean public Step deleteStep() { return new StepBuilder("deleteStep", jobRepository) .chunk(applicationProperties.getBatch().getDeleteJob().getChunkSize(), platformTransactionManager) .reader(deleteReader()) .writer(deleteWriter()) .build(); }
@Bean @StepScope public ItemReader deleteReader() { ... }
@Bean public ItemWriter deleteWriter() { ... } } < /code> Служба запуска: < /p> @Service @Slf4j @RequiredArgsConstructor public class ArchiverService {
private final JobLauncher jobLauncher; private final Job deleteJob;
@Override @Scheduled( cron = "${app.scheduler.cron.deleting-time}", zone = "${app.scheduler.zone-moscow}" ) @SneakyThrows public void deleteExpiredNotNews() { log.info("Starting deleteExpiredNotNews");
JobParameters params = new JobParametersBuilder() .addString("runId", UUID.randomUUID().toString()) .toJobParameters();
jobLauncher.run(deleteJob, params);
log.info("Finished deleteExpiredNotNews"); } } < /code> Stacktrace: < /p> org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction at org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:466) ~[spring-orm-6.2.3.jar:6.2.3] at org.springframework.transaction.support.AbstractPlatformTransactionManager.startTransaction(AbstractPlatformTransactionManager.java:532) ~[spring-tx-6.2.3.jar:6.2.3] at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:405) ~[spring-tx-6.2.3.jar:6.2.3] at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:639) ~[spring-tx-6.2.3.jar:6.2.3] at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:374) ~[spring-tx-6.2.3.jar:6.2.3] at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) ~[spring-tx-6.2.3.jar:6.2.3] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) ~[spring-aop-6.2.3.jar:6.2.3] at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:223) ~[spring-aop-6.2.3.jar:6.2.3] at jdk.proxy2/jdk.proxy2.$Proxy283.getLastJobExecution(Unknown Source) ~[?:?] at org.springframework.batch.core.launch.support.TaskExecutorJobLauncher.run(TaskExecutorJobLauncher.java:109) ~[spring-batch-core-5.2.1.jar:5.2.1] at com.my.sales.plan.scheduler.impl.ArchiverService.deleteExpiredNotNews(ArchiverService.java:56) ~[classes/:?] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[?:?] at org.springframework.scheduling.support.ScheduledMethodRunnable.runInternal(ScheduledMethodRunnable.java:130) ~[spring-context-6.2.3.jar:6.2.3] at org.springframework.scheduling.support.ScheduledMethodRunnable.lambda$run$2(ScheduledMethodRunnable.java:124) ~[spring-context-6.2.3.jar:6.2.3] at io.micrometer.observation.Observation.observe(Observation.java:498) ~[micrometer-observation-1.14.4.jar:1.14.4] at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:124) ~[spring-context-6.2.3.jar:6.2.3] at org.springframework.scheduling.config.Task$OutcomeTrackingRunnable.run(Task.java:85) ~[spring-context-6.2.3.jar:6.2.3] at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) [spring-context-6.2.3.jar:6.2.3] at org.springframework.scheduling.concurrent.ReschedulingRunnable.run(ReschedulingRunnable.java:96) [spring-context-6.2.3.jar:6.2.3] at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) [?:?] at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?] at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) [?:?] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) [?:?] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [?:?] at java.base/java.lang.Thread.run(Thread.java:833) [?:?] Caused by: org.postgresql.util.PSQLException: Cannot change transaction isolation level in the middle of a transaction. at org.postgresql.jdbc.PgConnection.setTransactionIsolation(PgConnection.java:1075) ~[postgresql-42.7.5.jar:42.7.5] at com.zaxxer.hikari.pool.ProxyConnection.setTransactionIsolation(ProxyConnection.java:421) ~[HikariCP-5.1.0.jar:?] at com.zaxxer.hikari.pool.HikariProxyConnection.setTransactionIsolation(HikariProxyConnection.java) ~[HikariCP-5.1.0.jar:?] at org.springframework.jdbc.datasource.DataSourceUtils.prepareConnectionForTransaction(DataSourceUtils.java:216) ~[spring-jdbc-6.2.3.jar:6.2.3] at org.springframework.orm.jpa.vendor.HibernateJpaDialect.beginTransaction(HibernateJpaDialect.java:165) ~[spring-orm-6.2.3.jar:6.2.3] at org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:420) ~[spring-orm-6.2.3.jar:6.2.3] ... 27 more [/code] Я также попытался удалить запланированное выполнение и запустить его через регулярный контроллер отдыха, но ошибка сохраняется.
После обновления до Spring Boot 3.4.3 и, следовательно, до Spring Pactor 3.5.5, я начал получать ошибку при запуске задания. Ранее я использовал пружинную партию 2.6.4, и ошибок не было. @Configuration
@RequiredArgsConstructor...
В приложении Oracle Retail Xstore есть таблицы, связанные с налогом, такими как TAME_TAX_LOC, TAME_GROUP, TAME_GROUP_RULE и т. Д. Проблема, я изменил этот флаг для правила группы, добавив элемент в транзакцию, никаких изменений в записи базы данных...
При использовании пула соединений Microsoft SQL Server при повторном использовании соединения все данные сеанса сбрасываются (например, удаляются временные таблицы). Внутренне это делается с помощью специальной процедуры sp_reset_connection. Этот...