Package com.tangosol.net
Class GuardSupport
- java.lang.Object
-
- com.tangosol.util.Base
-
- com.tangosol.net.GuardSupport
-
public class GuardSupport extends Base
A concrete implementation of Guardian/Guardable interactions. GuardSupport is used by a Guardian to manage its responsibilities.- Since:
- Coherence 3.5
- Author:
- rhl
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected class
GuardSupport.Context
Base implementation for GuardContext's used by GuardSupport.-
Nested classes/interfaces inherited from class com.tangosol.util.Base
Base.LoggingWriter
-
-
Field Summary
Fields Modifier and Type Field Description protected static long
GUARDIAN_EARLY_THRESHOLD
The threshold before which than which a guardian considers itself early in checking its guardables.protected static long
GUARDIAN_LATE_THRESHOLD
The threshold past which a guardian considers itself late in checking its guardables.protected static long
GUARDIAN_LOG_INTERVAL
The minimum interval at which the Guardian should log thread dumps.static long
GUARDIAN_MAX_CHECK_INTERVAL
The maximum interval at which the Guardian thread should call check() to verify its guardables.protected GuardSupport.Context[]
m_aGuardContext
Array of GuardContexts for the registered Guardables.protected int
m_cGuardable
The number of registered Guardables.protected Guardian
m_guardian
The Guardian that is managing this GuardSupport.protected long
m_ldtNextCheck
The next time at which the Guardables should be checked.protected static ThreadLocal
m_tlContext
ThreadLocal containing the GuardContext associated with the current thread.protected static AtomicLong
s_atomicLogTime
Atomic counter containing the last log time stamp.
-
Constructor Summary
Constructors Constructor Description GuardSupport(Guardian guardian)
Construct a GuardSupport for the specified Guardian.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description Guardian.GuardContext
add(Guardable guardable, long cMillis, float flPctRecover)
Add the specified guardable to the set of Guardables managed by this manager, subject to the specified service parameters.long
check()
Check the registered Guardable objects for timeout, taking appropriate action and calculate the timestamp when the next check should be performed.int
getGuardableCount()
Return the number of Guardables that are registered with this GuardSupport.protected GuardSupport.Context[]
getGuardContexts()
Return the array of GuardContext objects for the Guardables managed by this GuardSupport.protected Guardian
getGuardian()
Return the Guardian that manages this GuardSupport.long
getNextCheckTime()
Return the next time at which the Guardables should be checked.static Guardian.GuardContext
getThreadContext()
Obtain the GuardContext associated with the current thread.static String
getThreadDump()
Get the full thread dump.static void
heartbeat()
Issue a heartbeat on the GuardContext associated with the current thread.static void
heartbeat(long cMillis)
Issue a heartbeat of the specified duration on the GuardContext associated with the current thread.protected GuardSupport.Context
instantiateContext(Guardable guardable, long cMillis, float flPctRecover)
static void
logStackTraces()
Collect stack traces and synchronization information for all running threads and write them to the error log.void
release()
Release the Guardables managed by this GuardSupport.void
remove(Guardable guardable)
Remove the specified Guardable from the set of Guardables managed by this manager.static void
reset()
Issue a reset on the GuardContext associated with the current thread.protected void
setGuardableCount(int cGuardable)
Set the number of Guardables that are registered with this GuardSupport.protected void
setGuardContexts(GuardSupport.Context[] aGuardContext)
Set the array of GuardContext objects for the Guardables that are managed by this GuardSupport.protected void
setNextCheckTime(long ldtNextCheck)
Set the next time at which the Guardables should be checked.static void
setThreadContext(Guardian.GuardContext context)
Associate the specified GuardContext with the current thread.-
Methods inherited from class com.tangosol.util.Base
azzert, azzert, azzert, azzertFailed, breakLines, breakLines, capitalize, checkNotEmpty, checkNotNull, checkRange, computeSafeWaitTime, decimalValue, dup, dup, ensureBigDecimal, ensureClassLoader, ensureRuntimeException, ensureRuntimeException, equals, equalsDeep, err, err, err, err, err, escape, formatDateTime, getCallerStackFrame, getCommonMonitor, getCommonMonitor, getCommonMonitor, getContextClassLoader, getContextClassLoader, getDeepMessage, getErr, getLastSafeTimeMillis, getLog, getMaxDecDigits, getMaxHexDigits, getOriginalException, getOut, getProcessRandom, getRandom, getRandomBinary, getRandomBinary, getRandomString, getSafeTimeMillis, getStackFrame, getStackFrames, getStackTrace, getStackTrace, getStackTrace, getThreadFactory, getTimeZone, getUpTimeMillis, hashCode, hexValue, indentString, indentString, isDecimal, isHex, isLogEcho, isOctal, log, log, log, log, log, makeInteger, makeLong, makeThread, mergeArray, mergeBooleanArray, mergeByteArray, mergeCharArray, mergeDoubleArray, mergeFloatArray, mergeIntArray, mergeLongArray, mod, mod, octalValue, out, out, out, out, out, pad, parseBandwidth, parseBandwidth, parseDelimitedString, parseHex, parseHex, parseMemorySize, parseMemorySize, parsePercentage, parseTime, parseTime, parseTimeNanos, parseTimeNanos, printStackTrace, randomize, randomize, randomize, randomize, read, read, read, read, read, read, read, replace, setErr, setLog, setLogEcho, setOut, sleep, toBandwidthString, toBandwidthString, toCharEscape, toCrc, toCrc, toCrc, toCrc, toCrc, toDecString, toDelimitedString, toDelimitedString, toDelimitedString, toDelimitedString, toHex, toHex, toHexDump, toHexEscape, toHexEscape, toHexEscape, toHexEscape, toHexString, toMemorySizeString, toMemorySizeString, toQuotedCharEscape, toQuotedStringEscape, toSqlString, toString, toString, toStringEscape, toUnicodeEscape, trace, trace, trace, trace, trace, trace, trace, trace, trace, truncateString, truncateString, wait
-
-
-
-
Field Detail
-
GUARDIAN_MAX_CHECK_INTERVAL
public static final long GUARDIAN_MAX_CHECK_INTERVAL
The maximum interval at which the Guardian thread should call check() to verify its guardables.- See Also:
- Constant Field Values
-
GUARDIAN_LATE_THRESHOLD
protected static final long GUARDIAN_LATE_THRESHOLD
The threshold past which a guardian considers itself late in checking its guardables.- See Also:
- Constant Field Values
-
GUARDIAN_EARLY_THRESHOLD
protected static final long GUARDIAN_EARLY_THRESHOLD
The threshold before which than which a guardian considers itself early in checking its guardables.- See Also:
- Constant Field Values
-
GUARDIAN_LOG_INTERVAL
protected static final long GUARDIAN_LOG_INTERVAL
The minimum interval at which the Guardian should log thread dumps.- See Also:
- Constant Field Values
-
m_aGuardContext
protected GuardSupport.Context[] m_aGuardContext
Array of GuardContexts for the registered Guardables. May contain nulls.
-
m_cGuardable
protected int m_cGuardable
The number of registered Guardables.
-
m_guardian
protected Guardian m_guardian
The Guardian that is managing this GuardSupport.
-
m_ldtNextCheck
protected long m_ldtNextCheck
The next time at which the Guardables should be checked.
-
m_tlContext
protected static ThreadLocal m_tlContext
ThreadLocal containing the GuardContext associated with the current thread.
-
s_atomicLogTime
protected static AtomicLong s_atomicLogTime
Atomic counter containing the last log time stamp.
-
-
Constructor Detail
-
GuardSupport
public GuardSupport(Guardian guardian)
Construct a GuardSupport for the specified Guardian.- Parameters:
guardian
- the guardian managing this GuardSupport
-
-
Method Detail
-
getGuardContexts
protected GuardSupport.Context[] getGuardContexts()
Return the array of GuardContext objects for the Guardables managed by this GuardSupport.- Returns:
- the array of managed GuardContext objects
-
setGuardContexts
protected void setGuardContexts(GuardSupport.Context[] aGuardContext)
Set the array of GuardContext objects for the Guardables that are managed by this GuardSupport.- Parameters:
aGuardContext
- the array of managed GuardContext objects
-
getGuardian
protected Guardian getGuardian()
Return the Guardian that manages this GuardSupport.- Returns:
- the Guardian that manages this GuardSupport
-
getNextCheckTime
public long getNextCheckTime()
Return the next time at which the Guardables should be checked.- Returns:
- the next time at which the Guardables should be checked
-
setNextCheckTime
protected void setNextCheckTime(long ldtNextCheck)
Set the next time at which the Guardables should be checked.- Parameters:
ldtNextCheck
- the next time at which the Guardables should be checked
-
add
public Guardian.GuardContext add(Guardable guardable, long cMillis, float flPctRecover)
Add the specified guardable to the set of Guardables managed by this manager, subject to the specified service parameters. If the specified guardable is already guarded by this manager, adjust the service parameters.- Parameters:
guardable
- the Guardable object to be managedcMillis
- the timeout for the specified GuardableflPctRecover
- the percentage of the timeout after which to attempt recovery of the Guardable; 0 < flPctRecover <= 1.0- Returns:
- the GuardContext for the specified Guardable
-
remove
public void remove(Guardable guardable)
Remove the specified Guardable from the set of Guardables managed by this manager.- Parameters:
guardable
- the guardable to remove
-
getGuardableCount
public int getGuardableCount()
Return the number of Guardables that are registered with this GuardSupport.- Returns:
- the number of registered Guardable objects
-
setGuardableCount
protected void setGuardableCount(int cGuardable)
Set the number of Guardables that are registered with this GuardSupport.- Parameters:
cGuardable
- the number of registered Guardable objects
-
check
public long check()
Check the registered Guardable objects for timeout, taking appropriate action and calculate the timestamp when the next check should be performed. The next check time can later be retrieved by thegetNextCheckTime()
method.- Returns:
- the number of milliseconds past the time when the guardables should have been checked, or 0 if the check was performed on time
-
release
public void release()
Release the Guardables managed by this GuardSupport. Releasing a Guardable causes it to no longer be guarded.
-
instantiateContext
protected GuardSupport.Context instantiateContext(Guardable guardable, long cMillis, float flPctRecover)
- Parameters:
guardable
- the Guardable object to be managedcMillis
- the timeout for the specified GuardableflPctRecover
- the percentage of the timeout after which to attempt recovery of the Guardable; 0 < flPctRecover <= 1.0- Returns:
- a Context for the specified guardable and SLA parameters
-
getThreadContext
public static Guardian.GuardContext getThreadContext()
Obtain the GuardContext associated with the current thread.- Returns:
- the GuardContext or null if it has not been set
-
setThreadContext
public static void setThreadContext(Guardian.GuardContext context)
Associate the specified GuardContext with the current thread.- Parameters:
context
- the GuardContext to associate with the current thread
-
heartbeat
public static void heartbeat()
Issue a heartbeat on the GuardContext associated with the current thread.
-
heartbeat
public static void heartbeat(long cMillis)
Issue a heartbeat of the specified duration on the GuardContext associated with the current thread.- Parameters:
cMillis
- the number of milliseconds to heartbeat for
-
reset
public static void reset()
Issue a reset on the GuardContext associated with the current thread.
-
logStackTraces
public static void logStackTraces()
Collect stack traces and synchronization information for all running threads and write them to the error log.
-
getThreadDump
public static String getThreadDump()
Get the full thread dump.- Returns:
- a string containing the thread dump
-
-