Author: manik.surtani(a)jboss.com
Date: 2008-10-22 23:18:45 -0400 (Wed, 22 Oct 2008)
New Revision: 7003
Modified:
core/trunk/src/main/docbook/userguide/en/modules/basic_api.xml
core/trunk/src/main/docbook/userguide/en/modules/configuration_reference.xml
core/trunk/src/main/docbook/userguide/en/modules/eviction_policies.xml
core/trunk/src/main/docbook/userguide/en/modules/jmx_reference.xml
core/trunk/src/main/java/org/jboss/cache/DataContainerImpl.java
core/trunk/src/main/java/org/jboss/cache/RPCManagerImpl.java
core/trunk/src/main/java/org/jboss/cache/RegionImpl.java
core/trunk/src/main/java/org/jboss/cache/RegionManagerImpl.java
core/trunk/src/main/java/org/jboss/cache/buddyreplication/BuddyManager.java
core/trunk/src/main/java/org/jboss/cache/interceptors/TxInterceptor.java
core/trunk/src/main/java/org/jboss/cache/lock/MVCCLockManager.java
core/trunk/src/main/java/org/jboss/cache/transaction/TransactionTable.java
core/trunk/src/main/java/org/jboss/cache/util/concurrent/locks/LockContainer.java
core/trunk/src/main/java/org/jboss/cache/util/concurrent/locks/OwnableReentrantLockContainer.java
core/trunk/src/main/java/org/jboss/cache/util/concurrent/locks/ReentrantLockContainer.java
Log:
- Updated docs
- Exposed more JMX information
Modified: core/trunk/src/main/docbook/userguide/en/modules/basic_api.xml
===================================================================
--- core/trunk/src/main/docbook/userguide/en/modules/basic_api.xml 2008-10-23 01:10:13 UTC
(rev 7002)
+++ core/trunk/src/main/docbook/userguide/en/modules/basic_api.xml 2008-10-23 03:18:45 UTC
(rev 7003)
@@ -535,6 +535,16 @@
}
}
]]></programlisting>
+ <section>
+ <title>Synchronous and Asynchronous Notifications</title>
+ <para>
+ By default, all notifications are synchronous, in that they happen on the
thread of the caller which generated
+ the event. As such, it is good practise to ensure cache listener
implementations don't hold up the thread in
+ long-running tasks. Alternatively, you could set the
<literal>CacheListener.sync()</literal> attribute to
+ <literal>false</literal>, in which case you will not be notified
in the caller's thread. See the
+ <link linkend="element.listeners">configuration
reference</link> on tuning this thread pool.
+ </para>
+ </section>
</section>
<section>
Modified: core/trunk/src/main/docbook/userguide/en/modules/configuration_reference.xml
===================================================================
---
core/trunk/src/main/docbook/userguide/en/modules/configuration_reference.xml 2008-10-23
01:10:13 UTC (rev 7002)
+++
core/trunk/src/main/docbook/userguide/en/modules/configuration_reference.xml 2008-10-23
03:18:45 UTC (rev 7003)
@@ -335,7 +335,6 @@
<entry> - </entry>
<entry>urn:jboss:jbosscache-core:config:3.0</entry>
<entry>urn:jboss:jbosscache-core:config:3.0</entry>
- <entry>No</entry>
<entry>Defines the XML namespace for all configuration
entries.</entry>
</row>
<row>
@@ -343,7 +342,6 @@
<entry> - </entry>
<
entry>http://www.w3.org/2001/XMLSchema-instance</entry>
<
entry>http://www.w3.org/2001/XMLSchema-instance</entry>
- <entry>No</entry>
<entry>Defines the XML schema instance for the
configuration.</entry>
</row>
</tbody>
Modified: core/trunk/src/main/docbook/userguide/en/modules/eviction_policies.xml
===================================================================
--- core/trunk/src/main/docbook/userguide/en/modules/eviction_policies.xml 2008-10-23
01:10:13 UTC (rev 7002)
+++ core/trunk/src/main/docbook/userguide/en/modules/eviction_policies.xml 2008-10-23
03:18:45 UTC (rev 7003)
@@ -178,8 +178,8 @@
...
<eviction wakeUpInterval="500" eventQueueSize="100000">
<default algorithmClass="org.jboss.cache.eviction.LRUAlgorithm">
- <attribute name="maxNodes">5000</attribute>
- <attribute name="timeToLive">1000</attribute>
+ <property name="maxNodes" value="5000" />
+ <property name="timeToLive" value="1000" />
</default>
</eviction>
...
Modified: core/trunk/src/main/docbook/userguide/en/modules/jmx_reference.xml
===================================================================
--- core/trunk/src/main/docbook/userguide/en/modules/jmx_reference.xml 2008-10-23 01:10:13
UTC (rev 7002)
+++ core/trunk/src/main/docbook/userguide/en/modules/jmx_reference.xml 2008-10-23 03:18:45
UTC (rev 7003)
@@ -3,158 +3,238 @@
<section id="jmx_reference.statistics">
<title>JBoss Cache Statistics</title>
<para>
- The following table describes the statistics currently available and may be
collected via JMX.
+ There is a whole wealth of information being gathered and exposed on to JMX for
monitoring the cache. Some
+ of these are detailed below:
</para>
<table>
- <title>JBoss Cache Management Statistics</title>
- <tgroup cols="4">
- <colspec colnum="1" colwidth="2*"/>
- <colspec colnum="2" colwidth="2*"/>
- <colspec colnum="3" colwidth="1*"/>
- <colspec colnum="4" colwidth="3*"/>
+ <title>JBoss Cache JMX MBeans</title>
+ <tgroup cols="3">
<thead>
<row>
- <entry>MBean Name</entry>
- <entry>Attribute</entry>
- <entry>Type</entry>
+ <entry>MBean</entry>
+ <entry>Attribute/Operation Name</entry>
<entry>Description</entry>
</row>
</thead>
<tbody>
<row>
- <entry>ActivationInterceptor</entry>
- <entry>Activations</entry>
- <entry>long</entry>
- <entry>Number of passivated nodes that have been
activated.</entry>
+ <entry>DataContainerImpl</entry>
+ <entry>getNumberOfAttributes()</entry>
+ <entry>Returns the number of attributes in all nodes in the data
container</entry>
</row>
<row>
- <entry>CacheLoaderInterceptor</entry>
- <entry>CacheLoaderLoads</entry>
- <entry>long</entry>
- <entry>Number of nodes loaded through a cache
loader.</entry>
+ <entry></entry>
+ <entry>getNumberOfNodes()</entry>
+ <entry>Returns the number of nodes in the data
container</entry>
</row>
<row>
- <entry>CacheLoaderInterceptor</entry>
- <entry>CacheLoaderMisses</entry>
- <entry>long</entry>
- <entry>Number of unsuccessful attempts to load a node through a
cache loader.</entry>
+ <entry></entry>
+ <entry>printDetails()</entry>
+ <entry>Prints details of the data container</entry>
</row>
+
<row>
- <entry>CacheMgmtInterceptor</entry>
- <entry>Hits</entry>
- <entry>long</entry>
- <entry>Number of successful attribute retrievals.</entry>
+ <entry>RPCManagerImpl</entry>
+ <entry>localAddressString</entry>
+ <entry>String representation of the local address</entry>
</row>
<row>
- <entry>CacheMgmtInterceptor</entry>
- <entry>Misses</entry>
- <entry>long</entry>
- <entry>Number of unsuccessful attribute
retrievals.</entry>
+ <entry></entry>
+ <entry>membersString</entry>
+ <entry>String representation of the cluster view</entry>
</row>
<row>
- <entry>CacheMgmtInterceptor</entry>
- <entry>Stores</entry>
- <entry>long</entry>
- <entry>Number of attribute store operations.</entry>
+ <entry></entry>
+ <entry>statisticsEnabled</entry>
+ <entry>Whether RPC statistics are being gathered</entry>
</row>
<row>
- <entry>CacheMgmtInterceptor</entry>
- <entry>Evictions</entry>
- <entry>long</entry>
- <entry>Number of node evictions.</entry>
+ <entry></entry>
+ <entry>replicationCount</entry>
+ <entry>Number of successful replications</entry>
</row>
<row>
- <entry>CacheMgmtInterceptor</entry>
- <entry>NumberOfAttributes</entry>
- <entry>int</entry>
- <entry>Number of attributes currently cached.</entry>
+ <entry></entry>
+ <entry>replicationFailures</entry>
+ <entry>Number of failed replications</entry>
</row>
<row>
- <entry>CacheMgmtInterceptor</entry>
- <entry>NumberOfNodes</entry>
- <entry>int</entry>
- <entry>Number of nodes currently cached.</entry>
+ <entry></entry>
+ <entry>successRatio</entry>
+ <entry>RPC call success ratio</entry>
</row>
+
<row>
- <entry>CacheMgmtInterceptor</entry>
- <entry>ElapsedTime</entry>
- <entry>long</entry>
- <entry>Number of seconds that the cache has been
running.</entry>
+ <entry>RegionManagerImpl</entry>
+ <entry>dumpRegions()</entry>
+ <entry>Dumps a String representation of all registered regions,
including eviction regions depicting their event queue sizes</entry>
</row>
<row>
- <entry>CacheMgmtInterceptor</entry>
- <entry>TimeSinceReset</entry>
- <entry>long</entry>
- <entry>Number of seconds since the cache statistics have been
reset.</entry>
+ <entry></entry>
+ <entry>numRegions</entry>
+ <entry>Number of registered regions</entry>
</row>
<row>
- <entry>CacheMgmtInterceptor</entry>
- <entry>AverageReadTime</entry>
- <entry>long</entry>
- <entry>Average time in milliseconds to retrieve a cache
attribute, including unsuccessful
- attribute retrievals.
- </entry>
+ <entry>BuddyManager</entry>
+ <entry>buddyGroup</entry>
+ <entry>A String representation of the cache's buddy
group</entry>
</row>
<row>
- <entry>CacheMgmtInterceptor</entry>
- <entry>AverageWriteTime</entry>
- <entry>long</entry>
- <entry>Average time in milliseconds to write a cache
attribute.</entry>
+ <entry></entry>
+ <entry>buddyGroupsIParticipateIn</entry>
+ <entry>String representations of all buddy groups the cache
participates in</entry>
</row>
<row>
- <entry>CacheMgmtInterceptor</entry>
- <entry>HitMissRatio</entry>
- <entry>double</entry>
- <entry>Ratio of hits to hits and misses. A hit is a get attribute
operation that results in an object
- being
- returned to the client. The retrieval may be from a cache loader if
the entry isn't in the local
- cache.
- </entry>
+ <entry>TransactionTable</entry>
+ <entry>numberOfRegisteredTransactions</entry>
+ <entry>The number of registered, ongoing
transactions</entry>
</row>
<row>
- <entry>CacheMgmtInterceptor</entry>
- <entry>ReadWriteRatio</entry>
- <entry>double</entry>
- <entry>Ratio of read operations to write operations. This is the
ratio of cache hits and misses to
- cache stores.
- </entry>
+ <entry></entry>
+ <entry>transactionMap</entry>
+ <entry>A String representation of all currently registered
transactions mapped to internal GlobalTransaction instances</entry>
</row>
+
<row>
- <entry>CacheStoreInterceptor</entry>
- <entry>CacheLoaderStores</entry>
- <entry>long</entry>
- <entry>Number of nodes written to the cache
loader.</entry>
+ <entry>MVCCLockManager</entry>
+ <entry>concurrencyLevel</entry>
+ <entry>The configured concurrency level</entry>
</row>
<row>
- <entry>InvalidationInterceptor</entry>
- <entry>Invalidations</entry>
- <entry>long</entry>
- <entry>Number of cached nodes that have been
invalidated.</entry>
+ <entry></entry>
+ <entry>numberOfLocksAvailable</entry>
+ <entry>Number of locks in the shared lock pool that are not
used</entry>
</row>
<row>
- <entry>PassivationInterceptor</entry>
- <entry>Passivations</entry>
- <entry>long</entry>
- <entry>Number of cached nodes that have been
passivated.</entry>
+ <entry></entry>
+ <entry>numberOfLocksHeld</entry>
+ <entry>Number of locks in the shared lock pool that are in
use</entry>
</row>
<row>
- <entry>TxInterceptor</entry>
- <entry>Prepares</entry>
- <entry>long</entry>
- <entry>Number of transaction prepare operations performed by this
interceptor.</entry>
+ <entry></entry>
+ <entry>testHashing(String fqn)</entry>
+ <entry>Tests the spreading of locks across Fqns. For a given
(String based) Fqn, this method returns the index in the lock array that it maps
to.</entry>
</row>
<row>
- <entry>TxInterceptor</entry>
- <entry>Commits</entry>
- <entry>long</entry>
- <entry>Number of transaction commit operations performed by this
interceptor.</entry>
- </row>
- <row>
- <entry>TxInterceptor</entry>
- <entry>Rollbacks</entry>
- <entry>long</entry>
- <entry>Number of transaction rollbacks operations performed by
this interceptor.</entry>
- </row>
+ <entry>ActivationInterceptor</entry>
+ <entry>Activations</entry>
+ <entry>Number of passivated nodes that have been
activated.</entry>
+ </row>
+ <row>
+ <entry>CacheLoaderInterceptor</entry>
+ <entry>CacheLoaderLoads</entry>
+ <entry>Number of nodes loaded through a cache
loader.</entry>
+ </row>
+ <row>
+ <entry></entry>
+ <entry>CacheLoaderMisses</entry>
+ <entry>Number of unsuccessful attempts to load a
node through a cache loader.</entry>
+ </row>
+ <row>
+ <entry>CacheMgmtInterceptor</entry>
+ <entry>Hits</entry>
+ <entry>Number of successful attribute
retrievals.</entry>
+ </row>
+ <row>
+ <entry></entry>
+ <entry>Misses</entry>
+ <entry>Number of unsuccessful attribute
retrievals.</entry>
+ </row>
+ <row>
+ <entry></entry>
+ <entry>Stores</entry>
+ <entry>Number of attribute store
operations.</entry>
+ </row>
+ <row>
+ <entry></entry>
+ <entry>Evictions</entry>
+ <entry>Number of node evictions.</entry>
+ </row>
+ <row>
+ <entry></entry>
+ <entry>NumberOfAttributes</entry>
+ <entry>Number of attributes currently
cached.</entry>
+ </row>
+ <row>
+ <entry></entry>
+ <entry>NumberOfNodes</entry>
+ <entry>Number of nodes currently
cached.</entry>
+ </row>
+ <row>
+ <entry></entry>
+ <entry>ElapsedTime</entry>
+ <entry>Number of seconds that the cache has been
running.</entry>
+ </row>
+ <row>
+ <entry></entry>
+ <entry>TimeSinceReset</entry>
+ <entry>Number of seconds since the cache statistics
have been reset.</entry>
+ </row>
+ <row>
+ <entry></entry>
+ <entry>AverageReadTime</entry>
+ <entry>Average time in milliseconds to retrieve a
cache attribute, including unsuccessful
+ attribute retrievals.
+ </entry>
+ </row>
+ <row>
+ <entry></entry>
+ <entry>AverageWriteTime</entry>
+ <entry>Average time in milliseconds to write a
cache attribute.</entry>
+ </row>
+ <row>
+ <entry></entry>
+ <entry>HitMissRatio</entry>
+ <entry>Ratio of hits to hits and misses. A hit is a
get attribute operation that results in an object
+ being
+ returned to the client. The retrieval may be from a
cache loader if the entry isn't in the local
+ cache.
+ </entry>
+ </row>
+ <row>
+ <entry></entry>
+ <entry>ReadWriteRatio</entry>
+ <entry>Ratio of read operations to write
operations. This is the ratio of cache hits and misses to
+ cache stores.
+ </entry>
+ </row>
+ <row>
+ <entry>CacheStoreInterceptor</entry>
+ <entry>CacheLoaderStores</entry>
+ <entry>Number of nodes written to the cache
loader.</entry>
+ </row>
+ <row>
+ <entry>InvalidationInterceptor</entry>
+ <entry>Invalidations</entry>
+ <entry>Number of cached nodes that have been
invalidated.</entry>
+ </row>
+ <row>
+ <entry>PassivationInterceptor</entry>
+ <entry>Passivations</entry>
+ <entry>Number of cached nodes that have been
passivated.</entry>
+ </row>
+ <row>
+ <entry>TxInterceptor</entry>
+ <entry>Prepares</entry>
+ <entry>Number of transaction prepare operations
performed by this interceptor.</entry>
+ </row>
+ <row>
+ <entry></entry>
+ <entry>Commits</entry>
+ <entry>Number of transaction commit operations
performed by this interceptor.</entry>
+ </row>
+ <row>
+ <entry></entry>
+ <entry>Rollbacks</entry>
+ <entry>Number of transaction rollbacks operations
performed by this interceptor.</entry>
+ </row>
+ <row>
+ <entry></entry>
+ <entry>numberOfSyncsRegistered</entry>
+ <entry>Number of synchronizations registered with
the transaction manager pending completion and removal.</entry>
+ </row>
+
+
</tbody>
</tgroup>
</table>
@@ -182,125 +262,64 @@
<tbody>
<row>
<entry>org.jboss.cache.CacheStarted</entry>
- <entry>String : cache service name</entry>
- <entry>cacheStarted</entry>
+ <entry>String: cache service name</entry>
+ <entry>@CacheStarted</entry>
</row>
<row>
<entry>org.jboss.cache.CacheStopped</entry>
- <entry>String : cache service name</entry>
- <entry>cacheStopped</entry>
+ <entry>String: cache service name</entry>
+ <entry>@CacheStopped</entry>
</row>
<row>
<entry>org.jboss.cache.NodeCreated</entry>
- <entry>String : fqn</entry>
- <entry>NodeCreated</entry>
+ <entry>String: fqn, boolean: isPre, boolean:
isOriginLocal</entry>
+ <entry>@NodeCreated</entry>
</row>
<row>
<entry>org.jboss.cache.NodeEvicted</entry>
- <entry>String : fqn</entry>
- <entry>NodeEvicted</entry>
+ <entry>String: fqn, boolean: isPre, boolean:
isOriginLocal</entry>
+ <entry>@NodeEvicted</entry>
</row>
<row>
<entry>org.jboss.cache.NodeLoaded</entry>
- <entry>String : fqn</entry>
- <entry>NodeLoaded</entry>
+ <entry>String: fqn, boolean: isPre</entry>
+ <entry>@NodeLoaded</entry>
</row>
<row>
<entry>org.jboss.cache.NodeModifed</entry>
- <entry>String : fqn</entry>
- <entry>NodeModifed</entry>
+ <entry>String: fqn, boolean: isPre, boolean:
isOriginLocal</entry>
+ <entry>@NodeModifed</entry>
</row>
<row>
<entry>org.jboss.cache.NodeRemoved</entry>
- <entry>String : fqn</entry>
- <entry>NodeRemoved</entry>
+ <entry>String: fqn, boolean: isPre, boolean:
isOriginLocal</entry>
+ <entry>@NodeRemoved</entry>
</row>
<row>
<entry>org.jboss.cache.NodeVisited</entry>
- <entry>String : fqn</entry>
- <entry>NodeVisited</entry>
+ <entry>String: fqn, boolean: isPre</entry>
+ <entry>@NodeVisited</entry>
</row>
<row>
- <entry>org.jboss.cache.ViewChange</entry>
- <entry>String : view</entry>
- <entry>ViewChange</entry>
+ <entry>org.jboss.cache.ViewChanged</entry>
+ <entry>String: view</entry>
+ <entry>@ViewChanged</entry>
</row>
<row>
- <entry>org.jboss.cache.NodeActivate</entry>
- <entrytbl cols="1">
- <tbody>
- <row>
- <entry rowsep="0">Object[0]=String:
fqn</entry>
- </row>
- <row>
- <entry>Object[1]=Boolean: pre</entry>
- </row>
- </tbody>
- </entrytbl>
- <entry>NodeActivate</entry>
+ <entry>org.jboss.cache.NodeActivated</entry>
+ <entry>String: fqn</entry>
+ <entry>@NodeActivated</entry>
</row>
<row>
- <entry>org.jboss.cache.NodeEvict</entry>
- <entrytbl cols="1">
- <tbody>
- <row>
- <entry rowsep="0">Object[0]=String:
fqn</entry>
- </row>
- <row>
- <entry>Object[1]=Boolean: pre</entry>
- </row>
- </tbody>
- </entrytbl>
- <entry>NodeEvict</entry>
+ <entry>org.jboss.cache.NodeMoved</entry>
+ <entry>String: fromFqn, String: toFqn, boolean:
isPre</entry>
+ <entry>@NodeMoved</entry>
</row>
<row>
- <entry>org.jboss.cache.NodeModify</entry>
- <entrytbl cols="1">
- <tbody>
- <row>
- <entry rowsep="0">Object[0]=String:
fqn</entry>
- </row>
- <row>
- <entry rowsep="0">Object[1]=Boolean:
pre</entry>
- </row>
- <row>
- <entry>Object[2]=Boolean: isLocal</entry>
- </row>
- </tbody>
- </entrytbl>
- <entry>NodeModify</entry>
+ <entry>org.jboss.cache.NodePassivated</entry>
+ <entry>String: fqn</entry>
+ <entry>@NodePassivated</entry>
</row>
- <row>
- <entry>org.jboss.cache.NodePassivate</entry>
- <entrytbl cols="1">
- <tbody>
- <row>
- <entry rowsep="0">Object[0]=String:
fqn</entry>
- </row>
- <row>
- <entry>Object[1]=Boolean: pre</entry>
- </row>
- </tbody>
- </entrytbl>
- <entry>NodePassivate</entry>
- </row>
- <row>
- <entry>org.jboss.cache.NodeRemove</entry>
- <entrytbl cols="1">
- <tbody>
- <row>
- <entry rowsep="0">Object[0]=String:
fqn</entry>
- </row>
- <row>
- <entry rowsep="0">Object[1]=Boolean:
pre</entry>
- </row>
- <row>
- <entry>Object[2]=Boolean: isLocal</entry>
- </row>
- </tbody>
- </entrytbl>
- <entry>NodeRemove</entry>
- </row>
</tbody>
</tgroup>
</table>
Modified: core/trunk/src/main/java/org/jboss/cache/DataContainerImpl.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/DataContainerImpl.java 2008-10-23 01:10:13
UTC (rev 7002)
+++ core/trunk/src/main/java/org/jboss/cache/DataContainerImpl.java 2008-10-23 03:18:45
UTC (rev 7003)
@@ -1,24 +1,24 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2000 - 2008, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
- */
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2000 - 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
package org.jboss.cache;
import org.apache.commons.logging.Log;
@@ -30,6 +30,7 @@
import org.jboss.cache.factories.annotations.NonVolatile;
import org.jboss.cache.factories.annotations.Start;
import org.jboss.cache.factories.annotations.Stop;
+import org.jboss.cache.jmx.annotations.ManagedOperation;
import org.jboss.cache.lock.LockManager;
import org.jboss.cache.marshall.NodeData;
@@ -420,6 +421,7 @@
return num;
}
+ @ManagedOperation(description = "Returns the number of nodes in the data
container")
public int getNumberOfNodes()
{
if (!usingMvcc) return numNodes(root) - 1;
@@ -460,6 +462,7 @@
*
* @return details
*/
+ @ManagedOperation(description = "Prints details of the data container")
public String printDetails()
{
StringBuilder sb = new StringBuilder();
@@ -520,6 +523,7 @@
return count;
}
+ @ManagedOperation(description = "Returns the number of attributes in all nodes in
the data container")
public int getNumberOfAttributes()
{
return usingMvcc ? numAttributesMvcc(rootInternal) : numAttributes(root);
Modified: core/trunk/src/main/java/org/jboss/cache/RPCManagerImpl.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/RPCManagerImpl.java 2008-10-23 01:10:13 UTC
(rev 7002)
+++ core/trunk/src/main/java/org/jboss/cache/RPCManagerImpl.java 2008-10-23 03:18:45 UTC
(rev 7003)
@@ -594,11 +594,25 @@
// ------------ START: Informational methods ------------
+ @ManagedAttribute (description = "Local address")
+ public String getLocalAddressString()
+ {
+ Address address = getLocalAddress();
+ return address == null ? "null" : address.toString();
+ }
+
public Address getLocalAddress()
{
return channel != null ? channel.getLocalAddress() : null;
}
+ @ManagedAttribute (description = "Cluster view")
+ public String getMembersString()
+ {
+ List l = getMembers();
+ return l == null ? "null" : l.toString();
+ }
+
public List<Address> getMembers()
{
if (isInLocalMode) return null;
@@ -782,7 +796,7 @@
this.statisticsEnabled = statisticsEnabled;
}
- @ManagedAttribute
+ @ManagedAttribute(description = "RPC call success ratio")
public String getSuccessRatio()
{
if (replicationCount == 0 || !statisticsEnabled)
Modified: core/trunk/src/main/java/org/jboss/cache/RegionImpl.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/RegionImpl.java 2008-10-23 01:10:13 UTC (rev
7002)
+++ core/trunk/src/main/java/org/jboss/cache/RegionImpl.java 2008-10-23 03:18:45 UTC (rev
7003)
@@ -175,6 +175,7 @@
"; status=" + status +
"; eviction=" + (evictionAlgorithm != null) +
"; timerThreadRegistered=" + (evictionAlgorithm != null &&
regionManager.getEvictionTimerTask().isRegionRegisteredForProcessing(this)) +
+ "; evictionQueueSize=" + (evictionAlgorithm == null ?
"-1" : evictionEventQueue.size()) +
'}';
}
Modified: core/trunk/src/main/java/org/jboss/cache/RegionManagerImpl.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/RegionManagerImpl.java 2008-10-23 01:10:13
UTC (rev 7002)
+++ core/trunk/src/main/java/org/jboss/cache/RegionManagerImpl.java 2008-10-23 03:18:45
UTC (rev 7003)
@@ -36,6 +36,8 @@
import org.jboss.cache.factories.annotations.Inject;
import org.jboss.cache.factories.annotations.Start;
import org.jboss.cache.factories.annotations.Stop;
+import org.jboss.cache.jmx.annotations.ManagedAttribute;
+import org.jboss.cache.jmx.annotations.ManagedOperation;
import org.jboss.cache.lock.LockManager;
import org.jboss.cache.util.concurrent.locks.LockContainer;
import org.jboss.cache.util.concurrent.locks.ReentrantLockContainer;
@@ -698,6 +700,7 @@
}
}
+ @ManagedOperation(description = "A String representation of all registered
regions")
public String dumpRegions()
{
StringBuilder sb = new StringBuilder();
@@ -743,4 +746,10 @@
{
evictionTimerTask.stop();
}
+
+ @ManagedAttribute(name="numRegions", description = "A count of all
regions")
+ public int getNumRegions()
+ {
+ return regionsRegistry.size();
+ }
}
Modified: core/trunk/src/main/java/org/jboss/cache/buddyreplication/BuddyManager.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/buddyreplication/BuddyManager.java 2008-10-23
01:10:13 UTC (rev 7002)
+++ core/trunk/src/main/java/org/jboss/cache/buddyreplication/BuddyManager.java 2008-10-23
03:18:45 UTC (rev 7003)
@@ -48,6 +48,7 @@
import org.jboss.cache.factories.annotations.Start;
import org.jboss.cache.factories.annotations.Stop;
import org.jboss.cache.io.ExposedByteArrayOutputStream;
+import org.jboss.cache.jmx.annotations.ManagedAttribute;
import org.jboss.cache.lock.TimeoutException;
import org.jboss.cache.notifications.Notifier;
import org.jboss.cache.notifications.annotation.CacheListener;
@@ -1300,4 +1301,16 @@
}
}
}
+
+ @ManagedAttribute(description = "A String representation of the cache's buddy
group")
+ public String getBuddyGroup()
+ {
+ return buddyGroup.toString();
+ }
+
+ @ManagedAttribute(description = "A String representation of buddy groups the
cache participates in")
+ public String getBuddyGroupsIParticipateIn()
+ {
+ return buddyGroupsIParticipateIn.toString();
+ }
}
\ No newline at end of file
Modified: core/trunk/src/main/java/org/jboss/cache/interceptors/TxInterceptor.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/interceptors/TxInterceptor.java 2008-10-23
01:10:13 UTC (rev 7002)
+++ core/trunk/src/main/java/org/jboss/cache/interceptors/TxInterceptor.java 2008-10-23
03:18:45 UTC (rev 7003)
@@ -1148,4 +1148,10 @@
{
return rollbacks;
}
+
+ @ManagedAttribute(name = "numberOfSyncsRegistered", writable = false,
description = "number of transaction synchronizations currently registered")
+ public int getNumberOfSyncsRegistered()
+ {
+ return transactions.size();
+ }
}
\ No newline at end of file
Modified: core/trunk/src/main/java/org/jboss/cache/lock/MVCCLockManager.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/lock/MVCCLockManager.java 2008-10-23 01:10:13
UTC (rev 7002)
+++ core/trunk/src/main/java/org/jboss/cache/lock/MVCCLockManager.java 2008-10-23 03:18:45
UTC (rev 7003)
@@ -33,6 +33,8 @@
import org.jboss.cache.factories.annotations.Inject;
import org.jboss.cache.factories.annotations.Start;
import org.jboss.cache.invocation.InvocationContextContainer;
+import org.jboss.cache.jmx.annotations.ManagedAttribute;
+import org.jboss.cache.jmx.annotations.ManagedOperation;
import static org.jboss.cache.lock.LockType.READ;
import org.jboss.cache.util.concurrent.locks.LockContainer;
import org.jboss.cache.util.concurrent.locks.OwnableReentrantLock;
@@ -302,4 +304,28 @@
{
return lockContainer.toString();
}
+
+ @ManagedAttribute(name = "concurrency level", writable = false, description
= "The concurrency level that the MVCC Lock Manager has been configured with.")
+ public int getConcurrencyLevel()
+ {
+ return configuration.getConcurrencyLevel();
+ }
+
+ @ManagedAttribute(name = "locks held", writable = false, description =
"The number of exclusive locks that are held.")
+ public int getNumberOfLocksHeld()
+ {
+ return lockContainer.getNumLocksHeld();
+ }
+
+ @ManagedAttribute(name = "locks held", writable = false, description =
"The number of exclusive locks that are available.")
+ public int getNumberOfLocksAvailable()
+ {
+ return lockContainer.size() - lockContainer.getNumLocksHeld();
+ }
+
+ @ManagedOperation(description = "Tests the spreading of locks across Fqns. For a
given (String based) Fqn, this method returns the index in the lock array that it maps
to.")
+ public int testHashing(String fqn)
+ {
+ return lockContainer.hashToIndex(Fqn.fromString(fqn));
+ }
}
Modified: core/trunk/src/main/java/org/jboss/cache/transaction/TransactionTable.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/transaction/TransactionTable.java 2008-10-23
01:10:13 UTC (rev 7002)
+++ core/trunk/src/main/java/org/jboss/cache/transaction/TransactionTable.java 2008-10-23
03:18:45 UTC (rev 7003)
@@ -29,6 +29,7 @@
import org.jboss.cache.factories.annotations.Inject;
import org.jboss.cache.factories.annotations.NonVolatile;
import org.jboss.cache.factories.context.ContextFactory;
+import org.jboss.cache.jmx.annotations.ManagedAttribute;
import org.jgroups.Address;
import javax.transaction.Status;
@@ -423,4 +424,16 @@
}
return gtx;
}
+
+ @ManagedAttribute(name="numberOfRegisteredTransactions", description =
"Number of registered transactions")
+ public int getNumberOfRegisteredTransactions()
+ {
+ return tx2gtxMap.size();
+ }
+
+ @ManagedAttribute(name="transactionMap", description = "A String
representation of the transaction map")
+ public String getTransactionMap()
+ {
+ return tx2gtxMap.toString();
+ }
}
Modified:
core/trunk/src/main/java/org/jboss/cache/util/concurrent/locks/LockContainer.java
===================================================================
---
core/trunk/src/main/java/org/jboss/cache/util/concurrent/locks/LockContainer.java 2008-10-23
01:10:13 UTC (rev 7002)
+++
core/trunk/src/main/java/org/jboss/cache/util/concurrent/locks/LockContainer.java 2008-10-23
03:18:45 UTC (rev 7003)
@@ -111,4 +111,6 @@
* Clears all locks held and re-initialises stripes.
*/
public abstract void reset();
+
+ public abstract int size();
}
Modified:
core/trunk/src/main/java/org/jboss/cache/util/concurrent/locks/OwnableReentrantLockContainer.java
===================================================================
---
core/trunk/src/main/java/org/jboss/cache/util/concurrent/locks/OwnableReentrantLockContainer.java 2008-10-23
01:10:13 UTC (rev 7002)
+++
core/trunk/src/main/java/org/jboss/cache/util/concurrent/locks/OwnableReentrantLockContainer.java 2008-10-23
03:18:45 UTC (rev 7003)
@@ -93,4 +93,9 @@
{
initLocks(sharedLocks.length);
}
+
+ public int size()
+ {
+ return sharedLocks.length;
+ }
}
Modified:
core/trunk/src/main/java/org/jboss/cache/util/concurrent/locks/ReentrantLockContainer.java
===================================================================
---
core/trunk/src/main/java/org/jboss/cache/util/concurrent/locks/ReentrantLockContainer.java 2008-10-23
01:10:13 UTC (rev 7002)
+++
core/trunk/src/main/java/org/jboss/cache/util/concurrent/locks/ReentrantLockContainer.java 2008-10-23
03:18:45 UTC (rev 7003)
@@ -89,4 +89,9 @@
{
initLocks(sharedLocks.length);
}
+
+ public int size()
+ {
+ return sharedLocks.length;
+ }
}