diff options
5 files changed, 14 insertions, 13 deletions
diff --git a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/RpcConfigSourceClient.java b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/RpcConfigSourceClient.java index 9fa0a515abc..5ca387b6122 100644 --- a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/RpcConfigSourceClient.java +++ b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/RpcConfigSourceClient.java @@ -68,7 +68,7 @@ class RpcConfigSourceClient implements ConfigSourceClient, Runnable { this.memoryCache = new MemoryCache(); this.delayedResponses = new DelayedResponses(); checkConfigSources(); - nextConfigFuture = nextConfigScheduler.scheduleAtFixedRate(this, 0, 10*1000/SystemTimer.detectHz(), MILLISECONDS); + nextConfigFuture = nextConfigScheduler.scheduleAtFixedRate(this, 0, SystemTimer.adjustTimeoutByDetectedHz(10), MILLISECONDS); this.requesters = new JrtConfigRequesters(); DelayedResponseHandler command = new DelayedResponseHandler(delayedResponses, memoryCache, responseHandler); this.delayedResponsesFuture = delayedResponsesScheduler.scheduleAtFixedRate(command, 5, 1, SECONDS); diff --git a/messagebus/src/main/java/com/yahoo/messagebus/MessageBus.java b/messagebus/src/main/java/com/yahoo/messagebus/MessageBus.java index d7f488346ff..c47fe88dc71 100644 --- a/messagebus/src/main/java/com/yahoo/messagebus/MessageBus.java +++ b/messagebus/src/main/java/com/yahoo/messagebus/MessageBus.java @@ -88,7 +88,7 @@ public class MessageBus implements ConfigHandler, NetworkOwner, MessageHandler, } private void sendBlockedMessages() { - int timeout = 10*1000/SystemTimer.detectHz(); + int timeout = SystemTimer.adjustTimeoutByDetectedHz(10); while (! destroyed.get()) { for (SendBlockedMessages sender : blockedSenders.keySet()) { if (!sender.trySend()) { diff --git a/messagebus/src/main/java/com/yahoo/messagebus/Messenger.java b/messagebus/src/main/java/com/yahoo/messagebus/Messenger.java index 478cb7554ee..4f36cb3b328 100755 --- a/messagebus/src/main/java/com/yahoo/messagebus/Messenger.java +++ b/messagebus/src/main/java/com/yahoo/messagebus/Messenger.java @@ -149,7 +149,7 @@ public class Messenger implements Runnable { @Override public void run() { - int timeoutMS = 100*1000/SystemTimer.detectHz(); + int timeoutMS = SystemTimer.adjustTimeoutByDetectedHz(100); while (true) { Task task = null; synchronized (this) { diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java index 4d7c2f1cc14..220c61a3442 100644 --- a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java +++ b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java @@ -6,6 +6,7 @@ import com.fasterxml.jackson.core.JsonGenerator; import com.google.inject.Inject; import com.yahoo.cloud.config.ClusterListConfig; import com.yahoo.concurrent.DaemonThreadFactory; +import com.yahoo.concurrent.SystemTimer; import com.yahoo.container.core.HandlerMetricContextUtil; import com.yahoo.container.core.documentapi.VespaDocumentAccess; import com.yahoo.container.jdisc.ContentChannelOutputStream; @@ -20,7 +21,6 @@ import com.yahoo.document.FixedBucketSpaces; import com.yahoo.document.TestAndSetCondition; import com.yahoo.document.config.DocumentmanagerConfig; import com.yahoo.document.fieldset.AllFields; -import com.yahoo.document.fieldset.DocumentOnly; import com.yahoo.document.fieldset.DocIdOnly; import com.yahoo.document.idstring.IdIdString; import com.yahoo.document.json.DocumentOperationType; @@ -212,14 +212,11 @@ public class DocumentV1ApiHandler extends AbstractRequestHandler { this.asyncSession = access.createAsyncSession(new AsyncParameters()); this.clusters = parseClusters(clusterListConfig, bucketSpacesConfig); this.operations = new ConcurrentLinkedDeque<>(); - this.dispatcher.scheduleWithFixedDelay(this::dispatchEnqueued, - executorConfig.resendDelayMillis(), - executorConfig.resendDelayMillis(), - MILLISECONDS); - this.visitDispatcher.scheduleWithFixedDelay(this::dispatchVisitEnqueued, - executorConfig.resendDelayMillis(), - executorConfig.resendDelayMillis(), - MILLISECONDS); + int resendDelayMS = SystemTimer.adjustTimeoutByDetectedHz(executorConfig.resendDelayMillis()); + + //TODO Here it would be better do have dedicated threads with different wait depending on blocked or empty. + this.dispatcher.scheduleWithFixedDelay(this::dispatchEnqueued, resendDelayMS, resendDelayMS, MILLISECONDS); + this.visitDispatcher.scheduleWithFixedDelay(this::dispatchVisitEnqueued, resendDelayMS, resendDelayMS, MILLISECONDS); } // ------------------------------------------------ Requests ------------------------------------------------- diff --git a/vespajlib/src/main/java/com/yahoo/concurrent/SystemTimer.java b/vespajlib/src/main/java/com/yahoo/concurrent/SystemTimer.java index ecaae5e6387..38e93db30b6 100644 --- a/vespajlib/src/main/java/com/yahoo/concurrent/SystemTimer.java +++ b/vespajlib/src/main/java/com/yahoo/concurrent/SystemTimer.java @@ -32,8 +32,12 @@ public enum SystemTimer implements Timer { return hz; } + public static int adjustTimeoutByDetectedHz(int timeoutMS) { + return (timeoutMS * 1000)/ detectHz(); + } + SystemTimer() { - int napTime = 1000 / detectHz(); + int napTime = adjustTimeoutByDetectedHz(1); millis = TimeUnit.NANOSECONDS.toMillis(System.nanoTime()); Thread thread = new Thread() { |