FileBasedConfig: ensure correct snapshot if no file

When no config file exists, use FileSnapshot.MISSING_FILE.

Bug: 451508
Change-Id: I8a09cb756a8a4746189da5b3514dfcf81d10b3b1
Signed-off-by: Thomas Wolf <twolf@apache.org>
This commit is contained in:
Thomas Wolf 2023-10-08 21:53:06 +02:00
parent 621685d3ca
commit cb46ee3544
1 changed files with 1 additions and 3 deletions

View File

@ -117,13 +117,11 @@ boolean exists() {
@Override
public void load() throws IOException, ConfigInvalidException {
try {
FileSnapshot[] lastSnapshot = { null };
Boolean wasRead = FileUtils.readWithRetries(getFile(), f -> {
final FileSnapshot oldSnapshot = snapshot;
final FileSnapshot newSnapshot;
// don't use config in this snapshot to avoid endless recursion
newSnapshot = FileSnapshot.saveNoConfig(f);
lastSnapshot[0] = newSnapshot;
final byte[] in = IO.readFully(f);
final ObjectId newHash = hash(in);
if (hash.equals(newHash)) {
@ -149,7 +147,7 @@ public void load() throws IOException, ConfigInvalidException {
});
if (wasRead == null) {
clear();
snapshot = lastSnapshot[0];
snapshot = FileSnapshot.MISSING_FILE;
}
exists.set(wasRead != null);
} catch (IOException e) {