[rhq] modules/common modules/enterprise pom.xml
by John Sanda
modules/common/cassandra-ccm/cassandra-ccm-core/pom.xml | 7 -
modules/common/cassandra-ccm/cassandra-ccm-core/src/main/bundle/cassandra/conf/rhq.cassandra.yaml | 63 +++++-----
modules/common/cassandra-ccm/cassandra-ccm-core/src/test/resources/expected.cassandra.yaml | 63 +++++-----
modules/enterprise/server/server-metrics/pom.xml | 1
pom.xml | 4
5 files changed, 76 insertions(+), 62 deletions(-)
New commits:
commit b9223c0300e8ce182afdf46e28162b137d1b6c51
Author: John Sanda <jsanda(a)redhat.com>
Date: Sat Aug 31 13:33:33 2013 -0400
upgrade to C* 1.2.9
diff --git a/modules/common/cassandra-ccm/cassandra-ccm-core/pom.xml b/modules/common/cassandra-ccm/cassandra-ccm-core/pom.xml
index ad2de77..a839fbf 100644
--- a/modules/common/cassandra-ccm/cassandra-ccm-core/pom.xml
+++ b/modules/common/cassandra-ccm/cassandra-ccm-core/pom.xml
@@ -36,11 +36,6 @@
</exclusions>
</dependency>
<dependency>
- <groupId>com.datastax.cassandra</groupId>
- <artifactId>cassandra-driver-core</artifactId>
- <version>${cassandra.driver.version}</version>
- </dependency>
- <dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>${cassandra.jna.version}</version>
@@ -156,7 +151,7 @@
<property name="cassandra.distro.zip"
value="${project.build.outputDirectory}/${cassandra.distro.filename}"/>
<delete file="${cassandra.dir}/lib/lz4-1.1.0.jar"/>
- <delete file="${cassandra.dir}/lib/snappy-java-1.0.4.1.jar"/>
+ <delete file="${cassandra.dir}/lib/snappy-java-1.0.5.jar"/>
<copy file="${settings.localRepository}/org/xerial/snappy/snappy-java/${cassandra.snappy.version}/snappy-java-${cassandra.snappy.version}.jar"
todir="${cassandra.dir}/lib"/>
<copy file="${settings.localRepository}/org/rhq/rhq-cassandra-auth/${project.version}/rhq-cassandra-auth-${project.version}.jar"
diff --git a/modules/common/cassandra-ccm/cassandra-ccm-core/src/main/bundle/cassandra/conf/rhq.cassandra.yaml b/modules/common/cassandra-ccm/cassandra-ccm-core/src/main/bundle/cassandra/conf/rhq.cassandra.yaml
index da09e92..94ff227 100644
--- a/modules/common/cassandra-ccm/cassandra-ccm-core/src/main/bundle/cassandra/conf/rhq.cassandra.yaml
+++ b/modules/common/cassandra-ccm/cassandra-ccm-core/src/main/bundle/cassandra/conf/rhq.cassandra.yaml
@@ -1,4 +1,4 @@
-# Cassandra storage config YAML
+# Cassandra storage config YAML
# NOTE:
# See http://wiki.apache.org/cassandra/StorageConfiguration for
@@ -42,7 +42,11 @@ hinted_handoff_enabled: true
# generated. After it has been dead this long, new hints for it will not be
# created until it has been seen alive and gone down again.
max_hint_window_in_ms: 10800000 # 3 hours
-# throttle in KB's per second, per delivery thread
+# Maximum throttle in KBs per second, per delivery thread. This will be
+# reduced proportionally to the number of nodes in the cluster. (If there
+# are two nodes in the cluster, each delivery thread will use the maximum
+# rate; if there are three, each will throttle to half of the maximum,
+# since we expect two nodes to be delivering hints simultaneously.)
hinted_handoff_throttle_in_kb: 1024
# Number of threads with which to deliver hints;
# Consider increasing this number when you have multi-dc deployments, since
@@ -102,7 +106,9 @@ permissions_validity_in_ms: 2000
# partitioners and token selection.
partitioner: org.apache.cassandra.dht.Murmur3Partitioner
-# directories where Cassandra should store data on disk.
+# Directories where Cassandra should store data on disk. Cassandra
+# will spread data evenly across them, subject to the granularity of
+# the configured compaction strategy.
data_file_directories:
- ${rhq.cassandra.data.dir}
@@ -111,7 +117,7 @@ commitlog_directory: ${rhq.cassandra.commitlog.dir}
# policy for data disk failures:
# stop: shut down gossip and Thrift, leaving the node effectively dead, but
-# still inspectable via JMX.
+# can still be inspected via JMX.
# best_effort: stop using the failed disk and respond to requests based on
# remaining available sstables. This means you WILL see obsolete
# data at CL.ONE!
@@ -123,8 +129,8 @@ disk_failure_policy: stop
# Each key cache hit saves 1 seek and each row cache hit saves 2 seeks at the
# minimum, sometimes more. The key cache is fairly tiny for the amount of
# time it saves, so it's worthwhile to use it at large numbers.
-# The row cache saves even more time, but must store the whole values of
-# its rows, so it is extremely space-intensive. It's best to only use the
+# The row cache saves even more time, but must contain the entire row,
+# so it is extremely space-intensive. It's best to only use the
# row cache if you have hot rows or static rows.
#
# NOTE: if you reduce the size, you may not get you hottest keys loaded on startup.
@@ -177,6 +183,8 @@ row_cache_save_period: 0
# significantly less memory than "live" rows in the JVM, so you can cache
# more rows in a given memory footprint. And storing the cache off-heap
# means you can use smaller heap sizes, reducing the impact of GC pauses.
+# Note however that when a row is requested from the row cache, it must be
+# deserialized into the heap for use.
#
# It is also valid to specify the fully-qualified class name to a class
# that implements org.apache.cassandra.cache.IRowCacheProvider.
@@ -293,7 +301,7 @@ memtable_flush_queue_size: 4
# Whether to, when doing sequential writing, fsync() at intervals in
# order to force the operating system to flush the dirty
# buffers. Enable this to avoid sudden dirty buffer flushing from
-# impacting read latencies. Almost always a good idea on SSD:s; not
+# impacting read latencies. Almost always a good idea on SSDs; not
# necessarily on platters.
trickle_fsync: false
trickle_fsync_interval_in_kb: 10240
@@ -308,9 +316,9 @@ ssl_storage_port: ${rhq.cassandra.ssl.storage.port}
# Address to bind to and tell other Cassandra nodes to connect to. You
# _must_ change this if you want multiple nodes to be able to
# communicate!
-#
+#
# Leaving it blank leaves it up to InetAddress.getLocalHost(). This
-# will always do the Right Thing *if* the node is properly configured
+# will always do the Right Thing _if_ the node is properly configured
# (hostname, name resolution, etc), and the Right Thing is to use the
# address associated with the hostname (it might not be).
#
@@ -333,22 +341,27 @@ internode_authenticator: org.rhq.cassandra.auth.RhqInternodeAuthenticator
start_native_transport: true
# port for the CQL native transport to listen for clients on
native_transport_port: ${rhq.cassandra.native_transport_port}
+# NOTE: native_transport_min_threads is now deprecated and ignored (but kept
+# in the 1.2.x series for compatibility sake).
# The minimum and maximum threads for handling requests when the native
-# transport is used. The meaning is those is similar to the one of
-# rpc_min_threads and rpc_max_threads, though the default differ slightly and
-# are the ones below:
+# transport is used. They are similar to rpc_min_threads and rpc_max_threads,
+# though the defaults differ slightly.
# native_transport_min_threads: 16
-native_transport_max_threads: ${rhq.cassandra.native_transport_max_threads}
-
+# native_transport_max_threads: 128
# Whether to start the thrift rpc server.
start_rpc: ${rhq.cassandra.start_rpc}
-# The address to bind the Thrift RPC service to -- clients connect
-# here. Unlike ListenAddress above, you *can* specify 0.0.0.0 here if
-# you want Thrift to listen on all interfaces.
+
+# The address to bind the Thrift RPC service and native transport
+# server -- clients connect here.
#
# Leaving this blank has the same effect it does for ListenAddress,
# (i.e. it will be based on the configured hostname of the node).
+#
+# Note that unlike ListenAddress above, it is allowed to specify 0.0.0.0
+# here if you want to listen on all interfaces but is not best practice
+# as it is known to confuse the node auto-discovery features of some
+# client drivers.
rpc_address: ${rpc.address}
# port for Thrift to listen for clients on
rpc_port: ${rhq.cassandra.rpc_port}
@@ -359,7 +372,7 @@ rpc_keepalive: true
# Cassandra provides three out-of-the-box options for the RPC Server:
#
# sync -> One thread per thrift connection. For a very large number of clients, memory
-# will be your limiting factor. On a 64 bit JVM, 128KB is the minimum stack size
+# will be your limiting factor. On a 64 bit JVM, 180KB is the minimum stack size
# per thread, and that will correspond to your use of virtual memory (but physical memory
# may be limited depending on use of stack space).
#
@@ -381,7 +394,7 @@ rpc_server_type: sync
# RPC thread pool dictates how many concurrent requests are possible (but if you are using the sync
# RPC server, it also dictates the number of clients that can be connected at all).
#
-# The default is unlimited and thus provide no protection against clients overwhelming the server. You are
+# The default is unlimited and thus provides no protection against clients overwhelming the server. You are
# encouraged to set a maximum that makes sense for you in production, but do keep in mind that
# rpc_max_threads represents the maximum number of client requests this server may execute concurrently.
#
@@ -404,16 +417,12 @@ rpc_server_type: sync
# internode_send_buff_size_in_bytes:
# internode_recv_buff_size_in_bytes:
-# Frame size for thrift (maximum field length).
+# Frame size for thrift (maximum message length).
thrift_framed_transport_size_in_mb: 15
-# The max length of a thrift message, including all fields and
-# internal thrift overhead.
-thrift_max_message_length_in_mb: 16
-
# Set to true to have Cassandra create a hard link to each sstable
# flushed or streamed locally in a backups/ subdirectory of the
-# Keyspace data. Removing these links is the operator's
+# keyspace data. Removing these links is the operator's
# responsibility.
incremental_backups: false
@@ -550,9 +559,9 @@ cross_node_timeout: false
# deployment conventions (as it did Facebook's), this is best used
# as an example of writing a custom Snitch class.
# - Ec2Snitch:
-# Appropriate for EC2 deployments in a single Region. Loads Region
+# Appropriate for EC2 deployments in a single Region. Loads Region
# and Availability Zone information from the EC2 API. The Region is
-# treated as the Datacenter, and the Availability Zone as the rack.
+# treated as the datacenter, and the Availability Zone as the rack.
# Only private IPs are used, so this will not work across multiple
# Regions.
# - Ec2MultiRegionSnitch:
diff --git a/modules/common/cassandra-ccm/cassandra-ccm-core/src/test/resources/expected.cassandra.yaml b/modules/common/cassandra-ccm/cassandra-ccm-core/src/test/resources/expected.cassandra.yaml
index b9e490a..1aa6f87 100644
--- a/modules/common/cassandra-ccm/cassandra-ccm-core/src/test/resources/expected.cassandra.yaml
+++ b/modules/common/cassandra-ccm/cassandra-ccm-core/src/test/resources/expected.cassandra.yaml
@@ -1,4 +1,4 @@
-# Cassandra storage config YAML
+# Cassandra storage config YAML
# NOTE:
# See http://wiki.apache.org/cassandra/StorageConfiguration for
@@ -42,7 +42,11 @@ hinted_handoff_enabled: true
# generated. After it has been dead this long, new hints for it will not be
# created until it has been seen alive and gone down again.
max_hint_window_in_ms: 10800000 # 3 hours
-# throttle in KB's per second, per delivery thread
+# Maximum throttle in KBs per second, per delivery thread. This will be
+# reduced proportionally to the number of nodes in the cluster. (If there
+# are two nodes in the cluster, each delivery thread will use the maximum
+# rate; if there are three, each will throttle to half of the maximum,
+# since we expect two nodes to be delivering hints simultaneously.)
hinted_handoff_throttle_in_kb: 1024
# Number of threads with which to deliver hints;
# Consider increasing this number when you have multi-dc deployments, since
@@ -102,7 +106,9 @@ permissions_validity_in_ms: 2000
# partitioners and token selection.
partitioner: org.apache.cassandra.dht.Murmur3Partitioner
-# directories where Cassandra should store data on disk.
+# Directories where Cassandra should store data on disk. Cassandra
+# will spread data evenly across them, subject to the granularity of
+# the configured compaction strategy.
data_file_directories:
- /var/lib/rhq/storage/data
@@ -111,7 +117,7 @@ commitlog_directory: /var/lib/rhq/storage/commit_log
# policy for data disk failures:
# stop: shut down gossip and Thrift, leaving the node effectively dead, but
-# still inspectable via JMX.
+# can still be inspected via JMX.
# best_effort: stop using the failed disk and respond to requests based on
# remaining available sstables. This means you WILL see obsolete
# data at CL.ONE!
@@ -123,8 +129,8 @@ disk_failure_policy: stop
# Each key cache hit saves 1 seek and each row cache hit saves 2 seeks at the
# minimum, sometimes more. The key cache is fairly tiny for the amount of
# time it saves, so it's worthwhile to use it at large numbers.
-# The row cache saves even more time, but must store the whole values of
-# its rows, so it is extremely space-intensive. It's best to only use the
+# The row cache saves even more time, but must contain the entire row,
+# so it is extremely space-intensive. It's best to only use the
# row cache if you have hot rows or static rows.
#
# NOTE: if you reduce the size, you may not get you hottest keys loaded on startup.
@@ -177,6 +183,8 @@ row_cache_save_period: 0
# significantly less memory than "live" rows in the JVM, so you can cache
# more rows in a given memory footprint. And storing the cache off-heap
# means you can use smaller heap sizes, reducing the impact of GC pauses.
+# Note however that when a row is requested from the row cache, it must be
+# deserialized into the heap for use.
#
# It is also valid to specify the fully-qualified class name to a class
# that implements org.apache.cassandra.cache.IRowCacheProvider.
@@ -293,7 +301,7 @@ memtable_flush_queue_size: 4
# Whether to, when doing sequential writing, fsync() at intervals in
# order to force the operating system to flush the dirty
# buffers. Enable this to avoid sudden dirty buffer flushing from
-# impacting read latencies. Almost always a good idea on SSD:s; not
+# impacting read latencies. Almost always a good idea on SSDs; not
# necessarily on platters.
trickle_fsync: false
trickle_fsync_interval_in_kb: 10240
@@ -308,9 +316,9 @@ ssl_storage_port: 7001
# Address to bind to and tell other Cassandra nodes to connect to. You
# _must_ change this if you want multiple nodes to be able to
# communicate!
-#
+#
# Leaving it blank leaves it up to InetAddress.getLocalHost(). This
-# will always do the Right Thing *if* the node is properly configured
+# will always do the Right Thing _if_ the node is properly configured
# (hostname, name resolution, etc), and the Right Thing is to use the
# address associated with the hostname (it might not be).
#
@@ -333,22 +341,27 @@ internode_authenticator: org.rhq.cassandra.auth.RhqInternodeAuthenticator
start_native_transport: true
# port for the CQL native transport to listen for clients on
native_transport_port: 9042
+# NOTE: native_transport_min_threads is now deprecated and ignored (but kept
+# in the 1.2.x series for compatibility sake).
# The minimum and maximum threads for handling requests when the native
-# transport is used. The meaning is those is similar to the one of
-# rpc_min_threads and rpc_max_threads, though the default differ slightly and
-# are the ones below:
+# transport is used. They are similar to rpc_min_threads and rpc_max_threads,
+# though the defaults differ slightly.
# native_transport_min_threads: 16
-native_transport_max_threads: 64
-
+# native_transport_max_threads: 128
# Whether to start the thrift rpc server.
start_rpc: false
-# The address to bind the Thrift RPC service to -- clients connect
-# here. Unlike ListenAddress above, you *can* specify 0.0.0.0 here if
-# you want Thrift to listen on all interfaces.
+
+# The address to bind the Thrift RPC service and native transport
+# server -- clients connect here.
#
# Leaving this blank has the same effect it does for ListenAddress,
# (i.e. it will be based on the configured hostname of the node).
+#
+# Note that unlike ListenAddress above, it is allowed to specify 0.0.0.0
+# here if you want to listen on all interfaces but is not best practice
+# as it is known to confuse the node auto-discovery features of some
+# client drivers.
rpc_address: localhost
# port for Thrift to listen for clients on
rpc_port: 9160
@@ -359,7 +372,7 @@ rpc_keepalive: true
# Cassandra provides three out-of-the-box options for the RPC Server:
#
# sync -> One thread per thrift connection. For a very large number of clients, memory
-# will be your limiting factor. On a 64 bit JVM, 128KB is the minimum stack size
+# will be your limiting factor. On a 64 bit JVM, 180KB is the minimum stack size
# per thread, and that will correspond to your use of virtual memory (but physical memory
# may be limited depending on use of stack space).
#
@@ -381,7 +394,7 @@ rpc_server_type: sync
# RPC thread pool dictates how many concurrent requests are possible (but if you are using the sync
# RPC server, it also dictates the number of clients that can be connected at all).
#
-# The default is unlimited and thus provide no protection against clients overwhelming the server. You are
+# The default is unlimited and thus provides no protection against clients overwhelming the server. You are
# encouraged to set a maximum that makes sense for you in production, but do keep in mind that
# rpc_max_threads represents the maximum number of client requests this server may execute concurrently.
#
@@ -404,16 +417,12 @@ rpc_server_type: sync
# internode_send_buff_size_in_bytes:
# internode_recv_buff_size_in_bytes:
-# Frame size for thrift (maximum field length).
+# Frame size for thrift (maximum message length).
thrift_framed_transport_size_in_mb: 15
-# The max length of a thrift message, including all fields and
-# internal thrift overhead.
-thrift_max_message_length_in_mb: 16
-
# Set to true to have Cassandra create a hard link to each sstable
# flushed or streamed locally in a backups/ subdirectory of the
-# Keyspace data. Removing these links is the operator's
+# keyspace data. Removing these links is the operator's
# responsibility.
incremental_backups: false
@@ -550,9 +559,9 @@ cross_node_timeout: false
# deployment conventions (as it did Facebook's), this is best used
# as an example of writing a custom Snitch class.
# - Ec2Snitch:
-# Appropriate for EC2 deployments in a single Region. Loads Region
+# Appropriate for EC2 deployments in a single Region. Loads Region
# and Availability Zone information from the EC2 API. The Region is
-# treated as the Datacenter, and the Availability Zone as the rack.
+# treated as the datacenter, and the Availability Zone as the rack.
# Only private IPs are used, so this will not work across multiple
# Regions.
# - Ec2MultiRegionSnitch:
diff --git a/modules/enterprise/server/server-metrics/pom.xml b/modules/enterprise/server/server-metrics/pom.xml
index edff3ff..b741785 100644
--- a/modules/enterprise/server/server-metrics/pom.xml
+++ b/modules/enterprise/server/server-metrics/pom.xml
@@ -61,6 +61,7 @@
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-core</artifactId>
<version>${cassandra.driver.version}</version>
+ <scope>provided</scope>
</dependency>
<dependency>
diff --git a/pom.xml b/pom.xml
index 17cf09f..0505929 100644
--- a/pom.xml
+++ b/pom.xml
@@ -179,9 +179,9 @@
<el.version>1.0</el.version>
<!-- cassandra dependency versions -->
- <cassandra.version>1.2.4</cassandra.version>
+ <cassandra.version>1.2.9</cassandra.version>
<cassandra.thrift.version>0.7.0</cassandra.thrift.version>
- <cassandra.driver.version>1.0.2-rhq-1.2.4</cassandra.driver.version>
+ <cassandra.driver.version>1.0.2</cassandra.driver.version>
<cassandra.driver.netty.version>3.6.3.Final</cassandra.driver.netty.version>
<cassandra.snappy.version>1.0.4.1-rhq-p1</cassandra.snappy.version>
<cassandra.snakeyaml.version>1.6</cassandra.snakeyaml.version>
10 years, 3 months
[rhq] 2 commits - modules/common modules/core modules/enterprise modules/plugins
by John Sanda
modules/common/cassandra-installer/pom.xml | 5
modules/core/dbutils/pom.xml | 2
modules/core/dbutils/src/main/scripts/dbsetup/sysconfig-data.xml | 6
modules/core/dbutils/src/main/scripts/dbupgrade/db-upgrade.xml | 14
modules/enterprise/server/appserver/src/main/scripts/rhq-container.build.xml | 3
modules/enterprise/server/installer/src/main/java/org/rhq/enterprise/server/installer/InstallerServiceImpl.java | 2
modules/enterprise/server/installer/src/main/java/org/rhq/enterprise/server/installer/ServerInstallUtil.java | 69 ++++
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/StorageNodeManagerBean.java | 36 --
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/StorageNodeManagerLocal.java | 3
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/storage/StorageNodeOperationsHandlerBean.java | 143 +++++++---
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/storage/StorageNodeOperationsHandlerLocal.java | 4
modules/plugins/cassandra/src/main/java/org/rhq/plugins/cassandra/CassandraNodeDiscoveryComponent.java | 5
modules/plugins/rhq-storage/src/main/resources/META-INF/rhq-plugin.xml | 4
13 files changed, 209 insertions(+), 87 deletions(-)
New commits:
commit 9b3c7ffa8ce5232e96326ebee4f5c4ac93bc3d02
Author: John Sanda <jsanda(a)redhat.com>
Date: Sat Aug 31 12:29:25 2013 -0400
more fixes/improvements for storage node (un)deployment
There was a deadlock issue that could manifest itself in the
performAddNodeMaintenanceIfNecessary and in the
performRemoveNodeMaintenanceIfNecessary methods when an occurred. Both methods
had nested transactions in which both the outer and inner transactions tried to
update the same storage node entity. The transactions aren no longer nested.
This commit also adds support for continuing the (un)deployment in situations
where the event notifications for the node joining/leaving the cluster are
missed.
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/storage/StorageNodeOperationsHandlerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/storage/StorageNodeOperationsHandlerBean.java
index 52e85ab..44c0e9d 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/storage/StorageNodeOperationsHandlerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/storage/StorageNodeOperationsHandlerBean.java
@@ -1,6 +1,7 @@
package org.rhq.enterprise.server.storage;
import java.net.InetAddress;
+import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;
@@ -10,8 +11,11 @@ import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.persistence.EntityManager;
+import javax.persistence.EntityNotFoundException;
import javax.persistence.PersistenceContext;
+import com.datastax.driver.core.Host;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.joda.time.Hours;
@@ -186,20 +190,21 @@ public class StorageNodeOperationsHandlerBean implements StorageNodeOperationsHa
}
}
- @Override
+ @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
public void performAddNodeMaintenanceIfNecessary(InetAddress storageNodeAddress) {
try {
- StorageNode storageNode = entityManager.createNamedQuery(StorageNode.QUERY_FIND_BY_ADDRESS,
- StorageNode.class).setParameter("address", storageNodeAddress.getHostAddress()).getSingleResult();
+ StorageNode storageNode = storageNodeManager.findStorageNodeByAddress(storageNodeAddress);
if (storageNode.getOperationMode() == StorageNode.OperationMode.BOOTSTRAP) {
// TODO need to add support for HA deployments
// If multiple RHQ servers are running, they will all receive the event
// notification that the node is up and will all wind up calling this method.
- storageNode = storageNodeOperationsHandler.setMode(storageNode, StorageNode.OperationMode.ADD_MAINTENANCE);
- performAddNodeMaintenance(subjectManager.getOverlord(), storageNode);
- } else {
- log.info(storageNode + " has already been bootstrapped. Skipping add node maintenance.");
+ // We can probably handle this with optimistic locking, adding a version field
+ // to the StorageNode class. Then only one writer would succeed in updating
+ // the operation mode.
+ storageNode = storageNodeOperationsHandler.setMode(storageNode,
+ StorageNode.OperationMode.ADD_MAINTENANCE);
+ storageNodeOperationsHandler.performAddMaintenance(subjectManager.getOverlord(), storageNode);
}
} catch (Exception e) {
String msg = "Aborting storage node deployment due to unexpected error while performing add node " +
@@ -210,19 +215,10 @@ public class StorageNodeOperationsHandlerBean implements StorageNodeOperationsHa
}
@Override
+ @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
public void performAddNodeMaintenance(Subject subject, StorageNode storageNode) {
try {
- List<StorageNode> clusterNodes = entityManager.createNamedQuery(StorageNode.QUERY_FIND_ALL_BY_MODE,
- StorageNode.class).setParameter("operationMode", StorageNode.OperationMode.NORMAL)
- .getResultList();
- for (StorageNode node : clusterNodes) {
- node.setMaintenancePending(true);
- }
- storageNode.setMaintenancePending(true);
- clusterNodes.add(storageNode);
- boolean runRepair = updateSchemaIfNecessary(clusterNodes.size() - 1, clusterNodes.size());
- performAddNodeMaintenance(subject, storageNode, runRepair, createPropertyListOfAddresses(SEEDS_LIST,
- clusterNodes));
+ storageNodeOperationsHandler.performAddMaintenance(subject, storageNode);
} catch (Exception e) {
String msg = "Aborting storage node deployment due to unexpected error while performing add node " +
"maintenance.";
@@ -231,6 +227,21 @@ public class StorageNodeOperationsHandlerBean implements StorageNodeOperationsHa
}
}
+ @Override
+ public void performAddMaintenance(Subject subject, StorageNode storageNode) {
+ List<StorageNode> clusterNodes = entityManager.createNamedQuery(StorageNode.QUERY_FIND_ALL_BY_MODE,
+ StorageNode.class).setParameter("operationMode", StorageNode.OperationMode.NORMAL)
+ .getResultList();
+ for (StorageNode node : clusterNodes) {
+ node.setMaintenancePending(true);
+ }
+ storageNode.setMaintenancePending(true);
+ clusterNodes.add(storageNode);
+ boolean runRepair = updateSchemaIfNecessary(clusterNodes.size() - 1, clusterNodes.size());
+ performAddNodeMaintenance(subject, storageNode, runRepair, createPropertyListOfAddresses(SEEDS_LIST,
+ clusterNodes));
+ }
+
private void performAddNodeMaintenance(Subject subject, StorageNode storageNode, boolean runRepair,
PropertyList seedsList) {
if (log.isInfoEnabled()) {
@@ -246,18 +257,21 @@ public class StorageNodeOperationsHandlerBean implements StorageNodeOperationsHa
}
@Override
+ @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
public void performRemoveNodeMaintenanceIfNecessary(InetAddress storageNodeAddress) {
try {
- StorageNode storageNode = entityManager.createNamedQuery(StorageNode.QUERY_FIND_BY_ADDRESS,
- StorageNode.class).setParameter("address", storageNodeAddress.getHostAddress()).getSingleResult();
+ StorageNode storageNode = storageNodeManager.findStorageNodeByAddress(storageNodeAddress);
if (storageNode.getOperationMode() == StorageNode.OperationMode.DECOMMISSION) {
// TODO need to add support for HA deployments
// If multiple RHQ servers are running, they will all receive the event
// notification that the node is up and will all wind up calling this method.
+ // We can probably handle this with optimistic locking, adding a version field
+ // to the StorageNode class. Then only one writer would succeed in updating
+ // the operation mode.
storageNode = storageNodeOperationsHandler.setMode(storageNode,
StorageNode.OperationMode.REMOVE_MAINTENANCE);
- performRemoveNodeMaintenance(subjectManager.getOverlord(), storageNode);
+ storageNodeOperationsHandler.performRemoveMaintenance(subjectManager.getOverlord(), storageNode);
} else {
log.info("Remove node maintenance has already been run for " + storageNode);
}
@@ -270,17 +284,10 @@ public class StorageNodeOperationsHandlerBean implements StorageNodeOperationsHa
}
@Override
+ @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
public void performRemoveNodeMaintenance(Subject subject, StorageNode storageNode) {
try {
- List<StorageNode> clusterNodes = entityManager.createNamedQuery(StorageNode.QUERY_FIND_ALL_BY_MODE,
- StorageNode.class).setParameter("operationMode", StorageNode.OperationMode.NORMAL)
- .getResultList();
- for (StorageNode node : clusterNodes) {
- node.setMaintenancePending(true);
- }
- boolean runRepair = storageNode.isMaintenancePending();
- performRemoveNodeMaintenance(subject, clusterNodes.get(0), runRepair,
- createPropertyListOfAddresses(SEEDS_LIST, clusterNodes));
+ storageNodeOperationsHandler.performRemoveMaintenance(subject, storageNode);
} catch (Exception e) {
String msg = "Aborting undeployment due to unexpected error while performing remove node maintenance.";
log.error(msg, e);
@@ -288,6 +295,19 @@ public class StorageNodeOperationsHandlerBean implements StorageNodeOperationsHa
}
}
+ @Override
+ public void performRemoveMaintenance(Subject subject, StorageNode storageNode) {
+ List<StorageNode> clusterNodes = entityManager.createNamedQuery(StorageNode.QUERY_FIND_ALL_BY_MODE,
+ StorageNode.class).setParameter("operationMode", StorageNode.OperationMode.NORMAL)
+ .getResultList();
+ for (StorageNode node : clusterNodes) {
+ node.setMaintenancePending(true);
+ }
+ boolean runRepair = storageNode.isMaintenancePending();
+ performRemoveNodeMaintenance(subject, clusterNodes.get(0), runRepair,
+ createPropertyListOfAddresses(SEEDS_LIST, clusterNodes));
+ }
+
private void performRemoveNodeMaintenance(Subject subject, StorageNode storageNode, boolean runRepair,
PropertyList seedsList) {
if (log.isInfoEnabled()) {
@@ -470,8 +490,31 @@ public class StorageNodeOperationsHandlerBean implements StorageNodeOperationsHa
deploymentOperationFailed(newStorageNode, resourceOperationHistory);
return;
default: // SUCCESS
- // Nothing to do because we wait for the C* driver to notify us that the
- // storage node has joined the cluster before we proceed with the work flow.
+ try {
+ log.info("The prepare for bootstrap operation completed successfully for " + newStorageNode);
+ // 30 seconds is more than a sufficient amount of time to wait for the
+ // event notification from storage session especially considering that
+ // nodes gossip every second.
+ Thread.sleep(1000 * 30);
+ entityManager.refresh(newStorageNode);
+ if (newStorageNode.getOperationMode() == StorageNode.OperationMode.BOOTSTRAP) {
+ InetAddress address = InetAddress.getByName(newStorageNode.getAddress());
+ if (isPartOfCluster(address)) {
+ log.warn("We have missed the event notification about " + newStorageNode + " joining the " +
+ "cluster. The next phase of deployment will be started.");
+ storageNodeOperationsHandler.performAddNodeMaintenanceIfNecessary(address);
+ } else {
+ newStorageNode.setErrorMessage("The prepare for bootstrap operation completed " +
+ "successfully but it appears that " + newStorageNode + " is not yet part of the " +
+ "ring.");
+ }
+ }
+ } catch (InterruptedException e) {
+ throw new RuntimeException("Interrupted while waiting to verify that " + newStorageNode +
+ " has joined the cluster", e);
+ } catch (UnknownHostException e) {
+ throw new RuntimeException("Failed to parse address for " + newStorageNode, e);
+ }
}
}
@@ -630,6 +673,32 @@ public class StorageNodeOperationsHandlerBean implements StorageNodeOperationsHa
break;
default: // SUCCESS
log.info("Successfully decommissioned " + storageNode);
+ try {
+ // 30 seconds is more than a sufficient amount of time to wait for the
+ // event notification from storage session especially considering that
+ // nodes gossip every second.
+ Thread.sleep(1000 * 30);
+ entityManager.refresh(storageNode);
+ if (storageNode.getOperationMode() == StorageNode.OperationMode.DECOMMISSION) {
+ InetAddress address = InetAddress.getByName(storageNode.getAddress());
+ if (isPartOfCluster(address)) {
+ storageNode.setErrorMessage("The decommission operation completed successfully but it " +
+ "appears that " + storageNode + " is still part of ring.");
+ } else {
+ log.warn("We have missed the event notification about " + storageNode + " leaving the " +
+ "cluster. The next phase of undeployment will be started.");
+ storageNodeOperationsHandler.performRemoveNodeMaintenanceIfNecessary(address);
+ }
+ }
+ } catch (EntityNotFoundException e) {
+ // We can hit this if the storage node entity has already been deleted
+ // from the database. It can be ignored.
+ } catch (InterruptedException e) {
+ throw new RuntimeException("Interrupted while waiting to verify that " + storageNode +
+ " has been decommissioned and removed from the cluster", e);
+ } catch (UnknownHostException e) {
+ throw new RuntimeException("Failed to parse address for " + storageNode, e);
+ }
}
}
@@ -900,4 +969,14 @@ public class StorageNodeOperationsHandlerBean implements StorageNodeOperationsHa
return list;
}
+ private boolean isPartOfCluster(InetAddress address) {
+ StorageSession session = storageClientManager.getSession();
+ for (Host host : session.getCluster().getMetadata().getAllHosts()) {
+ if (host.getAddress().equals(address)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
}
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/storage/StorageNodeOperationsHandlerLocal.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/storage/StorageNodeOperationsHandlerLocal.java
index c04de18..b968709 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/storage/StorageNodeOperationsHandlerLocal.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/storage/StorageNodeOperationsHandlerLocal.java
@@ -42,6 +42,8 @@ public interface StorageNodeOperationsHandlerLocal {
void performAddNodeMaintenance(Subject subject, StorageNode storageNode);
+ void performAddMaintenance(Subject subject, StorageNode storageNode);
+
void uninstall(Subject subject, StorageNode storageNode);
void detachFromResource(StorageNode storageNode);
@@ -52,6 +54,8 @@ public interface StorageNodeOperationsHandlerLocal {
void performRemoveNodeMaintenance(Subject subject, StorageNode storageNode);
+ void performRemoveMaintenance(Subject subject, StorageNode storageNode);
+
void runRepair(Subject subject, List<StorageNode> clusterNodes);
void handleRepair(ResourceOperationHistory operationHistory);
commit 4942a69aa71fbe2949361d2dc5b3a05a11583c16
Author: John Sanda <jsanda(a)redhat.com>
Date: Fri Aug 30 16:43:41 2013 -0400
initialze storage cluster settings at install time
The storage installer now also adds the gossip port to rhq-server.properties.
The server installer now initializes the cluster settings, namely the cql and
gossip ports. This was previously done in server code when the first storage
node is imported into inventory. This simplifies things. We are able to remove
the conditional logic for initializing the cluster settings. And we no longer
need to store the cql and gossip ports in the storage node's plugin
configuration.
diff --git a/modules/common/cassandra-installer/pom.xml b/modules/common/cassandra-installer/pom.xml
index 4c737fc..8f67575 100644
--- a/modules/common/cassandra-installer/pom.xml
+++ b/modules/common/cassandra-installer/pom.xml
@@ -101,6 +101,11 @@
<version>${project.version}</version>
</artifactItem>
<artifactItem>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>rhq-cassandra-util</artifactId>
+ <version>${project.version}</version>
+ </artifactItem>
+ <artifactItem>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
<version>${cassandra.snakeyaml.version}</version>
diff --git a/modules/core/dbutils/pom.xml b/modules/core/dbutils/pom.xml
index 44d73e8..7a33a06 100644
--- a/modules/core/dbutils/pom.xml
+++ b/modules/core/dbutils/pom.xml
@@ -17,7 +17,7 @@
<description>Database schema setup, upgrade and other utilities</description>
<properties>
- <db.schema.version>2.139</db.schema.version>
+ <db.schema.version>2.140</db.schema.version>
<rhq.ds.type-mapping>${rhq.test.ds.type-mapping}</rhq.ds.type-mapping>
<rhq.ds.server-name>${rhq.test.ds.server-name}</rhq.ds.server-name>
<rhq.ds.db-name>${rhq.test.ds.db-name}</rhq.ds.db-name>
diff --git a/modules/core/dbutils/src/main/scripts/dbsetup/sysconfig-data.xml b/modules/core/dbutils/src/main/scripts/dbsetup/sysconfig-data.xml
index a225833..c6da7d2 100644
--- a/modules/core/dbutils/src/main/scripts/dbsetup/sysconfig-data.xml
+++ b/modules/core/dbutils/src/main/scripts/dbsetup/sysconfig-data.xml
@@ -142,6 +142,12 @@
<data ID="60" PROPERTY_KEY="STORAGE_AUTOMATIC_DEPLOYMENT"
PROPERTY_VALUE="true" DEFAULT_PROPERTY_VALUE="true"
FREAD_ONLY="TRUE"/>
+
+ <!-- STORAGE_CQL_PORT and STORAGE_GOSSIP_PORT will get updated by the installer -->
+ <data ID="61" PROPERTY_KEY="STORAGE_CQL_PORT" FREAD_ONLY="TRUE"/>
+
+ <data ID="62" PROPERTY_KEY="STORAGE_GOSSIP_PORT" FREAD_ONLY="TRUE"/>
+
</table>
</dbsetup>
diff --git a/modules/core/dbutils/src/main/scripts/dbupgrade/db-upgrade.xml b/modules/core/dbutils/src/main/scripts/dbupgrade/db-upgrade.xml
index 543f857..2a04ea4 100644
--- a/modules/core/dbutils/src/main/scripts/dbupgrade/db-upgrade.xml
+++ b/modules/core/dbutils/src/main/scripts/dbupgrade/db-upgrade.xml
@@ -2228,6 +2228,20 @@
</schema-directSQL>
</schemaSpec>
+ <schemaSpec version="2.140">
+ <schema-directSQL>
+ <statement desc="Adding default storage cql port">
+ INSERT INTO rhq_system_config (id, property_key, property_value, default_property_value, fread_only)
+ VALUES (61, 'STORAGE_CQL_PORT', null, null, true)
+ </statement>
+ </schema-directSQL>
+ <schema-directSQL>
+ <statement desc="Adding default storage gossip port">
+ INSERT INTO rhq_system_config (id, property_key, property_value, default_property_value, fread_only)
+ VALUES (62, 'STORAGE_GOSSIP_PORT', null, null, true)
+ </statement>
+ </schema-directSQL>
+ </schemaSpec>
</dbupgrade>
</target>
</project>
diff --git a/modules/enterprise/server/appserver/src/main/scripts/rhq-container.build.xml b/modules/enterprise/server/appserver/src/main/scripts/rhq-container.build.xml
index 2bc16a7..2bda549 100644
--- a/modules/enterprise/server/appserver/src/main/scripts/rhq-container.build.xml
+++ b/modules/enterprise/server/appserver/src/main/scripts/rhq-container.build.xml
@@ -694,7 +694,8 @@ rhq.storage.nodes=
# Both properties are required.
#
rhq.storage.cql-port=${rhq.cassandra.native-transport-port}
-rhq.storage.gossip-port=${rhq.cassandra.storage-port}
+rhq.storage.gossip-port=${rhq.cassandra.storage.port}
+}
# If enabled data sent to and from storage nodes will be compressed using
# snappy (https://code.google.com/p/snappy) compression. Note that this is an
diff --git a/modules/enterprise/server/installer/src/main/java/org/rhq/enterprise/server/installer/InstallerServiceImpl.java b/modules/enterprise/server/installer/src/main/java/org/rhq/enterprise/server/installer/InstallerServiceImpl.java
index 03a34cb..caf8aa5 100644
--- a/modules/enterprise/server/installer/src/main/java/org/rhq/enterprise/server/installer/InstallerServiceImpl.java
+++ b/modules/enterprise/server/installer/src/main/java/org/rhq/enterprise/server/installer/InstallerServiceImpl.java
@@ -502,9 +502,9 @@ public class InstallerServiceImpl implements InstallerService {
// ensure the server info is up to date and stored in the DB
ServerInstallUtil.storeServerDetails(serverProperties, clearTextDbPassword, serverDetails);
-
ServerInstallUtil.persistStorageNodesIfNecessary(serverProperties, clearTextDbPassword,
parseNodeInformation(serverProperties));
+ ServerInstallUtil.persistStorageClusterSettingsIfNecessary(serverProperties, clearTextDbPassword);
}
@Override
diff --git a/modules/enterprise/server/installer/src/main/java/org/rhq/enterprise/server/installer/ServerInstallUtil.java b/modules/enterprise/server/installer/src/main/java/org/rhq/enterprise/server/installer/ServerInstallUtil.java
index 8900d8a..49ecd60 100644
--- a/modules/enterprise/server/installer/src/main/java/org/rhq/enterprise/server/installer/ServerInstallUtil.java
+++ b/modules/enterprise/server/installer/src/main/java/org/rhq/enterprise/server/installer/ServerInstallUtil.java
@@ -918,7 +918,7 @@ public class ServerInstallUtil {
Connection connection = null;
Statement queryStatement = null;
ResultSet resultSet = null;
- PreparedStatement insertStatement = null;
+ PreparedStatement insertStorageNode = null;
try {
String dbUrl = serverProperties.get(ServerProperties.PROP_DATABASE_CONNECTION_URL);
@@ -941,21 +941,21 @@ public class ServerInstallUtil {
try {
LOG.info("Persisting to database new storage nodes for values specified in server configuration property [rhq.storage.nodes]");
- insertStatement = connection.prepareStatement(
+ insertStorageNode = connection.prepareStatement(
"INSERT INTO rhq_storage_node (id, address, cql_port, operation_mode, ctime, mtime) " +
"VALUES (?, ?, ?, ?, ?, ?)"
);
int id = 1001;
for (StorageNode storageNode : storageNodes) {
- insertStatement.setInt(1, id);
- insertStatement.setString(2, storageNode.getAddress());
- insertStatement.setInt(3, storageNode.getCqlPort());
- insertStatement.setString(4, StorageNode.OperationMode.INSTALLED.toString());
- insertStatement.setLong(5, System.currentTimeMillis());
- insertStatement.setLong(6, System.currentTimeMillis());
-
- insertStatement.executeUpdate();
+ insertStorageNode.setInt(1, id);
+ insertStorageNode.setString(2, storageNode.getAddress());
+ insertStorageNode.setInt(3, storageNode.getCqlPort());
+ insertStorageNode.setString(4, StorageNode.OperationMode.INSTALLED.toString());
+ insertStorageNode.setLong(5, System.currentTimeMillis());
+ insertStorageNode.setLong(6, System.currentTimeMillis());
+
+ insertStorageNode.executeUpdate();
id += 1;
}
@@ -974,7 +974,54 @@ public class ServerInstallUtil {
if (db != null) {
db.closeResultSet(resultSet);
db.closeStatement(queryStatement);
- db.closeStatement(insertStatement);
+ db.closeStatement(insertStorageNode);
+ db.closeConnection(connection);
+ }
+ }
+ }
+
+ public static void persistStorageClusterSettingsIfNecessary(HashMap<String, String> serverProperties,
+ String password) throws Exception {
+ DatabaseType db = null;
+ Connection connection = null;
+ PreparedStatement updateClusterSetting = null;
+
+ try {
+ String dbUrl = serverProperties.get(ServerProperties.PROP_DATABASE_CONNECTION_URL);
+ String userName = serverProperties.get(ServerProperties.PROP_DATABASE_USERNAME);
+ connection = getDatabaseConnection(dbUrl, userName, password);
+ db = DatabaseTypeFactory.getDatabaseType(connection);
+
+ if (!(db instanceof PostgresqlDatabaseType || db instanceof OracleDatabaseType)) {
+ throw new IllegalArgumentException("Unknown database type, can't continue: " + db);
+ }
+
+ connection = getDatabaseConnection(dbUrl, userName, password);
+ connection.setAutoCommit(false);
+
+ updateClusterSetting = connection.prepareStatement(
+ "UPDATE rhq_system_config " +
+ "SET property_value = ?, default_property_value = ? " +
+ "WHERE property_key = ? AND property_value IS NULL AND default_property_value IS NULL");
+
+ updateClusterSetting.setString(1, serverProperties.get("rhq.storage.cql-port"));
+ updateClusterSetting.setString(2, serverProperties.get("rhq.storage.cql-port"));
+ updateClusterSetting.setString(3, "STORAGE_CQL_PORT");
+ updateClusterSetting.executeUpdate();
+
+ updateClusterSetting.setString(1, serverProperties.get("rhq.storage.gossip-port"));
+ updateClusterSetting.setString(2, serverProperties.get("rhq.storage.gossip-port"));
+ updateClusterSetting.setString(3, "STORAGE_GOSSIP_PORT");
+ updateClusterSetting.executeUpdate();
+
+ connection.commit();
+ } catch (SQLException e) {
+ LOG.error("Failed to initialize storage cluster settings. Transaction will be rolled back.", e);
+ connection.rollback();
+ throw e;
+ } finally {
+ if (db != null) {
+ db.closeStatement(updateClusterSetting);
db.closeConnection(connection);
}
}
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/StorageNodeManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/StorageNodeManagerBean.java
index eda6ae1..4f84d44 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/StorageNodeManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/StorageNodeManagerBean.java
@@ -182,15 +182,14 @@ public class StorageNodeManagerBean implements StorageNodeManagerLocal, StorageN
}
storageNode.setResource(resource);
storageNode.setOperationMode(OperationMode.NORMAL);
- initClusterSettingsIfNecessary(pluginConfig);
} else {
- storageNode = createStorageNode(resource);
+ StorageClusterSettings clusterSettings = storageClusterSettingsManager.getClusterSettings(
+ subjectManager.getOverlord());
+ storageNode = createStorageNode(resource, clusterSettings);
if (log.isInfoEnabled()) {
log.info("Scheduling cluster maintenance to deploy " + storageNode + " into the storage cluster...");
}
- StorageClusterSettings clusterSettings = storageClusterSettingsManager.getClusterSettings(
- subjectManager.getOverlord());
if (clusterSettings.getAutomaticDeployment()) {
log.info("Deploying " + storageNode);
deployStorageNode(subjectManager.getOverlord(), storageNode);
@@ -205,39 +204,14 @@ public class StorageNodeManagerBean implements StorageNodeManagerLocal, StorageN
}
}
- private void initClusterSettingsIfNecessary(Configuration pluginConfig) {
- // TODO Need to handle non-repeatable reads here (probably a post 4.9 task)
- //
- // If a user deploys two storage nodes prior to installing the RHQ server, then we
- // could end up in this method concurrently for both storage nodes. The settings
- // would be committed for each node with the second commit winning. The problem is
- // that is the cluster settings differ for the two nodes, it will be silently
- // ignored. This scenario will happen infrequently so it should be sufficient to
- // resolve it with optimistic locking. The second writer should fail with an
- // OptimisticLockException.
-
- log.info("Initializing storage cluster settings");
-
- StorageClusterSettings clusterSettings = storageClusterSettingsManager.getClusterSettings(subjectManager
- .getOverlord());
- if (clusterSettings != null) {
- log.info("Cluster settings have already been set. Skipping initialization.");
- return;
- }
- clusterSettings = new StorageClusterSettings();
- clusterSettings.setCqlPort(Integer.parseInt(pluginConfig.getSimpleValue(RHQ_STORAGE_CQL_PORT_PROPERTY)));
- clusterSettings.setGossipPort(Integer.parseInt(pluginConfig.getSimpleValue(RHQ_STORAGE_GOSSIP_PORT_PROPERTY)));
- storageClusterSettingsManager.setClusterSettings(subjectManager.getOverlord(), clusterSettings);
- }
-
@Override
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
- public StorageNode createStorageNode(Resource resource) {
+ public StorageNode createStorageNode(Resource resource, StorageClusterSettings clusterSettings) {
Configuration pluginConfig = resource.getPluginConfiguration();
StorageNode storageNode = new StorageNode();
storageNode.setAddress(pluginConfig.getSimpleValue(RHQ_STORAGE_ADDRESS_PROPERTY));
- storageNode.setCqlPort(Integer.parseInt(pluginConfig.getSimpleValue(RHQ_STORAGE_CQL_PORT_PROPERTY)));
+ storageNode.setCqlPort(clusterSettings.getCqlPort());
storageNode.setResource(resource);
storageNode.setOperationMode(OperationMode.INSTALLED);
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/StorageNodeManagerLocal.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/StorageNodeManagerLocal.java
index f740a27..60091ee 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/StorageNodeManagerLocal.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/StorageNodeManagerLocal.java
@@ -26,6 +26,7 @@ import javax.ejb.Local;
import org.rhq.core.domain.alert.Alert;
import org.rhq.core.domain.auth.Subject;
+import org.rhq.core.domain.cloud.StorageClusterSettings;
import org.rhq.core.domain.cloud.StorageNode;
import org.rhq.core.domain.cloud.StorageNodeConfigurationComposite;
import org.rhq.core.domain.cloud.StorageNodeLoadComposite;
@@ -179,7 +180,7 @@ public interface StorageNodeManagerLocal {
Map<String, List<MeasurementDataNumericHighLowComposite>> findStorageNodeLoadDataForLast(Subject subject, StorageNode node, long beginTime, long endTime, int numPoints);
- StorageNode createStorageNode(Resource resource);
+ StorageNode createStorageNode(Resource resource, StorageClusterSettings clusterSettings);
void deployStorageNode(Subject subject, StorageNode storageNode);
diff --git a/modules/plugins/cassandra/src/main/java/org/rhq/plugins/cassandra/CassandraNodeDiscoveryComponent.java b/modules/plugins/cassandra/src/main/java/org/rhq/plugins/cassandra/CassandraNodeDiscoveryComponent.java
index f6bd888..c823a98 100644
--- a/modules/plugins/cassandra/src/main/java/org/rhq/plugins/cassandra/CassandraNodeDiscoveryComponent.java
+++ b/modules/plugins/cassandra/src/main/java/org/rhq/plugins/cassandra/CassandraNodeDiscoveryComponent.java
@@ -51,8 +51,6 @@ public class CassandraNodeDiscoveryComponent extends JMXDiscoveryComponent {
protected static final String HOST_PROPERTY = "host";
protected static final String CLUSTER_NAME_PROPERTY = "clusterName";
- protected static final String NATIVE_TRANSPORT_PORT_PROPERTY = "nativeTransportPort";
- protected static final String STORAGE_PORT_PROPERTY = "storagePort";
protected static final String JMX_PORT_PROPERTY = "jmxPort";
protected static final String AUTHENTICATOR_PROPERTY = "authenticator";
protected static final String YAML_PROPERTY = "yamlConfiguration";
@@ -156,9 +154,6 @@ public class CassandraNodeDiscoveryComponent extends JMXDiscoveryComponent {
pluginConfig.put(new PropertySimple(YAML_PROPERTY, yamlConfigurationFile.getAbsolutePath()));
pluginConfig.put(new PropertySimple(CLUSTER_NAME_PROPERTY, yamlEditor.getClusterName()));
pluginConfig.put(new PropertySimple(HOST_PROPERTY, yamlEditor.getListenAddress()));
- pluginConfig.put(new PropertySimple(NATIVE_TRANSPORT_PORT_PROPERTY,
- yamlEditor.getNativeTransportPort()));
- pluginConfig.put(new PropertySimple(STORAGE_PORT_PROPERTY, yamlEditor.getStoragePort()));
pluginConfig.put(new PropertySimple(AUTHENTICATOR_PROPERTY, yamlEditor.getAuthenticator()));
}
}
diff --git a/modules/plugins/rhq-storage/src/main/resources/META-INF/rhq-plugin.xml b/modules/plugins/rhq-storage/src/main/resources/META-INF/rhq-plugin.xml
index 13931d1..1ae564a 100644
--- a/modules/plugins/rhq-storage/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/rhq-storage/src/main/resources/META-INF/rhq-plugin.xml
@@ -29,10 +29,6 @@
description="The type used to establish the EMS connection to the RHQ Storage Node."/>
<c:simple-property name="baseDir" displayName="Base Directory" description="The base directory from which the Cassandra Daemon was launched." required="false"/>
<c:simple-property name="yamlConfiguration" displayName="YAML Configuration File" description="YAML Configuration File"/>
- <c:simple-property name="nativeTransportPort" default="9142" type="integer" readOnly="true"
- description="The port on which the Storage Node listens for CQL client connections."/>
- <c:simple-property name="storagePort" default="7100" type="integer" readOnly="true"
- description="The port on which the Storage Node listens for internode communication."/>
<c:simple-property name="jmxPort" description="The JMX port for the RHQ Storage Node" default="7299" type="integer" readOnly="true"/>
<c:simple-property name="host" description="The host on which the RHQ Storage Node listens to CQL client connections" default="localhost"/>
<c:simple-property name="clusterName" description="Cluster name" default="localhost"/>
10 years, 3 months
[rhq] Branch 'release/jon3.1.x' - modules/plugins
by Simeon Pinder
modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml | 100 +++-------
1 file changed, 37 insertions(+), 63 deletions(-)
New commits:
commit e76d5a4ca28da782f2bb624afaf8bf77788eef48
Author: Simeon Pinder <spinder(a)fulliautomatix.conchfritter.com>
Date: Sat Aug 31 02:38:31 2013 -0400
[BZ 998058] Adding blocking-bounded-queue-thread-pool and blocking-queueless-thread-pool to list of supported templates.
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index bcf71c5..413cede 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -821,6 +821,37 @@
<c:simple-property name="queue-length:expr" required="false" type="integer" readOnly="false" displayName="Queue Length" description="The queue length. Required only for Bounded and Blocking Bounded Thread Pools."/>
'>
+ <!ENTITY threadPoolTemplateResourceConfig '
+ <c:simple-property name="__type" readOnly="true" default="scheduled-thread-pool" displayName="Thread Pool Type" description="Thread pool type">
+ <c:property-options>
+ <c:option value="blocking-bounded-queue-thread-pool"/>
+ <c:option value="blocking-queueless-thread-pool"/>
+ <c:option value="bounded-queue-thread-pool"/>
+ <c:option value="queueless-thread-pool"/>
+ <c:option value="unbounded-queue-thread-pool"/>
+ <c:option value="scheduled-thread-pool"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:template name="Blocking Queueless Thread Pool" description="Blocking Queueless Thread Pool">
+ <c:simple-property name="__type" readOnly="true" default="blocking-queueless-thread-pool"/>
+ </c:template>
+ <c:template name="Blocking Bounded Queue Thread Pool" description="Blocking Bounded Queue Thread Pool">
+ <c:simple-property name="__type" readOnly="true" default="blocking-bounded-queue-thread-pool"/>
+ </c:template>
+ <c:template name="Bounded Queue Thread Pool" description="Bounded Queue Thread Pool">
+ <c:simple-property name="__type" readOnly="true" default="bounded-queue-thread-pool"/>
+ </c:template>
+ <c:template name="Queueless Thread Pool" description="Queueless Thread Pool">
+ <c:simple-property name="__type" readOnly="true" default="queueless-thread-pool"/>
+ </c:template>
+ <c:template name="Scheduled Thread Pool" description="Scheduled Thread Pool">
+ <c:simple-property name="__type" readOnly="true" default="scheduled-thread-pool"/>
+ </c:template>
+ <c:template name="Unbounded Queue Thread Pool" description="Unbounded Queue Thread Pool">
+ <c:simple-property name="__type" readOnly="true" default="unbounded-queue-thread-pool"/>
+ </c:template>
+'>
+
<!ENTITY flagModuleResourceConfig '
<resource-configuration>
<c:simple-property name="code" required="true" type="string" readOnly="false" description="Class name of the module to be instantiated."/>
@@ -3080,7 +3111,7 @@
createDeletePolicy="neither">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true" default="bounded-queue-thread-pool|queueless-thread-pool|scheduled-thread-pool|unbounded-queue-thread-pool"/>
+ <c:simple-property name="path" readOnly="true" default="bounded-queue-thread-pool|blocking-bounded-queue-thread-pool|blocking-queueless-thread-pool|queueless-thread-pool|scheduled-thread-pool|unbounded-queue-thread-pool"/>
</plugin-configuration>
<metric property="active-count" description="The approximate number of threads that are actively executing tasks."/>
@@ -3100,26 +3131,7 @@
&queueLengthResourceConfig;
<c:simple-property name="thread-factory" required="false" type="string" readOnly="false" description="Specifies the name of a specific thread factory to use to create worker threads. If not defined an appropriate default thread factory will be used."/>
- <c:simple-property name="__type" readOnly="true" default="scheduled-thread-pool" displayName="Thread Pool Type" description="Thread pool type">
- <c:property-options>
- <c:option value="bounded-queue-thread-pool"/>
- <c:option value="queueless-thread-pool"/>
- <c:option value="unbounded-queue-thread-pool"/>
- <c:option value="scheduled-thread-pool"/>
- </c:property-options>
- </c:simple-property>
- <c:template name="Bounded Queue Thread Pool" description="Bounded Queue Thread Pool">
- <c:simple-property name="__type" readOnly="true" default="bounded-queue-thread-pool"/>
- </c:template>
- <c:template name="Queueless Thread Pool" description="Queueless Thread Pool">
- <c:simple-property name="__type" readOnly="true" default="queueless-thread-pool"/>
- </c:template>
- <c:template name="Scheduled Thread Pool" description="Scheduled Thread Pool">
- <c:simple-property name="__type" readOnly="true" default="scheduled-thread-pool"/>
- </c:template>
- <c:template name="Unbounded Queue Thread Pool" description="Unbounded Queue Thread Pool">
- <c:simple-property name="__type" readOnly="true" default="unbounded-queue-thread-pool"/>
- </c:template>
+ &threadPoolTemplateResourceConfig;
</resource-configuration>
</service>
</service>
@@ -5933,7 +5945,7 @@
createDeletePolicy="both">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true" default="bounded-queue-thread-pool|queueless-thread-pool|scheduled-thread-pool|unbounded-queue-thread-pool"/>
+ <c:simple-property name="path" readOnly="true" default="bounded-queue-thread-pool|blocking-bounded-queue-thread-pool|blocking-queueless-thread-pool|queueless-thread-pool|scheduled-thread-pool|unbounded-queue-thread-pool"/>
</plugin-configuration>
<resource-configuration>
@@ -5946,26 +5958,7 @@
&queueLengthResourceConfig;
<c:simple-property name="thread-factory" required="false" type="string" readOnly="false" description="Specifies the name of a specific thread factory to use to create worker threads. If not defined an appropriate default thread factory will be used."/>
- <c:simple-property name="__type" readOnly="true" default="scheduled-thread-pool" displayName="Thread Pool Type" description="Thread pool type">
- <c:property-options>
- <c:option value="bounded-queue-thread-pool"/>
- <c:option value="queueless-thread-pool"/>
- <c:option value="unbounded-queue-thread-pool"/>
- <c:option value="scheduled-thread-pool"/>
- </c:property-options>
- </c:simple-property>
- <c:template name="Bounded Queue Thread Pool" description="Bounded Queue Thread Pool">
- <c:simple-property name="__type" readOnly="true" default="bounded-queue-thread-pool"/>
- </c:template>
- <c:template name="Queueless Thread Pool" description="Queueless Thread Pool">
- <c:simple-property name="__type" readOnly="true" default="queueless-thread-pool"/>
- </c:template>
- <c:template name="Scheduled Thread Pool" description="Scheduled Thread Pool">
- <c:simple-property name="__type" readOnly="true" default="scheduled-thread-pool"/>
- </c:template>
- <c:template name="Unbounded Queue Thread Pool" description="Unbounded Queue Thread Pool">
- <c:simple-property name="__type" readOnly="true" default="unbounded-queue-thread-pool"/>
- </c:template>
+ &threadPoolTemplateResourceConfig;
</resource-configuration>
</service>
</service>
@@ -10860,7 +10853,7 @@
createDeletePolicy="both">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true" default="bounded-queue-thread-pool|queueless-thread-pool|scheduled-thread-pool|unbounded-queue-thread-pool"/>
+ <c:simple-property name="path" readOnly="true" default="bounded-queue-thread-pool|blocking-bounded-queue-thread-pool|blocking-queueless-thread-pool|queueless-thread-pool|scheduled-thread-pool|unbounded-queue-thread-pool"/>
</plugin-configuration>
<metric property="active-count" description="The approximate number of threads that are actively executing tasks."/>
@@ -10880,26 +10873,7 @@
&queueLengthResourceConfig;
<c:simple-property name="thread-factory" required="false" type="string" readOnly="false" description="Specifies the name of a specific thread factory to use to create worker threads. If not defined an appropriate default thread factory will be used."/>
- <c:simple-property name="__type" readOnly="true" default="scheduled-thread-pool" displayName="Thread Pool Type" description="Thread pool type">
- <c:property-options>
- <c:option value="bounded-queue-thread-pool"/>
- <c:option value="queueless-thread-pool"/>
- <c:option value="unbounded-queue-thread-pool"/>
- <c:option value="scheduled-thread-pool"/>
- </c:property-options>
- </c:simple-property>
- <c:template name="Bounded Queue Thread Pool" description="Bounded Queue Thread Pool">
- <c:simple-property name="__type" readOnly="true" default="bounded-queue-thread-pool"/>
- </c:template>
- <c:template name="Queueless Thread Pool" description="Queueless Thread Pool">
- <c:simple-property name="__type" readOnly="true" default="queueless-thread-pool"/>
- </c:template>
- <c:template name="Scheduled Thread Pool" description="Scheduled Thread Pool">
- <c:simple-property name="__type" readOnly="true" default="scheduled-thread-pool"/>
- </c:template>
- <c:template name="Unbounded Queue Thread Pool" description="Unbounded Queue Thread Pool">
- <c:simple-property name="__type" readOnly="true" default="unbounded-queue-thread-pool"/>
- </c:template>
+ &threadPoolTemplateResourceConfig;
</resource-configuration>
</service>
10 years, 3 months
[rhq] modules/plugins
by Simeon Pinder
modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml | 100 +++-------
1 file changed, 37 insertions(+), 63 deletions(-)
New commits:
commit 84fdfb65809c9e897ce3a841186181c9125edeb1
Author: Simeon Pinder <spinder(a)fulliautomatix.conchfritter.com>
Date: Sat Aug 31 02:38:31 2013 -0400
[BZ 998058] Adding blocking-bounded-queue-thread-pool and blocking-queueless-thread-pool to list of supported templates.
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 07f9c59..0873c17 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -852,6 +852,37 @@
<c:simple-property name="queue-length:expr" required="false" type="integer" readOnly="false" displayName="Queue Length" description="The queue length. Required only for Bounded and Blocking Bounded Thread Pools."/>
'>
+ <!ENTITY threadPoolTemplateResourceConfig '
+ <c:simple-property name="__type" readOnly="true" default="scheduled-thread-pool" displayName="Thread Pool Type" description="Thread pool type">
+ <c:property-options>
+ <c:option value="blocking-bounded-queue-thread-pool"/>
+ <c:option value="blocking-queueless-thread-pool"/>
+ <c:option value="bounded-queue-thread-pool"/>
+ <c:option value="queueless-thread-pool"/>
+ <c:option value="unbounded-queue-thread-pool"/>
+ <c:option value="scheduled-thread-pool"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:template name="Blocking Queueless Thread Pool" description="Blocking Queueless Thread Pool">
+ <c:simple-property name="__type" readOnly="true" default="blocking-queueless-thread-pool"/>
+ </c:template>
+ <c:template name="Blocking Bounded Queue Thread Pool" description="Blocking Bounded Queue Thread Pool">
+ <c:simple-property name="__type" readOnly="true" default="blocking-bounded-queue-thread-pool"/>
+ </c:template>
+ <c:template name="Bounded Queue Thread Pool" description="Bounded Queue Thread Pool">
+ <c:simple-property name="__type" readOnly="true" default="bounded-queue-thread-pool"/>
+ </c:template>
+ <c:template name="Queueless Thread Pool" description="Queueless Thread Pool">
+ <c:simple-property name="__type" readOnly="true" default="queueless-thread-pool"/>
+ </c:template>
+ <c:template name="Scheduled Thread Pool" description="Scheduled Thread Pool">
+ <c:simple-property name="__type" readOnly="true" default="scheduled-thread-pool"/>
+ </c:template>
+ <c:template name="Unbounded Queue Thread Pool" description="Unbounded Queue Thread Pool">
+ <c:simple-property name="__type" readOnly="true" default="unbounded-queue-thread-pool"/>
+ </c:template>
+'>
+
<!ENTITY flagModuleResourceConfig '
<resource-configuration>
<c:simple-property name="code" required="true" type="string" readOnly="false" description="Class name of the module to be instantiated."/>
@@ -3158,7 +3189,7 @@
createDeletePolicy="neither">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true" default="bounded-queue-thread-pool|queueless-thread-pool|scheduled-thread-pool|unbounded-queue-thread-pool"/>
+ <c:simple-property name="path" readOnly="true" default="bounded-queue-thread-pool|blocking-bounded-queue-thread-pool|blocking-queueless-thread-pool|queueless-thread-pool|scheduled-thread-pool|unbounded-queue-thread-pool"/>
</plugin-configuration>
<metric property="active-count" description="The approximate number of threads that are actively executing tasks."/>
@@ -3178,26 +3209,7 @@
&queueLengthResourceConfig;
<c:simple-property name="thread-factory" required="false" type="string" readOnly="false" description="Specifies the name of a specific thread factory to use to create worker threads. If not defined an appropriate default thread factory will be used."/>
- <c:simple-property name="__type" readOnly="true" default="scheduled-thread-pool" displayName="Thread Pool Type" description="Thread pool type">
- <c:property-options>
- <c:option value="bounded-queue-thread-pool"/>
- <c:option value="queueless-thread-pool"/>
- <c:option value="unbounded-queue-thread-pool"/>
- <c:option value="scheduled-thread-pool"/>
- </c:property-options>
- </c:simple-property>
- <c:template name="Bounded Queue Thread Pool" description="Bounded Queue Thread Pool">
- <c:simple-property name="__type" readOnly="true" default="bounded-queue-thread-pool"/>
- </c:template>
- <c:template name="Queueless Thread Pool" description="Queueless Thread Pool">
- <c:simple-property name="__type" readOnly="true" default="queueless-thread-pool"/>
- </c:template>
- <c:template name="Scheduled Thread Pool" description="Scheduled Thread Pool">
- <c:simple-property name="__type" readOnly="true" default="scheduled-thread-pool"/>
- </c:template>
- <c:template name="Unbounded Queue Thread Pool" description="Unbounded Queue Thread Pool">
- <c:simple-property name="__type" readOnly="true" default="unbounded-queue-thread-pool"/>
- </c:template>
+ &threadPoolTemplateResourceConfig;
</resource-configuration>
</service>
</service>
@@ -6011,7 +6023,7 @@
createDeletePolicy="both">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true" default="bounded-queue-thread-pool|queueless-thread-pool|scheduled-thread-pool|unbounded-queue-thread-pool"/>
+ <c:simple-property name="path" readOnly="true" default="bounded-queue-thread-pool|blocking-bounded-queue-thread-pool|blocking-queueless-thread-pool|queueless-thread-pool|scheduled-thread-pool|unbounded-queue-thread-pool"/>
</plugin-configuration>
<resource-configuration>
@@ -6024,26 +6036,7 @@
&queueLengthResourceConfig;
<c:simple-property name="thread-factory" required="false" type="string" readOnly="false" description="Specifies the name of a specific thread factory to use to create worker threads. If not defined an appropriate default thread factory will be used."/>
- <c:simple-property name="__type" readOnly="true" default="scheduled-thread-pool" displayName="Thread Pool Type" description="Thread pool type">
- <c:property-options>
- <c:option value="bounded-queue-thread-pool"/>
- <c:option value="queueless-thread-pool"/>
- <c:option value="unbounded-queue-thread-pool"/>
- <c:option value="scheduled-thread-pool"/>
- </c:property-options>
- </c:simple-property>
- <c:template name="Bounded Queue Thread Pool" description="Bounded Queue Thread Pool">
- <c:simple-property name="__type" readOnly="true" default="bounded-queue-thread-pool"/>
- </c:template>
- <c:template name="Queueless Thread Pool" description="Queueless Thread Pool">
- <c:simple-property name="__type" readOnly="true" default="queueless-thread-pool"/>
- </c:template>
- <c:template name="Scheduled Thread Pool" description="Scheduled Thread Pool">
- <c:simple-property name="__type" readOnly="true" default="scheduled-thread-pool"/>
- </c:template>
- <c:template name="Unbounded Queue Thread Pool" description="Unbounded Queue Thread Pool">
- <c:simple-property name="__type" readOnly="true" default="unbounded-queue-thread-pool"/>
- </c:template>
+ &threadPoolTemplateResourceConfig;
</resource-configuration>
</service>
</service>
@@ -10955,7 +10948,7 @@
createDeletePolicy="both">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true" default="bounded-queue-thread-pool|queueless-thread-pool|scheduled-thread-pool|unbounded-queue-thread-pool"/>
+ <c:simple-property name="path" readOnly="true" default="bounded-queue-thread-pool|blocking-bounded-queue-thread-pool|blocking-queueless-thread-pool|queueless-thread-pool|scheduled-thread-pool|unbounded-queue-thread-pool"/>
</plugin-configuration>
<metric property="active-count" description="The approximate number of threads that are actively executing tasks."/>
@@ -10975,26 +10968,7 @@
&queueLengthResourceConfig;
<c:simple-property name="thread-factory" required="false" type="string" readOnly="false" description="Specifies the name of a specific thread factory to use to create worker threads. If not defined an appropriate default thread factory will be used."/>
- <c:simple-property name="__type" readOnly="true" default="scheduled-thread-pool" displayName="Thread Pool Type" description="Thread pool type">
- <c:property-options>
- <c:option value="bounded-queue-thread-pool"/>
- <c:option value="queueless-thread-pool"/>
- <c:option value="unbounded-queue-thread-pool"/>
- <c:option value="scheduled-thread-pool"/>
- </c:property-options>
- </c:simple-property>
- <c:template name="Bounded Queue Thread Pool" description="Bounded Queue Thread Pool">
- <c:simple-property name="__type" readOnly="true" default="bounded-queue-thread-pool"/>
- </c:template>
- <c:template name="Queueless Thread Pool" description="Queueless Thread Pool">
- <c:simple-property name="__type" readOnly="true" default="queueless-thread-pool"/>
- </c:template>
- <c:template name="Scheduled Thread Pool" description="Scheduled Thread Pool">
- <c:simple-property name="__type" readOnly="true" default="scheduled-thread-pool"/>
- </c:template>
- <c:template name="Unbounded Queue Thread Pool" description="Unbounded Queue Thread Pool">
- <c:simple-property name="__type" readOnly="true" default="unbounded-queue-thread-pool"/>
- </c:template>
+ &threadPoolTemplateResourceConfig;
</resource-configuration>
</service>
10 years, 3 months
[rhq] Branch 'nightly/rhq.jon' - modules/plugins
by Simeon Pinder
modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml | 100 +++-------
1 file changed, 37 insertions(+), 63 deletions(-)
New commits:
commit 5a53d21763f107353f38506090f073ca2e1235d9
Author: Simeon Pinder <spinder(a)fulliautomatix.conchfritter.com>
Date: Sat Aug 31 02:38:31 2013 -0400
[BZ 998058] Adding blocking-bounded-queue-thread-pool and blocking-queueless-thread-pool to list of supported templates.
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 24b5519..7956207 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -852,6 +852,37 @@
<c:simple-property name="queue-length:expr" required="false" type="integer" readOnly="false" displayName="Queue Length" description="The queue length. Required only for Bounded and Blocking Bounded Thread Pools."/>
'>
+ <!ENTITY threadPoolTemplateResourceConfig '
+ <c:simple-property name="__type" readOnly="true" default="scheduled-thread-pool" displayName="Thread Pool Type" description="Thread pool type">
+ <c:property-options>
+ <c:option value="blocking-bounded-queue-thread-pool"/>
+ <c:option value="blocking-queueless-thread-pool"/>
+ <c:option value="bounded-queue-thread-pool"/>
+ <c:option value="queueless-thread-pool"/>
+ <c:option value="unbounded-queue-thread-pool"/>
+ <c:option value="scheduled-thread-pool"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:template name="Blocking Queueless Thread Pool" description="Blocking Queueless Thread Pool">
+ <c:simple-property name="__type" readOnly="true" default="blocking-queueless-thread-pool"/>
+ </c:template>
+ <c:template name="Blocking Bounded Queue Thread Pool" description="Blocking Bounded Queue Thread Pool">
+ <c:simple-property name="__type" readOnly="true" default="blocking-bounded-queue-thread-pool"/>
+ </c:template>
+ <c:template name="Bounded Queue Thread Pool" description="Bounded Queue Thread Pool">
+ <c:simple-property name="__type" readOnly="true" default="bounded-queue-thread-pool"/>
+ </c:template>
+ <c:template name="Queueless Thread Pool" description="Queueless Thread Pool">
+ <c:simple-property name="__type" readOnly="true" default="queueless-thread-pool"/>
+ </c:template>
+ <c:template name="Scheduled Thread Pool" description="Scheduled Thread Pool">
+ <c:simple-property name="__type" readOnly="true" default="scheduled-thread-pool"/>
+ </c:template>
+ <c:template name="Unbounded Queue Thread Pool" description="Unbounded Queue Thread Pool">
+ <c:simple-property name="__type" readOnly="true" default="unbounded-queue-thread-pool"/>
+ </c:template>
+'>
+
<!ENTITY flagModuleResourceConfig '
<resource-configuration>
<c:simple-property name="code" required="true" type="string" readOnly="false" description="Class name of the module to be instantiated."/>
@@ -3158,7 +3189,7 @@
createDeletePolicy="neither">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true" default="bounded-queue-thread-pool|queueless-thread-pool|scheduled-thread-pool|unbounded-queue-thread-pool"/>
+ <c:simple-property name="path" readOnly="true" default="bounded-queue-thread-pool|blocking-bounded-queue-thread-pool|blocking-queueless-thread-pool|queueless-thread-pool|scheduled-thread-pool|unbounded-queue-thread-pool"/>
</plugin-configuration>
<metric property="active-count" description="The approximate number of threads that are actively executing tasks."/>
@@ -3178,26 +3209,7 @@
&queueLengthResourceConfig;
<c:simple-property name="thread-factory" required="false" type="string" readOnly="false" description="Specifies the name of a specific thread factory to use to create worker threads. If not defined an appropriate default thread factory will be used."/>
- <c:simple-property name="__type" readOnly="true" default="scheduled-thread-pool" displayName="Thread Pool Type" description="Thread pool type">
- <c:property-options>
- <c:option value="bounded-queue-thread-pool"/>
- <c:option value="queueless-thread-pool"/>
- <c:option value="unbounded-queue-thread-pool"/>
- <c:option value="scheduled-thread-pool"/>
- </c:property-options>
- </c:simple-property>
- <c:template name="Bounded Queue Thread Pool" description="Bounded Queue Thread Pool">
- <c:simple-property name="__type" readOnly="true" default="bounded-queue-thread-pool"/>
- </c:template>
- <c:template name="Queueless Thread Pool" description="Queueless Thread Pool">
- <c:simple-property name="__type" readOnly="true" default="queueless-thread-pool"/>
- </c:template>
- <c:template name="Scheduled Thread Pool" description="Scheduled Thread Pool">
- <c:simple-property name="__type" readOnly="true" default="scheduled-thread-pool"/>
- </c:template>
- <c:template name="Unbounded Queue Thread Pool" description="Unbounded Queue Thread Pool">
- <c:simple-property name="__type" readOnly="true" default="unbounded-queue-thread-pool"/>
- </c:template>
+ &threadPoolTemplateResourceConfig;
</resource-configuration>
</service>
</service>
@@ -6011,7 +6023,7 @@
createDeletePolicy="both">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true" default="bounded-queue-thread-pool|queueless-thread-pool|scheduled-thread-pool|unbounded-queue-thread-pool"/>
+ <c:simple-property name="path" readOnly="true" default="bounded-queue-thread-pool|blocking-bounded-queue-thread-pool|blocking-queueless-thread-pool|queueless-thread-pool|scheduled-thread-pool|unbounded-queue-thread-pool"/>
</plugin-configuration>
<resource-configuration>
@@ -6024,26 +6036,7 @@
&queueLengthResourceConfig;
<c:simple-property name="thread-factory" required="false" type="string" readOnly="false" description="Specifies the name of a specific thread factory to use to create worker threads. If not defined an appropriate default thread factory will be used."/>
- <c:simple-property name="__type" readOnly="true" default="scheduled-thread-pool" displayName="Thread Pool Type" description="Thread pool type">
- <c:property-options>
- <c:option value="bounded-queue-thread-pool"/>
- <c:option value="queueless-thread-pool"/>
- <c:option value="unbounded-queue-thread-pool"/>
- <c:option value="scheduled-thread-pool"/>
- </c:property-options>
- </c:simple-property>
- <c:template name="Bounded Queue Thread Pool" description="Bounded Queue Thread Pool">
- <c:simple-property name="__type" readOnly="true" default="bounded-queue-thread-pool"/>
- </c:template>
- <c:template name="Queueless Thread Pool" description="Queueless Thread Pool">
- <c:simple-property name="__type" readOnly="true" default="queueless-thread-pool"/>
- </c:template>
- <c:template name="Scheduled Thread Pool" description="Scheduled Thread Pool">
- <c:simple-property name="__type" readOnly="true" default="scheduled-thread-pool"/>
- </c:template>
- <c:template name="Unbounded Queue Thread Pool" description="Unbounded Queue Thread Pool">
- <c:simple-property name="__type" readOnly="true" default="unbounded-queue-thread-pool"/>
- </c:template>
+ &threadPoolTemplateResourceConfig;
</resource-configuration>
</service>
</service>
@@ -10955,7 +10948,7 @@
createDeletePolicy="both">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true" default="bounded-queue-thread-pool|queueless-thread-pool|scheduled-thread-pool|unbounded-queue-thread-pool"/>
+ <c:simple-property name="path" readOnly="true" default="bounded-queue-thread-pool|blocking-bounded-queue-thread-pool|blocking-queueless-thread-pool|queueless-thread-pool|scheduled-thread-pool|unbounded-queue-thread-pool"/>
</plugin-configuration>
<metric property="active-count" description="The approximate number of threads that are actively executing tasks."/>
@@ -10975,26 +10968,7 @@
&queueLengthResourceConfig;
<c:simple-property name="thread-factory" required="false" type="string" readOnly="false" description="Specifies the name of a specific thread factory to use to create worker threads. If not defined an appropriate default thread factory will be used."/>
- <c:simple-property name="__type" readOnly="true" default="scheduled-thread-pool" displayName="Thread Pool Type" description="Thread pool type">
- <c:property-options>
- <c:option value="bounded-queue-thread-pool"/>
- <c:option value="queueless-thread-pool"/>
- <c:option value="unbounded-queue-thread-pool"/>
- <c:option value="scheduled-thread-pool"/>
- </c:property-options>
- </c:simple-property>
- <c:template name="Bounded Queue Thread Pool" description="Bounded Queue Thread Pool">
- <c:simple-property name="__type" readOnly="true" default="bounded-queue-thread-pool"/>
- </c:template>
- <c:template name="Queueless Thread Pool" description="Queueless Thread Pool">
- <c:simple-property name="__type" readOnly="true" default="queueless-thread-pool"/>
- </c:template>
- <c:template name="Scheduled Thread Pool" description="Scheduled Thread Pool">
- <c:simple-property name="__type" readOnly="true" default="scheduled-thread-pool"/>
- </c:template>
- <c:template name="Unbounded Queue Thread Pool" description="Unbounded Queue Thread Pool">
- <c:simple-property name="__type" readOnly="true" default="unbounded-queue-thread-pool"/>
- </c:template>
+ &threadPoolTemplateResourceConfig;
</resource-configuration>
</service>
10 years, 3 months
[rhq] Branch 'refs/tags/RHQ_4_7_0_JONCI' - modules/plugins
by rhqci
modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml | 7 +++++++
1 file changed, 7 insertions(+)
New commits:
commit 40273e9423bebf75f667182fb9118cf062bd0482
Author: Simeon Pinder <spinder(a)fulliautomatix.conchfritter.com>
Date: Fri Aug 30 15:28:10 2013 -0400
[BZ 997665] adding queue-length for bounded and blocking bounded thread pool support.
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 1fd2e82..24b5519 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -848,6 +848,10 @@
</resource-configuration>
'>
+ <!ENTITY queueLengthResourceConfig '
+ <c:simple-property name="queue-length:expr" required="false" type="integer" readOnly="false" displayName="Queue Length" description="The queue length. Required only for Bounded and Blocking Bounded Thread Pools."/>
+'>
+
<!ENTITY flagModuleResourceConfig '
<resource-configuration>
<c:simple-property name="code" required="true" type="string" readOnly="false" description="Class name of the module to be instantiated."/>
@@ -3171,6 +3175,7 @@
</c:map-property>
<c:simple-property name="max-threads:expr" required="true" type="string" readOnly="false" displayName="Max Threads" description="The maximum thread pool size."/>
<c:simple-property name="name" required="false" type="string" readOnly="true" description="The name of the thread pool."/>
+ &queueLengthResourceConfig;
<c:simple-property name="thread-factory" required="false" type="string" readOnly="false" description="Specifies the name of a specific thread factory to use to create worker threads. If not defined an appropriate default thread factory will be used."/>
<c:simple-property name="__type" readOnly="true" default="scheduled-thread-pool" displayName="Thread Pool Type" description="Thread pool type">
@@ -6016,6 +6021,7 @@
</c:map-property>
<c:simple-property name="max-threads:expr" required="true" type="string" readOnly="false" displayName="Max Threads" description="The maximum thread pool size."/>
<c:simple-property name="name" required="false" type="string" readOnly="true" description="The name of the thread pool."/>
+ &queueLengthResourceConfig;
<c:simple-property name="thread-factory" required="false" type="string" readOnly="false" description="Specifies the name of a specific thread factory to use to create worker threads. If not defined an appropriate default thread factory will be used."/>
<c:simple-property name="__type" readOnly="true" default="scheduled-thread-pool" displayName="Thread Pool Type" description="Thread pool type">
@@ -10966,6 +10972,7 @@
</c:map-property>
<c:simple-property name="max-threads:expr" required="true" type="string" readOnly="false" displayName="Max Threads" description="The maximum thread pool size."/>
<c:simple-property name="name" required="false" type="string" readOnly="true" description="The name of the thread pool."/>
+ &queueLengthResourceConfig;
<c:simple-property name="thread-factory" required="false" type="string" readOnly="false" description="Specifies the name of a specific thread factory to use to create worker threads. If not defined an appropriate default thread factory will be used."/>
<c:simple-property name="__type" readOnly="true" default="scheduled-thread-pool" displayName="Thread Pool Type" description="Thread pool type">
10 years, 3 months
[rhq] Branch 'nightly/rhq.jon' - modules/plugins
by Simeon Pinder
modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml | 7 +++++++
1 file changed, 7 insertions(+)
New commits:
commit 40273e9423bebf75f667182fb9118cf062bd0482
Author: Simeon Pinder <spinder(a)fulliautomatix.conchfritter.com>
Date: Fri Aug 30 15:28:10 2013 -0400
[BZ 997665] adding queue-length for bounded and blocking bounded thread pool support.
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 1fd2e82..24b5519 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -848,6 +848,10 @@
</resource-configuration>
'>
+ <!ENTITY queueLengthResourceConfig '
+ <c:simple-property name="queue-length:expr" required="false" type="integer" readOnly="false" displayName="Queue Length" description="The queue length. Required only for Bounded and Blocking Bounded Thread Pools."/>
+'>
+
<!ENTITY flagModuleResourceConfig '
<resource-configuration>
<c:simple-property name="code" required="true" type="string" readOnly="false" description="Class name of the module to be instantiated."/>
@@ -3171,6 +3175,7 @@
</c:map-property>
<c:simple-property name="max-threads:expr" required="true" type="string" readOnly="false" displayName="Max Threads" description="The maximum thread pool size."/>
<c:simple-property name="name" required="false" type="string" readOnly="true" description="The name of the thread pool."/>
+ &queueLengthResourceConfig;
<c:simple-property name="thread-factory" required="false" type="string" readOnly="false" description="Specifies the name of a specific thread factory to use to create worker threads. If not defined an appropriate default thread factory will be used."/>
<c:simple-property name="__type" readOnly="true" default="scheduled-thread-pool" displayName="Thread Pool Type" description="Thread pool type">
@@ -6016,6 +6021,7 @@
</c:map-property>
<c:simple-property name="max-threads:expr" required="true" type="string" readOnly="false" displayName="Max Threads" description="The maximum thread pool size."/>
<c:simple-property name="name" required="false" type="string" readOnly="true" description="The name of the thread pool."/>
+ &queueLengthResourceConfig;
<c:simple-property name="thread-factory" required="false" type="string" readOnly="false" description="Specifies the name of a specific thread factory to use to create worker threads. If not defined an appropriate default thread factory will be used."/>
<c:simple-property name="__type" readOnly="true" default="scheduled-thread-pool" displayName="Thread Pool Type" description="Thread pool type">
@@ -10966,6 +10972,7 @@
</c:map-property>
<c:simple-property name="max-threads:expr" required="true" type="string" readOnly="false" displayName="Max Threads" description="The maximum thread pool size."/>
<c:simple-property name="name" required="false" type="string" readOnly="true" description="The name of the thread pool."/>
+ &queueLengthResourceConfig;
<c:simple-property name="thread-factory" required="false" type="string" readOnly="false" description="Specifies the name of a specific thread factory to use to create worker threads. If not defined an appropriate default thread factory will be used."/>
<c:simple-property name="__type" readOnly="true" default="scheduled-thread-pool" displayName="Thread Pool Type" description="Thread pool type">
10 years, 3 months
[rhq] modules/plugins
by Simeon Pinder
modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml | 7 +++++++
1 file changed, 7 insertions(+)
New commits:
commit 9d452a7b83c7529754b465c29c7cfca60a890b85
Author: Simeon Pinder <spinder(a)fulliautomatix.conchfritter.com>
Date: Fri Aug 30 15:28:10 2013 -0400
[BZ 997665] adding queue-length for bounded and blocking bounded thread pool support.
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index e7cf5a1..07f9c59 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -848,6 +848,10 @@
</resource-configuration>
'>
+ <!ENTITY queueLengthResourceConfig '
+ <c:simple-property name="queue-length:expr" required="false" type="integer" readOnly="false" displayName="Queue Length" description="The queue length. Required only for Bounded and Blocking Bounded Thread Pools."/>
+'>
+
<!ENTITY flagModuleResourceConfig '
<resource-configuration>
<c:simple-property name="code" required="true" type="string" readOnly="false" description="Class name of the module to be instantiated."/>
@@ -3171,6 +3175,7 @@
</c:map-property>
<c:simple-property name="max-threads:expr" required="true" type="string" readOnly="false" displayName="Max Threads" description="The maximum thread pool size."/>
<c:simple-property name="name" required="false" type="string" readOnly="true" description="The name of the thread pool."/>
+ &queueLengthResourceConfig;
<c:simple-property name="thread-factory" required="false" type="string" readOnly="false" description="Specifies the name of a specific thread factory to use to create worker threads. If not defined an appropriate default thread factory will be used."/>
<c:simple-property name="__type" readOnly="true" default="scheduled-thread-pool" displayName="Thread Pool Type" description="Thread pool type">
@@ -6016,6 +6021,7 @@
</c:map-property>
<c:simple-property name="max-threads:expr" required="true" type="string" readOnly="false" displayName="Max Threads" description="The maximum thread pool size."/>
<c:simple-property name="name" required="false" type="string" readOnly="true" description="The name of the thread pool."/>
+ &queueLengthResourceConfig;
<c:simple-property name="thread-factory" required="false" type="string" readOnly="false" description="Specifies the name of a specific thread factory to use to create worker threads. If not defined an appropriate default thread factory will be used."/>
<c:simple-property name="__type" readOnly="true" default="scheduled-thread-pool" displayName="Thread Pool Type" description="Thread pool type">
@@ -10966,6 +10972,7 @@
</c:map-property>
<c:simple-property name="max-threads:expr" required="true" type="string" readOnly="false" displayName="Max Threads" description="The maximum thread pool size."/>
<c:simple-property name="name" required="false" type="string" readOnly="true" description="The name of the thread pool."/>
+ &queueLengthResourceConfig;
<c:simple-property name="thread-factory" required="false" type="string" readOnly="false" description="Specifies the name of a specific thread factory to use to create worker threads. If not defined an appropriate default thread factory will be used."/>
<c:simple-property name="__type" readOnly="true" default="scheduled-thread-pool" displayName="Thread Pool Type" description="Thread pool type">
10 years, 3 months
[rhq] modules/enterprise
by Heiko W. Rupp
modules/enterprise/server/server-control/src/main/java/org/rhq/server/control/command/Status.java | 11 +---------
1 file changed, 2 insertions(+), 9 deletions(-)
New commits:
commit cdf64dfe0d3b3c95c2b871bac88229ff6204499a
Author: Michael Burman <yak(a)iki.fi>
Date: Fri Aug 30 22:09:14 2013 +0200
BZ 980076 - also make the check if storage is running for the status command
diff --git a/modules/enterprise/server/server-control/src/main/java/org/rhq/server/control/command/Status.java b/modules/enterprise/server/server-control/src/main/java/org/rhq/server/control/command/Status.java
index 25e7c1d..2267979 100644
--- a/modules/enterprise/server/server-control/src/main/java/org/rhq/server/control/command/Status.java
+++ b/modules/enterprise/server/server-control/src/main/java/org/rhq/server/control/command/Status.java
@@ -26,7 +26,6 @@
package org.rhq.server.control.command;
import java.io.File;
-import java.io.FileReader;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.Options;
@@ -34,8 +33,6 @@ import org.apache.commons.exec.DefaultExecutor;
import org.apache.commons.exec.ExecuteException;
import org.apache.commons.exec.Executor;
import org.apache.commons.exec.PumpStreamHandler;
-
-import org.rhq.core.util.stream.StreamUtil;
import org.rhq.server.control.ControlCommand;
import org.rhq.server.control.RHQControlException;
@@ -128,12 +125,8 @@ public class Status extends ControlCommand {
log.debug("Failed to check storage service status", e);
}
} else {
-
- File storageBinDir = new File(getStorageBasedir(), "bin");
- File pidFile = new File(storageBinDir, "cassandra.pid");
- if (pidFile.exists()) {
- String pid = StreamUtil.slurp(new FileReader(pidFile));
- System.out.println(String.format("%-30s", "RHQ Storage Node") + " (pid " + String.format("%-7s", pid) + ") IS running");
+ if(isStorageRunning()) {
+ System.out.println(String.format("%-30s", "RHQ Storage Node") + " (pid " + String.format("%-7s", getStoragePid()) + ") IS running");
} else {
System.out.println(String.format("%-30s", "RHQ Storage Node") + " (no pid file) IS NOT running");
}
10 years, 3 months
[rhq] Branch 'release/jon3.1.x' - modules/plugins
by Simeon Pinder
modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml | 7 +++++++
1 file changed, 7 insertions(+)
New commits:
commit 9fd18e80cc73c380486abe8a761dfb9fedf32665
Author: Simeon Pinder <spinder(a)fulliautomatix.conchfritter.com>
Date: Fri Aug 30 15:28:10 2013 -0400
[BZ 997665] adding queue-length for bounded and blocking bounded thread pool support.
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 30f8f25..bcf71c5 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -817,6 +817,10 @@
</resource-configuration>
'>
+ <!ENTITY queueLengthResourceConfig '
+ <c:simple-property name="queue-length:expr" required="false" type="integer" readOnly="false" displayName="Queue Length" description="The queue length. Required only for Bounded and Blocking Bounded Thread Pools."/>
+'>
+
<!ENTITY flagModuleResourceConfig '
<resource-configuration>
<c:simple-property name="code" required="true" type="string" readOnly="false" description="Class name of the module to be instantiated."/>
@@ -3093,6 +3097,7 @@
</c:map-property>
<c:simple-property name="max-threads:expr" required="true" type="string" readOnly="false" displayName="Max Threads" description="The maximum thread pool size."/>
<c:simple-property name="name" required="false" type="string" readOnly="true" description="The name of the thread pool."/>
+ &queueLengthResourceConfig;
<c:simple-property name="thread-factory" required="false" type="string" readOnly="false" description="Specifies the name of a specific thread factory to use to create worker threads. If not defined an appropriate default thread factory will be used."/>
<c:simple-property name="__type" readOnly="true" default="scheduled-thread-pool" displayName="Thread Pool Type" description="Thread pool type">
@@ -5938,6 +5943,7 @@
</c:map-property>
<c:simple-property name="max-threads:expr" required="true" type="string" readOnly="false" displayName="Max Threads" description="The maximum thread pool size."/>
<c:simple-property name="name" required="false" type="string" readOnly="true" description="The name of the thread pool."/>
+ &queueLengthResourceConfig;
<c:simple-property name="thread-factory" required="false" type="string" readOnly="false" description="Specifies the name of a specific thread factory to use to create worker threads. If not defined an appropriate default thread factory will be used."/>
<c:simple-property name="__type" readOnly="true" default="scheduled-thread-pool" displayName="Thread Pool Type" description="Thread pool type">
@@ -10871,6 +10877,7 @@
</c:map-property>
<c:simple-property name="max-threads:expr" required="true" type="string" readOnly="false" displayName="Max Threads" description="The maximum thread pool size."/>
<c:simple-property name="name" required="false" type="string" readOnly="true" description="The name of the thread pool."/>
+ &queueLengthResourceConfig;
<c:simple-property name="thread-factory" required="false" type="string" readOnly="false" description="Specifies the name of a specific thread factory to use to create worker threads. If not defined an appropriate default thread factory will be used."/>
<c:simple-property name="__type" readOnly="true" default="scheduled-thread-pool" displayName="Thread Pool Type" description="Thread pool type">
10 years, 3 months