diff --git a/pom.xml b/pom.xml index 78b86db..627e6b0 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ app.coronawarn.testresult cwa-testresult-server - 1.4.2-SNAPSHOT + 1.4.3-SNAPSHOT jar cwa-testresult-server diff --git a/src/main/java/app/coronawarn/testresult/TestResultApplication.java b/src/main/java/app/coronawarn/testresult/TestResultApplication.java index eebd63f..56ed53d 100644 --- a/src/main/java/app/coronawarn/testresult/TestResultApplication.java +++ b/src/main/java/app/coronawarn/testresult/TestResultApplication.java @@ -22,6 +22,7 @@ package app.coronawarn.testresult; import lombok.extern.slf4j.Slf4j; +import net.javacrumbs.shedlock.spring.annotation.EnableSchedulerLock; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.data.jpa.repository.config.EnableJpaAuditing; @@ -30,6 +31,7 @@ @Slf4j @EnableScheduling +@EnableSchedulerLock(defaultLockAtMostFor = "PT30S") @EnableJpaAuditing @EnableWebSecurity @SpringBootApplication diff --git a/src/main/java/app/coronawarn/testresult/config/ShedLockConfig.java b/src/main/java/app/coronawarn/testresult/config/ShedLockConfig.java new file mode 100644 index 0000000..ff7c987 --- /dev/null +++ b/src/main/java/app/coronawarn/testresult/config/ShedLockConfig.java @@ -0,0 +1,54 @@ +/* + * Corona-Warn-App / cwa-testresult-server + * + * (C) 2020, T-Systems International GmbH + * + * Deutsche Telekom AG and all other contributors / + * copyright owners license this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this + * file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package app.coronawarn.testresult.config; + +import static net.javacrumbs.shedlock.provider.jdbctemplate.JdbcTemplateLockProvider.Configuration.builder; + +import javax.sql.DataSource; +import lombok.RequiredArgsConstructor; +import net.javacrumbs.shedlock.core.LockProvider; +import net.javacrumbs.shedlock.provider.jdbctemplate.JdbcTemplateLockProvider; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.jdbc.core.JdbcTemplate; + +@Configuration +@RequiredArgsConstructor +public class ShedLockConfig { + + private final DataSource dataSource; + + /** + * Creates a LockProvider for ShedLock. + * + * @return LockProvider + */ + @Bean + public LockProvider lockProvider() { + return new JdbcTemplateLockProvider(builder() + .withTableName("shedlock") + .withJdbcTemplate(new JdbcTemplate(dataSource)) + .usingDbTime() + .build() + ); + } +}