From 5e58f0a0ebfcf523fa1bd7cc74e3808140c75261 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Mon, 20 Feb 2012 12:33:57 -0500 Subject: [PATCH] Workaround 1 sec resolution of File.lastModified on Linux (issue-55) --- src/com/gitblit/ConfigUserService.java | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-) diff --git a/src/com/gitblit/ConfigUserService.java b/src/com/gitblit/ConfigUserService.java index 681efd5..8f47f7a 100644 --- a/src/com/gitblit/ConfigUserService.java +++ b/src/com/gitblit/ConfigUserService.java @@ -82,6 +82,8 @@ private final Map<String, TeamModel> teams = new ConcurrentHashMap<String, TeamModel>(); private volatile long lastModified; + + private volatile boolean forceReload; public ConfigUserService(File realmFile) { this.realmFile = realmFile; @@ -711,6 +713,9 @@ } config.save(); + // manually set the forceReload flag because not all JVMs support real + // millisecond resolution of lastModified. (issue-55) + forceReload = true; // If the write is successful, delete the current file and rename // the temporary copy to the original filename. @@ -735,7 +740,8 @@ * Reads the realm file and rebuilds the in-memory lookup tables. */ protected synchronized void read() { - if (realmFile.exists() && (realmFile.lastModified() > lastModified)) { + if (realmFile.exists() && (forceReload || (realmFile.lastModified() != lastModified))) { + forceReload = false; lastModified = realmFile.lastModified(); users.clear(); cookies.clear(); -- Gitblit v1.9.1