[infinispan-commits] Infinispan SVN: r1136 - in trunk/jopr-plugin/src/main: resources/META-INF and 1 other directory.

infinispan-commits at lists.jboss.org infinispan-commits at lists.jboss.org
Wed Nov 11 12:13:11 EST 2009


Author: galder.zamarreno at jboss.com
Date: 2009-11-11 12:13:10 -0500 (Wed, 11 Nov 2009)
New Revision: 1136

Modified:
   trunk/jopr-plugin/src/main/java/org/infinispan/jopr/CacheManagerComponent.java
   trunk/jopr-plugin/src/main/java/org/infinispan/jopr/CacheManagerDiscovery.java
   trunk/jopr-plugin/src/main/resources/META-INF/rhq-plugin.xml
Log:
[ISPN-268] (Enhance the plugin so that Infinispan instances can be added manually) In order to support multiple Infinispan instances, use CacheManager name as resource key and add corresponding code to manually add resources. This is still not working as it should but Heiko should be able to help me.

Modified: trunk/jopr-plugin/src/main/java/org/infinispan/jopr/CacheManagerComponent.java
===================================================================
--- trunk/jopr-plugin/src/main/java/org/infinispan/jopr/CacheManagerComponent.java	2009-11-11 13:45:10 UTC (rev 1135)
+++ trunk/jopr-plugin/src/main/java/org/infinispan/jopr/CacheManagerComponent.java	2009-11-11 17:13:10 UTC (rev 1136)
@@ -48,6 +48,7 @@
    private static final Log log = LogFactory.getLog(CacheManagerComponent.class);
    private ResourceContext context;
    private ConnectionHelper helper;
+   private String objectName;
 
    /**
     * Return availability of this resource. We do this by checking the connection to it. If the Manager would expose
@@ -59,7 +60,7 @@
       EmsConnection conn = getConnection();
       try {
          conn.refresh();
-         EmsBean bean = conn.getBean(context.getResourceKey());
+         EmsBean bean = conn.getBean(objectName);
          if (bean != null)
             bean.refreshAttributes();
          return AvailabilityType.UP;
@@ -75,7 +76,8 @@
     */
    public void start(ResourceContext context) throws InvalidPluginConfigurationException, Exception {
       this.context = context;
-      helper = new ConnectionHelper();
+      this.objectName = context.getPluginConfiguration().getSimpleValue("objectName", null);
+      this.helper = new ConnectionHelper();
       getConnection();
    }
 
@@ -99,7 +101,7 @@
       boolean trace = log.isTraceEnabled();
       if (trace) log.trace("Get values for these metrics: {0}", metrics);
       EmsConnection conn = getConnection();
