Skip to content
This repository has been archived by the owner on May 16, 2023. It is now read-only.

Commit

Permalink
filter future rollingStartIntervalNumbers (#1857)
Browse files Browse the repository at this point in the history
  • Loading branch information
hilmarf authored Jul 6, 2022
1 parent da79cb1 commit 0fed5d4
Showing 1 changed file with 9 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import app.coronawarn.server.common.persistence.domain.DiagnosisKey;
import app.coronawarn.server.common.persistence.domain.config.TrlDerivations;
import app.coronawarn.server.common.persistence.domain.validation.ValidRollingStartIntervalNumberValidator;
import app.coronawarn.server.common.persistence.service.DiagnosisKeyService;
import app.coronawarn.server.common.protocols.external.exposurenotification.TemporaryExposureKey;
import app.coronawarn.server.common.protocols.internal.SubmissionPayload;
Expand All @@ -10,6 +11,7 @@
import app.coronawarn.server.services.submission.config.SubmissionServiceConfig;
import app.coronawarn.server.services.submission.monitoring.SubmissionMonitor;
import app.coronawarn.server.services.submission.normalization.SubmissionKeyNormalizer;
import app.coronawarn.server.services.submission.validation.PrintableSubmissionPayload;
import app.coronawarn.server.services.submission.validation.ValidSubmissionOnBehalfPayload;
import app.coronawarn.server.services.submission.validation.ValidSubmissionPayload;
import app.coronawarn.server.services.submission.verification.EventTanVerifier;
Expand Down Expand Up @@ -60,6 +62,7 @@ public class SubmissionController {
private final SubmissionServiceConfig submissionServiceConfig;
private EventCheckinFacade eventCheckinFacade;
private final TrlDerivations trlDerivations;
private final ValidRollingStartIntervalNumberValidator rollingStartIntervalNumberValidator;

SubmissionController(DiagnosisKeyService diagnosisKeyService, TanVerifier tanVerifier,
EventTanVerifier eventTanVerifier, FakeDelayManager fakeDelayManager,
Expand All @@ -75,6 +78,7 @@ public class SubmissionController {
this.randomKeyPaddingMultiplier = submissionServiceConfig.getRandomKeyPaddingMultiplier();
this.eventCheckinFacade = eventCheckinFacade;
this.trlDerivations = submissionServiceConfig.getTrlDerivations();
rollingStartIntervalNumberValidator = new ValidRollingStartIntervalNumberValidator();
}

/**
Expand Down Expand Up @@ -184,11 +188,14 @@ private List<DiagnosisKey> extractValidDiagnosisKeysFromPayload(SubmissionPayloa
.build()
)
.filter(diagnosisKey -> diagnosisKey.isYoungerThanRetentionThreshold(retentionDays))
.filter(protoBufferKey -> rollingStartIntervalNumberValidator
.isValid(protoBufferKey.getRollingStartIntervalNumber(), null))
.collect(Collectors.toList());

if (protoBufferKeys.size() > diagnosisKeys.size()) {
logger.warn("Not persisting {} diagnosis key(s), as it is outdated beyond retention threshold.",
protoBufferKeys.size() - diagnosisKeys.size());
logger.warn("Not persisting {} diagnosis key(s), as it is outdated beyond retention threshold or the "
+ "RollingStartIntervalNumber is in the future. Payload: {}", protoBufferKeys.size() - diagnosisKeys.size(),
new PrintableSubmissionPayload(submissionPayload));
}
return diagnosisKeys;
}
Expand Down

0 comments on commit 0fed5d4

Please sign in to comment.