From 5eff26e40eeeca158ce1b12b662c7d98d8ec078f Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Sat, 1 Sep 2012 20:17:37 +0000 Subject: [PATCH] add minimum priority check --- .../util/CoDelPriorityBlockingQueue.java | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/router/java/src/net/i2p/router/util/CoDelPriorityBlockingQueue.java b/router/java/src/net/i2p/router/util/CoDelPriorityBlockingQueue.java index 372e44664f..0996228b1c 100644 --- a/router/java/src/net/i2p/router/util/CoDelPriorityBlockingQueue.java +++ b/router/java/src/net/i2p/router/util/CoDelPriorityBlockingQueue.java @@ -67,7 +67,8 @@ public class CoDelPriorityBlockingQueue<E extends CDPQEntry> extends PriorityBlo private final String STAT_DROP; private final String STAT_DELAY; private static final long[] RATES = {5*60*1000}; - private static final int[] PRIORITIES = {100, 200, 300, 400, 500}; + public static final int MIN_PRIORITY = 100; + private static final int[] PRIORITIES = {MIN_PRIORITY, 200, 300, 400, 500}; /** if priority is >= this, never drop */ public static final int DONT_DROP_PRIORITY = 1000; @@ -89,29 +90,25 @@ public class CoDelPriorityBlockingQueue<E extends CDPQEntry> extends PriorityBlo @Override public boolean add(E o) { - o.setSeqNum(_seqNum.incrementAndGet()); - o.setEnqueueTime(_context.clock().now()); + timestamp(o); return super.add(o); } @Override public boolean offer(E o) { - o.setSeqNum(_seqNum.incrementAndGet()); - o.setEnqueueTime(_context.clock().now()); + timestamp(o); return super.offer(o); } @Override public boolean offer(E o, long timeout, TimeUnit unit) { - o.setSeqNum(_seqNum.incrementAndGet()); - o.setEnqueueTime(_context.clock().now()); + timestamp(o); return super.offer(o, timeout, unit); } @Override public void put(E o) { - o.setSeqNum(_seqNum.incrementAndGet()); - o.setEnqueueTime(_context.clock().now()); + timestamp(o); super.put(o); } @@ -164,6 +161,14 @@ public class CoDelPriorityBlockingQueue<E extends CDPQEntry> extends PriorityBlo /////// private below here + private void timestamp(E o) { + o.setSeqNum(_seqNum.incrementAndGet()); + o.setEnqueueTime(_context.clock().now()); + if (o.getPriority() < MIN_PRIORITY && _log.shouldLog(Log.WARN)) + _log.warn(_name + " added item with low priority " + o.getPriority() + + ": " + o); + } + /** * Caller must synch on this * @param entry may be null -- GitLab