dcapwell commented on code in PR #28:
URL: https://github.com/apache/cassandra-accord/pull/28#discussion_r1089587525


##########
accord-core/src/test/java/accord/impl/basic/DelayedExecutorService.java:
##########
@@ -0,0 +1,80 @@
+package accord.impl.basic;
+
+import org.apache.cassandra.concurrent.FutureTask;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Random;
+import java.util.concurrent.AbstractExecutorService;
+import java.util.concurrent.Callable;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+
+public class DelayedExecutorService extends AbstractExecutorService
+{
+    private static final int THREAD_SCHEDULING_OVERHEAD_MILLIS = 5;
+
+    private final PendingQueue pending;
+    private final Random random;
+
+    public DelayedExecutorService(PendingQueue pending, Random random)
+    {
+        this.pending = pending;
+        this.random = random;
+    }
+
+    @Override
+    protected <T> Task<T> newTaskFor(Runnable runnable, T value) {
+        return newTaskFor(Executors.callable(runnable, value));
+    }
+
+    @Override
+    protected <T> Task<T> newTaskFor(Callable<T> callable) {
+        return new Task<>(callable);
+    }
+
+    private Task<?> newTaskFor(Runnable command) {
+        return command instanceof Task ? (Task<?>) command : 
newTaskFor(command, null);
+    }
+
+    @Override
+    public void execute(Runnable command) {
+        Task<?> task = newTaskFor(command);
+        int jitterMillis = THREAD_SCHEDULING_OVERHEAD_MILLIS + 
random.nextInt(1000);

Review Comment:
   pushed change
   
   ```
   this.jitterInNano = new SegmentedIntRange(
                   new IntRange(random, microToNanos(0), microToNanos(50)),
                   new IntRange(random, microToNanos(50), msToNanos(5)),
                   // this is different from Apache Cassandra Simulator as this 
is computed differently for each executor
                   // rather than being a global config
                   new Decision.FixedChance(random, new IntRange(random, 1, 
10).getInt() / 100f)
           );
   ```
   
   I tried zipf to bias to higher values in the range, but math3's version 
added a lot more cost, so went with simple uniform.



-- 
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]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to