From 0e00a548dcd671cd5a73038091d870d52dd13f7e Mon Sep 17 00:00:00 2001 From: Bjørn Christian Seime Date: Thu, 9 Aug 2018 12:54:24 +0200 Subject: Write identity document to temp file, then atomic move --- .../vespa/athenz/identityprovider/api/EntityBindingsMapper.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'vespa-athenz/src') diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/EntityBindingsMapper.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/EntityBindingsMapper.java index 3bfe492a125..641c3001795 100644 --- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/EntityBindingsMapper.java +++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/EntityBindingsMapper.java @@ -11,7 +11,10 @@ import com.yahoo.vespa.athenz.identityprovider.api.bindings.VespaUniqueInstanceI import java.io.IOException; import java.io.UncheckedIOException; +import java.nio.file.Files; import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardCopyOption; import java.util.Base64; import static com.yahoo.vespa.athenz.identityprovider.api.VespaUniqueInstanceId.fromDottedString; @@ -116,7 +119,9 @@ public class EntityBindingsMapper { public static void writeSignedIdentityDocumentToFile(Path file, SignedIdentityDocument document) { try { SignedIdentityDocumentEntity entity = EntityBindingsMapper.toSignedIdentityDocumentEntity(document); - mapper.writeValue(file.toFile(), entity); + Path tempFile = Paths.get(file.toAbsolutePath().toString() + ".tmp"); + mapper.writeValue(tempFile.toFile(), entity); + Files.move(tempFile, file, StandardCopyOption.ATOMIC_MOVE); } catch (IOException e) { throw new UncheckedIOException(e); } -- cgit v1.2.3