summaryrefslogtreecommitdiffstats
path: root/configserver
diff options
context:
space:
mode:
Diffstat (limited to 'configserver')
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java16
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/ConfigServerBootstrap.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/SuperModelManager.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandler.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/FileDistributionMaintainer.java4
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java37
6 files changed, 31 insertions, 32 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java b/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java
index e0629a2e5db..3c377508a69 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java
@@ -587,11 +587,11 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye
return orchestrator.getAllSuspendedApplications().contains(application);
}
- public HttpResponse filedistributionStatus(ApplicationId applicationId, Duration timeout) {
+ public HttpResponse fileDistributionStatus(ApplicationId applicationId, Duration timeout) {
return fileDistributionStatus.status(getApplication(applicationId), timeout);
}
- public List<String> deleteUnusedFiledistributionReferences(File fileReferencesPath,
+ public List<String> deleteUnusedFileDistributionReferences(File fileReferencesPath,
Duration keepFileReferencesDuration,
int numberToAlwaysKeep) {
log.log(Level.FINE, () -> "Keep unused file references for " + keepFileReferencesDuration);
@@ -632,8 +632,8 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye
return fileReferencesOnDisk
.stream()
.filter(fileReference -> ! fileReferencesInUse.contains(fileReference))
- .filter(fileReference -> isFileLastModifiedBefore(new File(fileReferencesPath, fileReference), instant))
- .sorted((a, b) -> lastModified(new File(fileReferencesPath, a)).isBefore(lastModified(new File(fileReferencesPath, b))) ? -1 : 1)
+ .filter(fileReference -> isLastFileAccessBefore(new File(fileReferencesPath, fileReference), instant))
+ .sorted((a, b) -> lastAccessed(new File(fileReferencesPath, a)).isBefore(lastAccessed(new File(fileReferencesPath, b))) ? -1 : 1)
.collect(Collectors.toList());
}
@@ -688,15 +688,15 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye
.collect(Collectors.toList());
}
- private boolean isFileLastModifiedBefore(File fileReference, Instant instant) {
- return lastModified(fileReference).isBefore(instant);
+ private boolean isLastFileAccessBefore(File fileReference, Instant instant) {
+ return lastAccessed(fileReference).isBefore(instant);
}
- private Instant lastModified(File fileReference) {
+ private Instant lastAccessed(File fileReference) {
BasicFileAttributes fileAttributes;
try {
fileAttributes = readAttributes(fileReference.toPath(), BasicFileAttributes.class);
- return fileAttributes.lastModifiedTime().toInstant();
+ return fileAttributes.lastAccessTime().toInstant();
} catch (IOException e) {
throw new UncheckedIOException(e);
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/ConfigServerBootstrap.java b/configserver/src/main/java/com/yahoo/vespa/config/server/ConfigServerBootstrap.java
index f9eb3c71316..57e49ef3e8d 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/ConfigServerBootstrap.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/ConfigServerBootstrap.java
@@ -211,7 +211,7 @@ public class ConfigServerBootstrap extends AbstractComponent implements Runnable
}
private void allowConfigRpcRequests(RpcServer rpcServer) {
- log.log(Level.INFO, "Allowing RPC config requests");
+ log.log(Level.FINE, "Allowing RPC config requests");
rpcServer.setUpGetConfigHandlers();
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/SuperModelManager.java b/configserver/src/main/java/com/yahoo/vespa/config/server/SuperModelManager.java
index e9be9c4e97f..c63ded1aea1 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/SuperModelManager.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/SuperModelManager.java
@@ -121,7 +121,7 @@ public class SuperModelManager implements SuperModelProvider {
public void markAsComplete() {
// Invoked on component graph bootstrap (even before ConfigServerBootstrap),
// there is no need to bump generation counter.
- logger.log(Level.INFO, "Super model is complete");
+ logger.log(Level.FINE, "Super model is complete");
SuperModel newSuperModel = getSuperModel().cloneAsComplete();
superModelConfigProvider = new SuperModelConfigProvider(newSuperModel, zone, flagSource);
listeners.forEach(listener -> listener.notifyOfCompleteness(newSuperModel));
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandler.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandler.java
index bdb48cc0160..e581a1edc21 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandler.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandler.java
@@ -136,7 +136,7 @@ public class ApplicationHandler extends HttpHandler {
}
private HttpResponse filedistributionStatus(ApplicationId applicationId, HttpRequest request) {
- return applicationRepository.filedistributionStatus(applicationId, getTimeoutFromRequest(request));
+ return applicationRepository.fileDistributionStatus(applicationId, getTimeoutFromRequest(request));
}
private HttpResponse logs(ApplicationId applicationId, HttpRequest request) {
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/FileDistributionMaintainer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/FileDistributionMaintainer.java
index 277e6acd6e6..f6aee416c9c 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/FileDistributionMaintainer.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/FileDistributionMaintainer.java
@@ -20,7 +20,7 @@ import java.time.Duration;
*/
public class FileDistributionMaintainer extends ConfigServerMaintainer {
- private static final int numberToAlwaysKeep = 10;
+ private static final int numberToAlwaysKeep = 20;
private final ApplicationRepository applicationRepository;
private final File fileReferencesDir;
@@ -39,7 +39,7 @@ public class FileDistributionMaintainer extends ConfigServerMaintainer {
@Override
protected double maintain() {
- applicationRepository.deleteUnusedFiledistributionReferences(fileReferencesDir, maxUnusedFileReferenceAge, numberToAlwaysKeep);
+ applicationRepository.deleteUnusedFileDistributionReferences(fileReferencesDir, maxUnusedFileReferenceAge, numberToAlwaysKeep);
return 1.0;
}
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java
index 133570cc109..ce926016bd4 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java
@@ -269,23 +269,23 @@ public class ApplicationRepositoryTest {
}
@Test
- public void deleteUnusedFileReferences() throws IOException {
+ public void deleteUnusedFileReferences() throws IOException, InterruptedException {
File fileReferencesDir = temporaryFolder.newFolder();
- Duration keepFileReferences = Duration.ofHours(48);
+ Duration keepFileReferencesDuration = Duration.ofSeconds(4);
- // Add file reference that is not in use and should be deleted (older than 'keepFileReferences')
+ // Add file reference that is not in use and should be deleted (older than 'keepFileReferencesDuration')
+ File filereferenceDirOldest = createFilereferenceOnDisk(new File(fileReferencesDir, "foo"));
+ //Thread.sleep(Duration.ofSeconds(1).toMillis());
- Instant now = Instant.now();
- File filereferenceDirOldest = createFilereferenceOnDisk(new File(fileReferencesDir, "foo"),
- now.minus(keepFileReferences.plus(Duration.ofHours(2))));
+ // Add file references that are not in use and could be deleted
+ IntStream.range(0, 3).forEach(i -> {
+ createFilereferenceOnDisk(new File(fileReferencesDir, "bar" + i));
+ try { Thread.sleep(Duration.ofSeconds(1).toMillis()); } catch (InterruptedException e) { /* ignore */ }
+ });
+ Thread.sleep(keepFileReferencesDuration.toMillis());
- // Add file references that are not in use and some of them should be deleted (all are older than 'keepFileReferences')
- IntStream.range(0, 6)
- .forEach(i -> createFilereferenceOnDisk(new File(fileReferencesDir, "bar" + i),
- now.minus(keepFileReferences.plus(Duration.ofHours(1).minus(Duration.ofMinutes(i))))));
-
- // Add file reference that is not in use, but should not be deleted (newer than 'keepFileReferences')
- File filereferenceDirNewest = createFilereferenceOnDisk(new File(fileReferencesDir, "baz"), now);
+ // Add file reference that is not in use, but should not be deleted (newer than 'keepFileReferencesDuration')
+ File filereferenceDirNewest = createFilereferenceOnDisk(new File(fileReferencesDir, "baz"));
applicationRepository = new ApplicationRepository.Builder()
.withTenantRepository(tenantRepository)
@@ -298,22 +298,21 @@ public class ApplicationRepositoryTest {
PrepareParams prepareParams = new PrepareParams.Builder().applicationId(applicationId()).ignoreValidationErrors(true).build();
deployApp(new File("src/test/apps/app"), prepareParams);
- List<String> toBeDeleted = applicationRepository.deleteUnusedFiledistributionReferences(fileReferencesDir,
- keepFileReferences,
- 5);
+ List<String> toBeDeleted = applicationRepository.deleteUnusedFileDistributionReferences(fileReferencesDir,
+ keepFileReferencesDuration,
+ 2);
Collections.sort(toBeDeleted);
assertEquals(List.of("bar0", "foo"), toBeDeleted);
- // bar0 and foo are the only ones that will be deleted (keeps 5 newest no matter how old they are)
+ // bar0 and foo are the only ones that will be deleted (keeps 2 newest no matter how old they are)
assertFalse(filereferenceDirOldest.exists());
assertFalse(new File(fileReferencesDir, "bar0").exists());
assertTrue(filereferenceDirNewest.exists());
}
- private File createFilereferenceOnDisk(File filereferenceDir, Instant lastModifiedTime) {
+ private File createFilereferenceOnDisk(File filereferenceDir) {
assertTrue(filereferenceDir.mkdir());
File bar = new File(filereferenceDir, "file");
IOUtils.writeFile(bar, Utf8.toBytes("test"));
- assertTrue(filereferenceDir.setLastModified(lastModifiedTime.toEpochMilli()));
return filereferenceDir;
}