diff --git a/.gitignore b/.gitignore index 109efbe..671e79f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,10 @@ build/ .DS_STORE +.vscode/ .idea/ *.iml /nbcode/l10n/locale_ja/release/ /nbcode/l10n/locale_zh_CN/release/ /nbcode/l10n/locale_ja/nbproject/private/ /nbcode/l10n/locale_zh_CN/nbproject/private/ -telemetryConfig.json \ No newline at end of file +telemetryConfig.json diff --git a/nbcode/telemetry/src/org/netbeans/modules/nbcode/java/lsp/server/telemetry/SourceFeatureCache.java b/nbcode/telemetry/src/org/netbeans/modules/nbcode/java/lsp/server/telemetry/SourceFeatureCache.java index 31e392e..6b1c5b2 100644 --- a/nbcode/telemetry/src/org/netbeans/modules/nbcode/java/lsp/server/telemetry/SourceFeatureCache.java +++ b/nbcode/telemetry/src/org/netbeans/modules/nbcode/java/lsp/server/telemetry/SourceFeatureCache.java @@ -61,8 +61,7 @@ public boolean isPreviewEnabled(SourceInfo sourceInfo) { } private static class Singleton { - - private static final int CACHE_EXPIRY = Math.max(0, NbPreferences.forModule(JavaLangFeaturesTelemetryProvider.class).node(JavaLangFeaturesTelemetryProvider.PREFERENCES_NODE).getInt(JavaLangFeaturesTelemetryProvider.PREFERENCES_KEY_CACHE_EXPIRY, 3_600_000)); // 1 hour + private static final int CACHE_EXPIRY = Math.max(0, NbPreferences.forModule(JavaLangFeaturesTelemetryProvider.class).node(JavaLangFeaturesTelemetryProvider.PREFERENCES_NODE).getInt(JavaLangFeaturesTelemetryProvider.PREFERENCES_KEY_CACHE_EXPIRY, 12 * 3_600_000)); // 12 hours private static final ConcurrentHashMap cachedSourceFeatures = new ConcurrentHashMap<>(); } @@ -77,8 +76,12 @@ public static SourceFeatureCacheEntry get(String sourceName) { public static boolean add(String sourceName, Set features) { final Set newFeatures = Collections.unmodifiableSet(features); final SourceFeatureCacheEntry entry = getCachedSourceFeatures().compute(sourceName, - (name, cache) -> cache != null && cache.getFeaturesUsed().containsAll(newFeatures) ? cache - : new SourceFeatureCacheEntry(System.currentTimeMillis(), newFeatures, cache)); + (name, cache) -> { + if (cache != null && cache.getFeaturesUsed().containsAll(newFeatures)) return cache; + if (cache != null) features.addAll(cache.getFeaturesUsed()); + return new SourceFeatureCacheEntry(System.currentTimeMillis(), newFeatures, cache); + } + ); boolean added = newFeatures == entry.getFeaturesUsed(); if (!added) {