Skip to content

Commit 8831599

Browse files
committed
Store & compare last modified times correctly.
1 parent b956885 commit 8831599

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

rascal-lsp/src/main/java/org/rascalmpl/vscode/lsp/rascal/model/PathConfigs.java

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,16 @@
2828

2929
import java.io.BufferedReader;
3030
import java.io.IOException;
31+
import java.nio.file.attribute.FileTime;
3132
import java.time.Duration;
33+
import java.time.Instant;
3234
import java.util.HashSet;
3335
import java.util.List;
3436
import java.util.Map;
3537
import java.util.Map.Entry;
3638
import java.util.Set;
3739
import java.util.concurrent.ConcurrentHashMap;
3840
import java.util.concurrent.TimeUnit;
39-
import java.util.concurrent.atomic.AtomicLong;
4041
import java.util.regex.Pattern;
4142
import java.util.stream.Collectors;
4243

@@ -120,9 +121,15 @@ public void watchFile(ISourceLocation projectRoot, ISourceLocation sourceFile) t
120121
if (!isAlive() && !isInterrupted()) {
121122
start();
122123
}
123-
URIResolverRegistry.getInstance().watch(sourceFile, false, ignored ->
124-
changedRoots.put(projectRoot, System.nanoTime())
125-
);
124+
reg.watch(sourceFile, false, ignored -> {
125+
long lastModified = Long.MIN_VALUE;
126+
try {
127+
lastModified = reg.lastModified(sourceFile);
128+
} catch (IOException e) {
129+
logger.debug("Cannot get last modified time of {}", sourceFile);
130+
}
131+
changedRoots.put(projectRoot, lastModified);
132+
});
126133
}
127134

128135
private static final long UPDATE_DELAY = TimeUnit.SECONDS.toNanos(5);
@@ -138,7 +145,7 @@ public void run() {
138145
}
139146

140147
List<ISourceLocation> stabilizedRoots = changedRoots.entrySet().stream()
141-
.filter(e -> System.nanoTime() - e.getValue() >= UPDATE_DELAY)
148+
.filter(e -> FileTime.from(Instant.now()).to(TimeUnit.NANOSECONDS) - e.getValue() >= UPDATE_DELAY)
142149
.map(Entry::getKey)
143150
.collect(Collectors.toList());
144151

0 commit comments

Comments
 (0)