Class SelectorGuard
- java.lang.Object
-
- com.biglybt.core.networkmanager.impl.tcp.SelectorGuard
-
public class SelectorGuard extends java.lang.Object
Temp class designed to help detect Selector anomalies and cleanly re-open if necessary. NOTE: As of JVM 1.4.2_03, after network connection disconnect/reconnect, usually-blocking select() and select(long) calls no longer block, and will instead return immediately. This can cause selector spinning and 100% cpu usage. See: http://forum.java.sun.com/thread.jsp?forum=4&thread=293213 http://developer.java.sun.com/developer/bugParade/bugs/4850373.html http://developer.java.sun.com/developer/bugParade/bugs/4881228.html Fixed in JVM 1.4.2_05+ and 1.5b2+ The workaround applied for the above is Thread.sleep() to avoid CPU hogging.
-
-
Field Summary
Fields Modifier and Type Field Description private long
beforeSelectTime
private int
consecutiveZeroSelects
private int
ignores
private boolean
marked
private static int
MAX_IGNORES
private long
select_op_time
private static int
SELECTOR_SPIN_THRESHOLD
private java.lang.String
type
-
Constructor Summary
Constructors Constructor Description SelectorGuard(java.lang.String _type)
Create a new SelectorGuard with the given failed count threshold.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.String
getType()
void
markPreSelectTime()
Run this method right before the select() operation to mark the start time.void
verifySelectorIntegrity(int num_keys_ready, long time_threshold)
Checks whether selector is still OK, and not spinning.
-
-
-
Field Detail
-
SELECTOR_SPIN_THRESHOLD
private static final int SELECTOR_SPIN_THRESHOLD
- See Also:
- Constant Field Values
-
MAX_IGNORES
private static final int MAX_IGNORES
- See Also:
- Constant Field Values
-
marked
private boolean marked
-
consecutiveZeroSelects
private int consecutiveZeroSelects
-
beforeSelectTime
private long beforeSelectTime
-
select_op_time
private long select_op_time
-
type
private final java.lang.String type
-
ignores
private int ignores
-
-
Method Detail
-
getType
public java.lang.String getType()
-
markPreSelectTime
public void markPreSelectTime()
Run this method right before the select() operation to mark the start time.
-
verifySelectorIntegrity
public void verifySelectorIntegrity(int num_keys_ready, long time_threshold)
Checks whether selector is still OK, and not spinning.
-
-