-      EmsBean bean = conn.getBean(context.getPluginConfiguration().getSimpleValue("objectName", null));
+      EmsBean bean = conn.getBean(objectName);
       bean.refreshAttributes();
       for (MeasurementScheduleRequest req : metrics) {
          DataType type = req.getDataType();

Modified: trunk/jopr-plugin/src/main/java/org/infinispan/jopr/CacheManagerDiscovery.java
===================================================================
--- trunk/jopr-plugin/src/main/java/org/infinispan/jopr/CacheManagerDiscovery.java	2009-11-11 13:45:10 UTC (rev 1135)
+++ trunk/jopr-plugin/src/main/java/org/infinispan/jopr/CacheManagerDiscovery.java	2009-11-11 17:13:10 UTC (rev 1136)
@@ -54,46 +54,45 @@
 
    private static final String MANAGER_OBJECT = "*:" + CACHE_NAME_KEY + '=' + GLOBAL_JMX_GROUP + "," + JMX_RESOURCE_KEY + "=" + OBJECT_NAME;
    private static final String CONNECTOR = "org.mc4j.ems.connection.support.metadata.J2SE5ConnectionTypeDescriptor";
-
+   private static final String OBJECT_NAME_KEY = "objectName";
+   
    /**
     * Run the discovery
     */
-   public Set<DiscoveredResourceDetails> discoverResources(ResourceDiscoveryContext<CacheManagerComponent> discoveryContext) throws Exception {
+   public Set<DiscoveredResourceDetails> discoverResources(ResourceDiscoveryContext<CacheManagerComponent> ctx) throws Exception {
       boolean trace = log.isTraceEnabled();
-      if (trace) log.trace("Discover resources with context: {0}", discoveryContext);
+      if (trace) log.trace("Discover resources with context: {0}", ctx);
 
       Set<DiscoveredResourceDetails> discoveredResources = new HashSet<DiscoveredResourceDetails>();
       // TODO check if we e.g. run inside a JBossAS to which we have a connection already that we can reuse.
       Configuration c = new Configuration();
       c.put(new PropertySimple(JMXDiscoveryComponent.CONNECTOR_ADDRESS_CONFIG_PROPERTY, REMOTE));
       c.put(new PropertySimple(JMXDiscoveryComponent.CONNECTION_TYPE, CONNECTOR));
-      c.put(new PropertySimple("objectName", MANAGER_OBJECT));
+      c.put(new PropertySimple(OBJECT_NAME_KEY, MANAGER_OBJECT));
       if (trace) log.trace("To be used configuration is {0}", c.toString(true));
 
       ConnectionHelper helper = new ConnectionHelper();
       EmsConnection conn = helper.getEmsConnection(c);
 
       if (trace) log.trace("Connection to ems server stablished: {0}", conn);
-      
+
       // Run query for manager_object
       ObjectNameQueryUtility queryUtility = new ObjectNameQueryUtility(MANAGER_OBJECT);
       List<EmsBean> beans = conn.queryBeans(queryUtility.getTranslatedQuery());
       if (trace) log.trace("Querying [{0}] returned beans: {1}", queryUtility.getTranslatedQuery(), beans);
-      
       for (EmsBean bean : beans) {
-
          String managerName = bean.getBeanName().getCanonicalName();
-         c.put(new PropertySimple("objectName", managerName));
+         c.put(new PropertySimple(OBJECT_NAME_KEY, managerName));
          String resourceName = bean.getAttribute("Name").getValue().toString();
          String version = bean.getAttribute("Version").getValue().toString();
          /* A discovered resource must have a unique key, that must
           * stay the same when the resource is discovered the next
           * time */
          if (trace) log.trace("Add resource with name '{0}', version '{1}' and type {2}", 
-                  resourceName, version, discoveryContext.getResourceType());
+                  resourceName, version, ctx.getResourceType());
          DiscoveredResourceDetails detail = new DiscoveredResourceDetails(
-               discoveryContext.getResourceType(), // Resource type
-               managerName, // Resource key
+               ctx.getResourceType(), // Resource type
+               resourceName, // Resource key
                resourceName, // Resource name
                version, // Resource version
                "A cache manager within Infinispan", // Description
@@ -103,9 +102,57 @@
 
          // Add to return values
          discoveredResources.add(detail);
-         log.info("Discovered Infinispan instance: {0}", managerName);
+         log.info("Automatically discovered Infinispan instance with key {0} and name {1}", resourceName, managerName);
       }
+
+      // Process any manually-added resources.
+      List<Configuration> contextPluginConfigurations = ctx.getPluginConfigurations();
+      for (Configuration pluginConfiguration : contextPluginConfigurations) {
+         DiscoveredResourceDetails resource = parsePluginConfig(ctx, pluginConfiguration);
+         if (resource != null) {
+            discoveredResources.add(resource);
+         }
+      }
+
       return discoveredResources;
+   }
 
+   private DiscoveredResourceDetails parsePluginConfig(ResourceDiscoveryContext ctx, Configuration cfg) {
+      boolean trace = log.isTraceEnabled();
+      String objectName = cfg.getSimple(OBJECT_NAME_KEY).getStringValue();
+      String connectorAddress = cfg.getSimple(JMXDiscoveryComponent.CONNECTOR_ADDRESS_CONFIG_PROPERTY).getStringValue();
+
+      Configuration c = new Configuration();
+      c.put(new PropertySimple(OBJECT_NAME_KEY, objectName));
+      c.put(new PropertySimple(JMXDiscoveryComponent.CONNECTOR_ADDRESS_CONFIG_PROPERTY, connectorAddress));
+      c.put(new PropertySimple(JMXDiscoveryComponent.CONNECTION_TYPE, CONNECTOR));
+      if (trace) log.trace("Manual configuration is {0}", c.toString(true));
+      
+      ConnectionHelper helper = new ConnectionHelper();
+      EmsConnection conn = helper.getEmsConnection(c);
+      if (trace) log.trace("Connection to ems server stablished: {0}", conn);
+
+      // Run query for manager_object
+      ObjectNameQueryUtility queryUtility = new ObjectNameQueryUtility(objectName);
+      List<EmsBean> beans = conn.queryBeans(queryUtility.getTranslatedQuery());
+      if (trace) log.trace("Querying [{0}] returned beans: {1}", queryUtility.getTranslatedQuery(), beans);
+
+      EmsBean bean = beans.get(0);
+      String managerName = bean.getBeanName().getCanonicalName();
+      String resourceName = bean.getAttribute("Name").getValue().toString();
+      String version = bean.getAttribute("Version").getValue().toString();
+      /* A discovered resource must have a unique key, that must stay the same when the resource is discovered the next time */
+      if (trace) log.trace("Add resource with name '{0}', version '{1}' and type {2}", resourceName, version, ctx.getResourceType());
+      DiscoveredResourceDetails detail = new DiscoveredResourceDetails(
+            ctx.getResourceType(), // Resource type
+            resourceName, // Resource key
+            resourceName, // Resource name
+            version, // Resource version
+            "A cache manager within Infinispan", // Description
+            c, // Plugin config
+            null // Process info from a process scan
+      );
+      log.info("Manually discovered Infinispan instance with key {0} and name {1}", resourceName, managerName);
+      return detail;
    }
 }
\ No newline at end of file

Modified: trunk/jopr-plugin/src/main/resources/META-INF/rhq-plugin.xml
===================================================================
--- trunk/jopr-plugin/src/main/resources/META-INF/rhq-plugin.xml	2009-11-11 13:45:10 UTC (rev 1135)
+++ trunk/jopr-plugin/src/main/resources/META-INF/rhq-plugin.xml	2009-11-11 17:13:10 UTC (rev 1136)
@@ -21,7 +21,7 @@
                 <c:simple-property name="connectorAddress" description="JMX Remoting address of the remote Infinispan Instance"  />
                 <c:simple-property name="objectName" description="ObjectName of the Manager" type="string" readOnly="true"/>
                 <!-- The template section is only for manual resource additions, and default parameters and the ones presented to the user. -->
-                <c:template name="default" description="The default setup for Infinispan">
+                <c:template name="defaultManualDiscovery" description="The default setup for Infinispan">
                   <c:simple-property name="connectorAddress" displayName="URL of the remote server"
                                      defaultValue="service:jmx:rmi://127.0.0.1/jndi/rmi://127.0.0.1:6996/jmxrmi"/>
                 </c:template>
@@ -61,6 +61,29 @@
           >
 
 
+           <operation name="Activation.resetStatistics" displayName="[Activation] Reset statistics" description="Resets statistics gathered by this component">
+           </operation>
+           <operation name="Passivation.resetStatistics" displayName="[Passivation] Reset statistics" description="Resets statistics gathered by this component">
+           </operation>
+           <operation name="Statistics.resetStatistics" displayName="[Statistics] Reset Statistics (Statistics)" description="Resets statistics gathered by this component">
+           </operation>
+           <operation name="DeadlockDetectingLockManager.resetStatistics" displayName="[DeadlockDetectingLockManager] Reset statistics" description="Resets statistics gathered by this component">
+           </operation>
+           <operation name="CacheLoader.resetStatistics" displayName="[CacheLoader] Reset Statistics" description="Resets statistics gathered by this component">
+           </operation>
+           <operation name="Cache.start" displayName="[Cache] Starts cache." description="Starts the cache.">
+           </operation>
+           <operation name="Cache.stop" displayName="[Cache] Stops cache." description="Stops the cache.">
+           </operation>
+           <operation name="CacheStore.resetStatistics" displayName="[CacheStore] Reset statistics" description="Resets statistics gathered by this component">
+           </operation>
+           <operation name="RpcManager.resetStatistics" displayName="[RpcManager] Reset statistics" description="Resets statistics gathered by this component">
+           </operation>
+           <operation name="RpcManager.setStatisticsEnabled" displayName="[RpcManager] Enable/disable statistics" description="Enable/disable statistics">
+              <parameters>
+                 <c:simple-property name="enabled" description="Whether statistics should be enabled or disabled (true/false)"/>
+              </parameters>
+           </operation>
            <operation name="Invalidation.resetStatistics" displayName="[Invalidation] Reset statistics" description="Resets statistics gathered by this component">
            </operation>
            <operation name="Invalidation.setStatisticsEnabled" displayName="[Invalidation] Enable/disable statistics" description="Enable/disable statistics">
@@ -68,8 +91,6 @@
                  <c:simple-property name="enabled" description="Whether statistics should be enabled or disabled (true/false)"/>
               </parameters>
            </operation>
-           <operation name="Statistics.resetStatistics" displayName="[Statistics] Reset Statistics (Statistics)" description="Resets statistics gathered by this component">
-           </operation>
            <operation name="DistributionManager.isAffectedByRehash" displayName="[DistributionManager] Could key be affected by reshah?" description="Determines whether a given key is affected by an ongoing rehash, if any.">
               <parameters>
                  <c:simple-property name="key" description="Key to check"/>
@@ -85,27 +106,6 @@
                  <c:simple-property name="key" description="Key to locate"/>
               </parameters>
            </operation>
-           <operation name="Activation.resetStatistics" displayName="[Activation] Reset statistics" description="Resets statistics gathered by this component">
-           </operation>
-           <operation name="CacheLoader.resetStatistics" displayName="[CacheLoader] Reset Statistics" description="Resets statistics gathered by this component">
-           </operation>
-           <operation name="Cache.start" displayName="[Cache] Starts cache." description="Starts the cache.">
-           </operation>
-           <operation name="Cache.stop" displayName="[Cache] Stops cache." description="Stops the cache.">
-           </operation>
-           <operation name="RpcManager.resetStatistics" displayName="[RpcManager] Reset statistics" description="Resets statistics gathered by this component">
-           </operation>
-           <operation name="RpcManager.setStatisticsEnabled" displayName="[RpcManager] Enable/disable statistics" description="Enable/disable statistics">
-              <parameters>
-                 <c:simple-property name="enabled" description="Whether statistics should be enabled or disabled (true/false)"/>
-              </parameters>
-           </operation>
-           <operation name="CacheStore.resetStatistics" displayName="[CacheStore] Reset statistics" description="Resets statistics gathered by this component">
-           </operation>
-           <operation name="DeadlockDetectingLockManager.resetStatistics" displayName="[DeadlockDetectingLockManager] Reset statistics" description="Resets statistics gathered by this component">
-           </operation>
-           <operation name="Passivation.resetStatistics" displayName="[Passivation] Reset statistics" description="Resets statistics gathered by this component">
-           </operation>
            <operation name="Transactions.resetStatistics" displayName="[Transactions] Reset Statistics" description="Resets statistics gathered by this component">
            </operation>
            <operation name="Transactions.setStatisticsEnabled" displayName="[Transactions] Enable/disable statistics" description="Enable/disable statistics">
@@ -114,10 +114,14 @@
               </parameters>
            </operation>
 
-           <metric property="Invalidation.StatisticsEnabled" displayName="[Invalidation] Statistics enabled" displayType="detail" units="none" dataType="trait"
-                   description="Statistics enabled" />
-           <metric property="Invalidation.Invalidations" displayName="[Invalidation] Number of invalidations" displayType="detail" units="none" dataType="measurement"
-                   description="Number of invalidations" />
+           <metric property="Activation.Activations" displayName="[Activation] Number of cache entries activated" displayType="detail" units="none" dataType="measurement"
+                   description="Number of activation events" />
+           <metric property="Activation.CacheLoaderLoads" displayName="[Activation] Number of cache store loads" displayType="detail" units="none" dataType="measurement"
+                   description="Number of entries loaded from cache store" />
+           <metric property="Activation.CacheLoaderMisses" displayName="[Activation] Number of cache store load misses" displayType="detail" units="none" dataType="measurement"
+                   description="Number of entries that did not exist in cache store" />
+           <metric property="Passivation.Passivations" displayName="[Passivation] Number of cache passivations" displayType="detail" units="none" dataType="measurement"
+                   description="Number of passivation events" />
            <metric property="Statistics.Stores" displayName="[Statistics] Number of cache puts" displayType="summary" units="none" dataType="measurement"
                    description="number of cache attribute put operations" />
            <metric property="Statistics.Hits" displayName="[Statistics] Number of cache hits" displayType="summary" units="none" dataType="measurement"
@@ -140,22 +144,22 @@
                    description="Number of seconds since cache started" />
            <metric property="Statistics.TimeSinceReset" displayName="[Statistics] Seconds since cache statistics were reset" displayType="summary" units="seconds" dataType="measurement"
                    description="Number of seconds since the cache statistics were last reset" />
-           <metric property="LockManager.ConcurrencyLevel" displayName="[LockManager] Concurrency level" displayType="detail" units="none" dataType="trait"
+           <metric property="DeadlockDetectingLockManager.OverlapWithNotDeadlockAwareLockOwners" displayName="[DeadlockDetectingLockManager] Number of unsolvable deadlock situations" displayType="detail" units="none" dataType="measurement"
+                   description="Number of situtations when we try to determine a deadlock and the other lock owner is e.g. a local tx. In this scenario we cannot run the deadlock detection mechanism" />
+           <metric property="DeadlockDetectingLockManager.LocallyInterruptedTransactions" displayName="[DeadlockDetectingLockManager] Number of interrupted local transactions" displayType="detail" units="none" dataType="measurement"
+                   description="Number of locally originated transactions that were interrupted as a deadlock situation was detected" />
+           <metric property="DeadlockDetectingLockManager.DetectedRemoteDeadlocks" displayName="[DeadlockDetectingLockManager] Number of detected remote deadlocks" displayType="detail" units="none" dataType="measurement"
+                   description="Number of remote deadlocks detected" />
+           <metric property="DeadlockDetectingLockManager.DetectedLocalDeadlocks" displayName="[DeadlockDetectingLockManager] Number of detected local deadlocks" displayType="detail" units="none" dataType="measurement"
+                   description="Number of local detected deadlocks" />
+           <metric property="DeadlockDetectingLockManager.TotalNumberOfDetectedDeadlocks" displayName="[DeadlockDetectingLockManager] Number of total detected deadlocks" displayType="detail" units="none" dataType="measurement"
+                   description="Total number of local detected deadlocks" />
+           <metric property="DeadlockDetectingLockManager.ConcurrencyLevel" displayName="[DeadlockDetectingLockManager] Concurrency level" displayType="detail" units="none" dataType="trait"
                    description="The concurrency level that the MVCC Lock Manager has been configured with." />
-           <metric property="LockManager.NumberOfLocksHeld" displayName="[LockManager] Number of locks held" displayType="detail" units="none" dataType="measurement"
+           <metric property="DeadlockDetectingLockManager.NumberOfLocksHeld" displayName="[DeadlockDetectingLockManager] Number of locks held" displayType="detail" units="none" dataType="measurement"
                    description="The number of exclusive locks that are held." />
-           <metric property="LockManager.NumberOfLocksAvailable" displayName="[LockManager] Number of locks available" displayType="detail" units="none" dataType="measurement"
+           <metric property="DeadlockDetectingLockManager.NumberOfLocksAvailable" displayName="[DeadlockDetectingLockManager] Number of locks available" displayType="detail" units="none" dataType="measurement"
                    description="The number of exclusive locks that are available." />
-           <metric property="DistributionManager.RehashInProgress" displayName="[DistributionManager] Is rehash in progress?" displayType="detail" units="none" dataType="trait"
-                   description="Checks whether the node is involved in a rehash." />
-           <metric property="DistributionManager.JoinComplete" displayName="[DistributionManager] Is join completed?" displayType="detail" units="none" dataType="trait"
-                   description="If true, the node has successfully joined the grid and is considered to hold state.  If false, the join process is still in progress." />
-           <metric property="Activation.Activations" displayName="[Activation] Number of cache entries activated" displayType="detail" units="none" dataType="measurement"
-                   description="Number of activation events" />
-           <metric property="Activation.CacheLoaderLoads" displayName="[Activation] Number of cache store loads" displayType="detail" units="none" dataType="measurement"
-                   description="Number of entries loaded from cache store" />
-           <metric property="Activation.CacheLoaderMisses" displayName="[Activation] Number of cache store load misses" displayType="detail" units="none" dataType="measurement"
-                   description="Number of entries that did not exist in cache store" />
            <metric property="CacheLoader.CacheLoaderLoads" displayName="[CacheLoader] Number of cache store loads" displayType="detail" units="none" dataType="measurement"
                    description="Number of entries loaded from cache store" />
            <metric property="CacheLoader.CacheLoaderMisses" displayName="[CacheLoader] Number of cache store load misses" displayType="detail" units="none" dataType="measurement"
@@ -164,6 +168,8 @@
                    description="Returns the cache name" />
            <metric property="Cache.CacheStatus" displayName="[Cache] Cache status" displayType="summary" units="none" dataType="trait"
                    description="Returns the cache status" />
+           <metric property="CacheStore.CacheLoaderStores" displayName="[CacheStore] Number of cache stores" displayType="detail" units="none" dataType="measurement"
+                   description="number of cache loader stores" />
            <metric property="RpcManager.Address" displayName="[RpcManager] Network address" displayType="summary" units="none" dataType="trait"
                    description="The network address associated with this instance" />
            <metric property="RpcManager.Members" displayName="[RpcManager] Cluster members" displayType="summary" units="none" dataType="trait"
@@ -180,26 +186,20 @@
                    description="Successful replications as a ratio of total replications" />
            <metric property="RpcManager.AverageReplicationTime" displayName="[RpcManager] Average time spent in the transport layer" displayType="summary" units="milliseconds" dataType="measurement"
                    description="The average time spent in the transport layer, in milliseconds" />
-           <metric property="CacheStore.CacheLoaderStores" displayName="[CacheStore] Number of cache stores" displayType="detail" units="none" dataType="measurement"
-                   description="number of cache loader stores" />
-           <metric property="DeadlockDetectingLockManager.OverlapWithNotDeadlockAwareLockOwners" displayName="[DeadlockDetectingLockManager] Number of unsolvable deadlock situations" displayType="detail" units="none" dataType="measurement"
-                   description="Number of situtations when we try to determine a deadlock and the other lock owner is e.g. a local tx. In this scenario we cannot run the deadlock detection mechanism" />
-           <metric property="DeadlockDetectingLockManager.LocallyInterruptedTransactions" displayName="[DeadlockDetectingLockManager] Number of interrupted local transactions" displayType="detail" units="none" dataType="measurement"
-                   description="Number of locally originated transactions that were interrupted as a deadlock situation was detected" />
-           <metric property="DeadlockDetectingLockManager.DetectedRemoteDeadlocks" displayName="[DeadlockDetectingLockManager] Number of detected remote deadlocks" displayType="detail" units="none" dataType="measurement"
-                   description="Number of remote deadlocks detected" />
-           <metric property="DeadlockDetectingLockManager.DetectedLocalDeadlocks" displayName="[DeadlockDetectingLockManager] Number of detected local deadlocks" displayType="detail" units="none" dataType="measurement"
-                   description="Number of local detected deadlocks" />
-           <metric property="DeadlockDetectingLockManager.TotalNumberOfDetectedDeadlocks" displayName="[DeadlockDetectingLockManager] Number of total detected deadlocks" displayType="detail" units="none" dataType="measurement"
-                   description="Total number of local detected deadlocks" />
-           <metric property="DeadlockDetectingLockManager.ConcurrencyLevel" displayName="[DeadlockDetectingLockManager] Concurrency level" displayType="detail" units="none" dataType="trait"
+           <metric property="LockManager.ConcurrencyLevel" displayName="[LockManager] Concurrency level" displayType="detail" units="none" dataType="trait"
                    description="The concurrency level that the MVCC Lock Manager has been configured with." />
-           <metric property="DeadlockDetectingLockManager.NumberOfLocksHeld" displayName="[DeadlockDetectingLockManager] Number of locks held" displayType="detail" units="none" dataType="measurement"
+           <metric property="LockManager.NumberOfLocksHeld" displayName="[LockManager] Number of locks held" displayType="detail" units="none" dataType="measurement"
                    description="The number of exclusive locks that are held." />
-           <metric property="DeadlockDetectingLockManager.NumberOfLocksAvailable" displayName="[DeadlockDetectingLockManager] Number of locks available" displayType="detail" units="none" dataType="measurement"
+           <metric property="LockManager.NumberOfLocksAvailable" displayName="[LockManager] Number of locks available" displayType="detail" units="none" dataType="measurement"
                    description="The number of exclusive locks that are available." />
-           <metric property="Passivation.Passivations" displayName="[Passivation] Number of cache passivations" displayType="detail" units="none" dataType="measurement"
-                   description="Number of passivation events" />
+           <metric property="Invalidation.StatisticsEnabled" displayName="[Invalidation] Statistics enabled" displayType="detail" units="none" dataType="trait"
+                   description="Statistics enabled" />
+           <metric property="Invalidation.Invalidations" displayName="[Invalidation] Number of invalidations" displayType="detail" units="none" dataType="measurement"
+                   description="Number of invalidations" />
+           <metric property="DistributionManager.RehashInProgress" displayName="[DistributionManager] Is rehash in progress?" displayType="detail" units="none" dataType="trait"
+                   description="Checks whether the node is involved in a rehash." />
+           <metric property="DistributionManager.JoinComplete" displayName="[DistributionManager] Is join completed?" displayType="detail" units="none" dataType="trait"
+                   description="If true, the node has successfully joined the grid and is considered to hold state.  If false, the join process is still in progress." />
            <metric property="Transactions.StatisticsEnabled" displayName="[Transactions] Statistics enabled" displayType="detail" units="none" dataType="trait"
                    description="Statistics enabled" />
            <metric property="Transactions.Prepares" displayName="[Transactions] Prepares" displayType="summary" units="none" dataType="measurement"



More information about the infinispan-commits mailing list