Merge branch 'RED-6543' into 'master'

RED-6543: Fixed file attribute scheduling race condition

Closes RED-6543

See merge request redactmanager/persistence-service!22
This commit is contained in:
Dominique Eifländer 2023-06-23 13:12:51 +02:00
commit e94b2b0e83
3 changed files with 12 additions and 1 deletions

View File

@ -258,8 +258,8 @@ public class FileStatusPersistenceService {
var fileAttributeEntities = convertFileAttributes(dossierId, file, fileAttributes);
fileAttributesRepository.saveAllAndFlush(fileAttributeEntities);
fileRepository.updateLastAttributeChangeDate(fileId, OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
file.setLastFileAttributeChange(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
}, () -> {
throw new NotFoundException("Unknown file=" + fileId);
});

View File

@ -124,8 +124,12 @@ public class FileAttributeTest extends AbstractPersistenceServerServiceTest {
assertThat(loadedConfigs.size()).isEqualTo(4);
assertThat(updated.getLabel()).isEqualTo("Test Attribute Update");
assertThat(fileClient.getFileStatus(dossier.getId(), file.getId()).getLastFileAttributeChange()).isNull();
fileAttributeClient.setFileAttributes(dossier.getId(), file.getId(), new FileAttributes(Map.of(updated.getId(), "Lorem Ipsum")));
assertThat(fileClient.getFileStatus(dossier.getId(), file.getId()).getLastFileAttributeChange()).isNotNull();
Map<String, String> fileAttributes = fileClient.getFileStatus(dossier.getId(), file.getId()).getFileAttributes().getAttributeIdToValue();
assertThat(fileAttributes.size()).isEqualTo(1);
assertThat(fileAttributes.entrySet().iterator().next().getValue()).isEqualTo("Lorem Ipsum");

View File

@ -1,5 +1,7 @@
package com.iqser.red.service.persistence.service.v1.api.shared.model;
import java.util.Arrays;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@ -16,5 +18,10 @@ public class FileAttribute {
private String placeholder;
private String value;
public boolean valueEqualsAnyOf(String... values){
return Arrays.asList(values).contains(value);
}
}