ben-manes commented on code in PR #4551:
URL: https://github.com/apache/accumulo/pull/4551#discussion_r1597510045


##########
server/tserver/src/main/java/org/apache/accumulo/tserver/ScanServer.java:
##########
@@ -246,9 +246,30 @@ public ScanServer(ScanServerOpts opts, String[] args) {
         LOG.warn(
             "Tablet metadata caching less than one minute, may cause excessive 
scans on metadata table.");
       }
-      tabletMetadataCache =
-          Caffeine.newBuilder().expireAfterWrite(cacheExpiration, 
TimeUnit.MILLISECONDS)
-              
.scheduler(Scheduler.systemScheduler()).recordStats().build(tabletMetadataLoader);
+
+      // Get the cache refresh percentage property
+      // Value must be less than 100% as 100 or over would effectively disable 
it
+      double cacheRefreshPercentage =
+          
getConfiguration().getFraction(Property.SSERV_CACHED_TABLET_METADATA_REFRESH_PERCENT);
+      Preconditions.checkArgument(cacheRefreshPercentage < cacheExpiration,
+          "Tablet metadata cache refresh percentage is '%s' but must be less 
than 1",
+          cacheRefreshPercentage);
+
+      var builder = Caffeine.newBuilder().expireAfterWrite(cacheExpiration, 
TimeUnit.MILLISECONDS)

Review Comment:
   yes, that would work, though you don't need a dedicated thread to poll. If 
you lock within the asyncReload method then you can detect if the request is 
the start of a new batch and schedule a task to run at the end of the time 
window. Then lock, accumulate the work, unlock, submit it for processing, and 
complete the pending futures. The lock hold times are a few nanoseconds to 
coordinate and you can defer to a processing thread pool to allow for parallel 
batches if helpful (e.g. if a batch size limit).



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to