summaryrefslogtreecommitdiffstats
path: root/jdisc_core
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2023-05-02 15:14:45 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2023-05-02 15:14:45 +0200
commitb34f0750f733bf7012b99db3cc5f82b154ea87a6 (patch)
treecb50f51c59c48f453996aa23ef00e2fa82f62458 /jdisc_core
parent920dbadd44872f34ed4bc51314cc9d09b0645233 (diff)
If you start lagging behind, always prefer timing out as that will be good for all.
Diffstat (limited to 'jdisc_core')
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/core/ScheduledQueue.java11
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/core/TimeoutManagerImpl.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/core/ScheduledQueueTestCase.java21
3 files changed, 5 insertions, 29 deletions
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/core/ScheduledQueue.java b/jdisc_core/src/main/java/com/yahoo/jdisc/core/ScheduledQueue.java
index 09483a7c7e5..881ccebdb93 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/core/ScheduledQueue.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/core/ScheduledQueue.java
@@ -12,7 +12,6 @@ class ScheduledQueue {
public static final int MILLIS_PER_SLOT = 100;
public static final int NUM_SLOTS = 512;
- public static final int NUM_SLOTS_UNDILATED = 3;
public static final int SLOT_MASK = 511; // bitmask to modulo NUM_SLOTS
public static final int ITER_SHIFT = 9; // number of bits to shift off SLOT_MASK
@@ -38,13 +37,11 @@ class ScheduledQueue {
int queueSize = queueSize() + out.size();
drainTo(NUM_SLOTS, 0, out);
for (int i = 0; currentTimeMillis >= nextTick && (queueSize > out.size()); i++, nextTick += MILLIS_PER_SLOT) {
- if (i < NUM_SLOTS_UNDILATED) {
- if (++currSlot >= NUM_SLOTS) {
- currSlot = 0;
- currIter++;
- }
- drainTo(currSlot, currIter, out);
+ if (++currSlot >= NUM_SLOTS) {
+ currSlot = 0;
+ currIter++;
}
+ drainTo(currSlot, currIter, out);
}
}
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/core/TimeoutManagerImpl.java b/jdisc_core/src/main/java/com/yahoo/jdisc/core/TimeoutManagerImpl.java
index 7a3898b2946..30c659f4f53 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/core/TimeoutManagerImpl.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/core/TimeoutManagerImpl.java
@@ -60,7 +60,7 @@ public class TimeoutManagerImpl {
return new ManagedRequestHandler(handler);
}
- synchronized int queueSize() { return scheduler.queueSize(); }
+ int queueSize() { return scheduler.queueSize(); }
Timer timer() {
return timer;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ScheduledQueueTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ScheduledQueueTestCase.java
index cd963caa8d2..9fcfd49d4ee 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ScheduledQueueTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ScheduledQueueTestCase.java
@@ -5,12 +5,10 @@ import org.junit.jupiter.api.Test;
import java.util.Arrays;
import java.util.LinkedList;
-import java.util.List;
import java.util.Queue;
import static com.yahoo.jdisc.core.ScheduledQueue.MILLIS_PER_SLOT;
import static com.yahoo.jdisc.core.ScheduledQueue.NUM_SLOTS;
-import static com.yahoo.jdisc.core.ScheduledQueue.NUM_SLOTS_UNDILATED;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.fail;
@@ -115,25 +113,6 @@ public class ScheduledQueueTestCase {
assertDrainTo(queue, 0, foo);
}
- @Test
- void requireThatDrainToPerformsTimeDilationWhenOverloaded() {
- ScheduledQueue queue = new ScheduledQueue(0);
- List<Object> payloads = new LinkedList<>();
- for (int i = 1; i <= NUM_SLOTS_UNDILATED + 1; ++i) {
- payloads.add(scheduleAt(queue, i * MILLIS_PER_SLOT));
- }
-
- Queue<Object> expired = new LinkedList<>();
- long currentTimeMillis = payloads.size() * MILLIS_PER_SLOT;
- queue.drainTo(currentTimeMillis, expired);
- assertEquals(NUM_SLOTS_UNDILATED, expired.size());
-
- expired = new LinkedList<>();
- currentTimeMillis += MILLIS_PER_SLOT;
- queue.drainTo(currentTimeMillis, expired);
- assertEquals(1, expired.size());
- }
-
private static Object scheduleAt(ScheduledQueue queue, long expireAtMillis) {
Object obj = new Object();
queue.newEntry(obj).scheduleAt(expireAtMillis);