This is the codeAbility Sharing Platform! Learn more about the codeAbility Sharing Platform.

Skip to content
Snippets Groups Projects
Commit 400fbc8a authored by Michael Breu's avatar Michael Breu :speech_balloon:
Browse files

Draft: Resolve "Sharing Plattform stürzt jeden Tag um 10 Uhr ab,"

parent ea704510
Branches
2 merge requests!248Planing April Release,!244Resolve "Sharing Plattform stürzt jeden Tag um 10 Uhr ab,"
......@@ -55,6 +55,7 @@ org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=warning
org.eclipse.jdt.core.compiler.problem.nullReference=warning
org.eclipse.jdt.core.compiler.problem.nullSpecViolation=warning
org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=ignore
org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=enabled
......
......@@ -213,7 +213,16 @@ networks:
frontend:
name: sharing_frontend
driver: bridge
ipam:
driver: default
config:
- subnet: 172.22.0.0/16
backend:
name: sharing_backend
driver: bridge
ipam:
driver: default
config:
- subnet: 172.21.0.0/16
internal: false
......@@ -3,6 +3,7 @@ package at.ac.uibk.gitsearch.repository.jpa;
import at.ac.uibk.gitsearch.domain.PersistentAuditEvent;
import java.time.Instant;
import java.util.List;
import java.util.stream.Stream;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
......@@ -18,4 +19,6 @@ public interface PersistenceAuditEventRepository extends JpaRepository<Persisten
Page<PersistentAuditEvent> findAllByAuditEventDateBetween(Instant fromDate, Instant toDate, Pageable pageable);
List<PersistentAuditEvent> findByAuditEventDateBefore(Instant before);
Stream<PersistentAuditEvent> streamByAuditEventDateBefore(Instant before);
}
......@@ -45,15 +45,16 @@ public class AuditEventService {
/**
* Old audit events should be automatically deleted after 30 days.
*
* This is scheduled to get fired at 12:00 (am).
* This is scheduled to get fired at 11:00 (pm) UTC.
*/
@Scheduled(cron = "0 0 12 * * ?")
@Scheduled(cron = "0 0 23 * * ?")
public void removeOldAuditEvents() {
persistenceAuditEventRepository
.findByAuditEventDateBefore(Instant.now().minus(jHipsterProperties.getAuditEvents().getRetentionPeriod(), ChronoUnit.DAYS))
.streamByAuditEventDateBefore(Instant.now().minus(jHipsterProperties.getAuditEvents().getRetentionPeriod(), ChronoUnit.DAYS))
.forEach(auditEvent -> {
log.debug("Deleting audit data {}", auditEvent);
persistenceAuditEventRepository.delete(auditEvent);
persistenceAuditEventRepository.flush();
});
}
......
......@@ -7,8 +7,12 @@ import at.ac.uibk.gitsearch.domain.PersistentAuditEvent;
import at.ac.uibk.gitsearch.repository.jpa.PersistenceAuditEventRepository;
import java.time.Instant;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.Timeout;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.transaction.annotation.Transactional;
......@@ -30,7 +34,7 @@ public class AuditEventServiceIT {
@Autowired
private JHipsterProperties jHipsterProperties;
private PersistentAuditEvent auditEventOld;
private List<PersistentAuditEvent> auditEventsOld;
private PersistentAuditEvent auditEventWithinRetention;
......@@ -38,11 +42,18 @@ public class AuditEventServiceIT {
@BeforeEach
public void init() {
auditEventOld = new PersistentAuditEvent();
auditEventOld.setAuditEventDate(Instant.now().minus(jHipsterProperties.getAuditEvents().getRetentionPeriod() + 1, ChronoUnit.DAYS));
auditEventOld.setPrincipal("test-user-old");
auditEventOld.setAuditEventType("test-type");
auditEventsOld = new ArrayList<>();
for (int i = 1; i <= 1000; i++) {
PersistentAuditEvent auditEventOld = new PersistentAuditEvent();
auditEventOld.setAuditEventDate(
Instant.now().minus(jHipsterProperties.getAuditEvents().getRetentionPeriod() + i, ChronoUnit.DAYS)
);
auditEventOld.setPrincipal("test-user-old");
auditEventOld.setAuditEventType("test-type");
auditEventOld.getData().put("someDate", "someValue" + i);
auditEventsOld.add(auditEventOld);
}
auditEventWithinRetention = new PersistentAuditEvent();
auditEventWithinRetention.setAuditEventDate(
Instant.now().minus(jHipsterProperties.getAuditEvents().getRetentionPeriod() - 1, ChronoUnit.DAYS)
......@@ -57,10 +68,11 @@ public class AuditEventServiceIT {
}
@Test
@Timeout(value = 5, unit = TimeUnit.MINUTES)
@Transactional
public void verifyOldAuditEventsAreDeleted() {
persistenceAuditEventRepository.deleteAll();
persistenceAuditEventRepository.save(auditEventOld);
auditEventsOld.forEach(auditEventOld -> persistenceAuditEventRepository.save(auditEventOld));
persistenceAuditEventRepository.save(auditEventWithinRetention);
persistenceAuditEventRepository.save(auditEventNew);
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment