diff --git a/messaging-activemq/src/main/java/org/wildfly/extension/messaging/activemq/MessagingSubsystemParser_6_0.java b/messaging-activemq/src/main/java/org/wildfly/extension/messaging/activemq/MessagingSubsystemParser_6_0.java
index 08d9873026b2..6d928440b6f3 100644
--- a/messaging-activemq/src/main/java/org/wildfly/extension/messaging/activemq/MessagingSubsystemParser_6_0.java
+++ b/messaging-activemq/src/main/java/org/wildfly/extension/messaging/activemq/MessagingSubsystemParser_6_0.java
@@ -224,6 +224,7 @@ public PersistentResourceXMLDescription getParserDescription(){
ServerDefinition.JOURNAL_FILE_SIZE,
ServerDefinition.JOURNAL_MIN_FILES,
ServerDefinition.JOURNAL_POOL_FILES,
+ ServerDefinition.JOURNAL_FILE_OPEN_TIMEOUT,
ServerDefinition.JOURNAL_COMPACT_PERCENTAGE,
ServerDefinition.JOURNAL_COMPACT_MIN_FILES,
ServerDefinition.JOURNAL_MAX_IO,
diff --git a/messaging-activemq/src/main/java/org/wildfly/extension/messaging/activemq/MessagingTransformerRegistration.java b/messaging-activemq/src/main/java/org/wildfly/extension/messaging/activemq/MessagingTransformerRegistration.java
index 3d2fc65f2256..0f6c0090bb43 100644
--- a/messaging-activemq/src/main/java/org/wildfly/extension/messaging/activemq/MessagingTransformerRegistration.java
+++ b/messaging-activemq/src/main/java/org/wildfly/extension/messaging/activemq/MessagingTransformerRegistration.java
@@ -79,8 +79,12 @@ public void registerTransformers(SubsystemTransformerRegistration registration)
builder.buildAndRegister(registration, new ModelVersion[] { MessagingExtension.VERSION_1_0_0, MessagingExtension.VERSION_2_0_0,
MessagingExtension.VERSION_3_0_0, MessagingExtension.VERSION_4_0_0, MessagingExtension.VERSION_5_0_0});
}
-private static void registerTransformers_WF_16(ResourceTransformationDescriptionBuilder subsystem) {
- ResourceTransformationDescriptionBuilder queue = subsystem.addChildResource(SERVER_PATH).addChildResource(QUEUE_PATH);
+
+ private static void registerTransformers_WF_16(ResourceTransformationDescriptionBuilder subsystem) {
+ ResourceTransformationDescriptionBuilder server = subsystem.addChildResource(SERVER_PATH);
+ rejectDefinedAttributeWithDefaultValue(server, ServerDefinition.JOURNAL_FILE_OPEN_TIMEOUT);
+
+ ResourceTransformationDescriptionBuilder queue = server.addChildResource(QUEUE_PATH);
rejectDefinedAttributeWithDefaultValue(queue, QueueDefinition.ROUTING_TYPE);
ResourceTransformationDescriptionBuilder jmsBridge = subsystem.addChildResource(MessagingExtension.JMS_BRIDGE_PATH);
@@ -90,6 +94,7 @@ private static void registerTransformers_WF_16(ResourceTransformationDescription
defaultValueAttributeConverter(jmsBridge, JMSBridgeDefinition.MAX_BATCH_SIZE);
defaultValueAttributeConverter(jmsBridge, JMSBridgeDefinition.MAX_BATCH_TIME);
}
+
private static void registerTransformers_WF_15(ResourceTransformationDescriptionBuilder subsystem) {
ResourceTransformationDescriptionBuilder server = subsystem.addChildResource(MessagingExtension.SERVER_PATH);
// WFLY-10976 - journal-pool-files default value is 10.
diff --git a/messaging-activemq/src/main/java/org/wildfly/extension/messaging/activemq/ServerAdd.java b/messaging-activemq/src/main/java/org/wildfly/extension/messaging/activemq/ServerAdd.java
index 5f5db81d9c90..5fce00ed90b1 100644
--- a/messaging-activemq/src/main/java/org/wildfly/extension/messaging/activemq/ServerAdd.java
+++ b/messaging-activemq/src/main/java/org/wildfly/extension/messaging/activemq/ServerAdd.java
@@ -64,6 +64,7 @@
import static org.wildfly.extension.messaging.activemq.ServerDefinition.JOURNAL_COMPACT_MIN_FILES;
import static org.wildfly.extension.messaging.activemq.ServerDefinition.JOURNAL_COMPACT_PERCENTAGE;
import static org.wildfly.extension.messaging.activemq.ServerDefinition.JOURNAL_DATASOURCE;
+import static org.wildfly.extension.messaging.activemq.ServerDefinition.JOURNAL_FILE_OPEN_TIMEOUT;
import static org.wildfly.extension.messaging.activemq.ServerDefinition.JOURNAL_FILE_SIZE;
import static org.wildfly.extension.messaging.activemq.ServerDefinition.JOURNAL_JDBC_LOCK_EXPIRATION;
import static org.wildfly.extension.messaging.activemq.ServerDefinition.JOURNAL_JDBC_LOCK_RENEW_PERIOD;
@@ -226,6 +227,7 @@ public void execute(OperationContext context, ModelNode operation) throws Operat
ServerDefinition.JOURNAL_FILE_SIZE,
ServerDefinition.JOURNAL_MIN_FILES,
ServerDefinition.JOURNAL_POOL_FILES,
+ ServerDefinition.JOURNAL_FILE_OPEN_TIMEOUT,
ServerDefinition.JOURNAL_COMPACT_PERCENTAGE,
ServerDefinition.JOURNAL_COMPACT_MIN_FILES,
ServerDefinition.JOURNAL_MAX_IO,
@@ -596,6 +598,7 @@ private Configuration transformConfig(final OperationContext context, String ser
configuration.setJournalFileSize(JOURNAL_FILE_SIZE.resolveModelAttribute(context, model).asInt());
configuration.setJournalMinFiles(JOURNAL_MIN_FILES.resolveModelAttribute(context, model).asInt());
configuration.setJournalPoolFiles(JOURNAL_POOL_FILES.resolveModelAttribute(context, model).asInt());
+ configuration.setJournalFileOpenTimeout(JOURNAL_FILE_OPEN_TIMEOUT.resolveModelAttribute(context, model).asInt());
configuration.setJournalSyncNonTransactional(JOURNAL_SYNC_NON_TRANSACTIONAL.resolveModelAttribute(context, model).asBoolean());
configuration.setJournalSyncTransactional(JOURNAL_SYNC_TRANSACTIONAL.resolveModelAttribute(context, model).asBoolean());
configuration.setLogJournalWriteRate(LOG_JOURNAL_WRITE_RATE.resolveModelAttribute(context, model).asBoolean());
@@ -646,12 +649,6 @@ private Configuration transformConfig(final OperationContext context, String ser
return configuration;
}
- /**
- * Process the address settings.
- *
- * @param configuration the ActiveMQ configuration
- * @param params the detyped operation parameters
- */
/**
* Process the address settings.
*
diff --git a/messaging-activemq/src/main/java/org/wildfly/extension/messaging/activemq/ServerDefinition.java b/messaging-activemq/src/main/java/org/wildfly/extension/messaging/activemq/ServerDefinition.java
index fd537b68771e..6fbccbafb338 100644
--- a/messaging-activemq/src/main/java/org/wildfly/extension/messaging/activemq/ServerDefinition.java
+++ b/messaging-activemq/src/main/java/org/wildfly/extension/messaging/activemq/ServerDefinition.java
@@ -396,6 +396,18 @@ public class ServerDefinition extends PersistentResourceDefinition {
.setValidator(InfiniteOrPositiveValidators.INT_INSTANCE)
.setRestartAllServices()
.build();
+ /**
+ * @see ActiveMQDefaultConfiguration#getDefaultJournalFileOpenTimeout()
+ */
+ public static final SimpleAttributeDefinition JOURNAL_FILE_OPEN_TIMEOUT = create("journal-file-open-timeout", INT)
+ .setAttributeGroup("journal")
+ .setXmlName("file-open-timeout")
+ .setDefaultValue(new ModelNode(5))
+ .setRequired(false)
+ .setAllowExpression(true)
+ .setMeasurementUnit(SECONDS)
+ .setRestartAllServices()
+ .build();
/**
* @see ActiveMQDefaultConfiguration#isDefaultJournalSyncNonTransactional
*/
@@ -777,7 +789,7 @@ public class ServerDefinition extends PersistentResourceDefinition {
JOURNAL_MESSAGES_TABLE, JOURNAL_BINDINGS_TABLE, JOURNAL_JMS_BINDINGS_TABLE, JOURNAL_LARGE_MESSAGES_TABLE, JOURNAL_PAGE_STORE_TABLE,
JOURNAL_NODE_MANAGER_STORE_TABLE,
JOURNAL_SYNC_TRANSACTIONAL, JOURNAL_SYNC_NON_TRANSACTIONAL, LOG_JOURNAL_WRITE_RATE,
- JOURNAL_FILE_SIZE, JOURNAL_MIN_FILES, JOURNAL_POOL_FILES, JOURNAL_COMPACT_PERCENTAGE, JOURNAL_COMPACT_MIN_FILES, JOURNAL_MAX_IO,
+ JOURNAL_FILE_SIZE, JOURNAL_MIN_FILES, JOURNAL_POOL_FILES, JOURNAL_FILE_OPEN_TIMEOUT, JOURNAL_COMPACT_PERCENTAGE, JOURNAL_COMPACT_MIN_FILES, JOURNAL_MAX_IO,
PERF_BLAST_PAGES, RUN_SYNC_SPEED_TEST, SERVER_DUMP_INTERVAL, MEMORY_WARNING_THRESHOLD, MEMORY_MEASURE_INTERVAL,
GLOBAL_MAX_DISK_USAGE, DISK_SCAN_PERIOD, GLOBAL_MAX_MEMORY_SIZE
};
diff --git a/messaging-activemq/src/main/resources/org/wildfly/extension/messaging/activemq/LocalDescriptions.properties b/messaging-activemq/src/main/resources/org/wildfly/extension/messaging/activemq/LocalDescriptions.properties
index afd3efdae8a4..a4d6b95f1cfb 100644
--- a/messaging-activemq/src/main/resources/org/wildfly/extension/messaging/activemq/LocalDescriptions.properties
+++ b/messaging-activemq/src/main/resources/org/wildfly/extension/messaging/activemq/LocalDescriptions.properties
@@ -381,6 +381,7 @@ server.journal-min-files=How many journal files to pre-create.
server.journal-node-manager-store-table=Name of the JDBC table to store the node manager.
server.journal-page-store-table=Name of the JDBC table to store pages.
server.journal-pool-files=The number of journal files that can be reused. ActiveMQ will create as many files as needed however when reclaiming files it will shrink back to the value (-1 means no limit).
+server.journal-file-open-timeout=The timeout (in seconds) for opening journal files. Values <= 0 mean fail immediately.
server.journal-sync-non-transactional=Whether to wait for non transaction data to be synced to the journal before returning a response to the client.
server.journal-sync-transactional=Whether to wait for transaction data to be synchronized to the journal before returning a response to the client.
server.journal-type=The type of journal to use.
diff --git a/messaging-activemq/src/main/resources/schema/wildfly-messaging-activemq_6_0.xsd b/messaging-activemq/src/main/resources/schema/wildfly-messaging-activemq_6_0.xsd
index 47b0c7024636..c14ef6ee51d2 100644
--- a/messaging-activemq/src/main/resources/schema/wildfly-messaging-activemq_6_0.xsd
+++ b/messaging-activemq/src/main/resources/schema/wildfly-messaging-activemq_6_0.xsd
@@ -194,6 +194,7 @@
+
diff --git a/messaging-activemq/src/test/java/org/wildfly/extension/messaging/activemq/MessagingActiveMQSubsystem_6_0_TestCase.java b/messaging-activemq/src/test/java/org/wildfly/extension/messaging/activemq/MessagingActiveMQSubsystem_6_0_TestCase.java
index ef6ede635741..9723be8ff1da 100644
--- a/messaging-activemq/src/test/java/org/wildfly/extension/messaging/activemq/MessagingActiveMQSubsystem_6_0_TestCase.java
+++ b/messaging-activemq/src/test/java/org/wildfly/extension/messaging/activemq/MessagingActiveMQSubsystem_6_0_TestCase.java
@@ -28,6 +28,9 @@
import static org.jboss.as.model.test.ModelTestControllerVersion.EAP_7_0_0;
import static org.jboss.as.model.test.ModelTestControllerVersion.EAP_7_1_0;
import static org.junit.Assert.assertTrue;
+import static org.wildfly.extension.messaging.activemq.CommonAttributes.DEFAULT;
+import static org.wildfly.extension.messaging.activemq.CommonAttributes.SERVER;
+import static org.wildfly.extension.messaging.activemq.CommonAttributes.SUBSYSTEM;
import static org.wildfly.extension.messaging.activemq.MessagingDependencies.getActiveMQDependencies;
import static org.wildfly.extension.messaging.activemq.MessagingDependencies.getJGroupsDependencies;
import static org.wildfly.extension.messaging.activemq.MessagingDependencies.getMessagingActiveMQGAV;
@@ -59,6 +62,7 @@
import org.jboss.as.subsystem.test.KernelServices;
import org.jboss.as.subsystem.test.KernelServicesBuilder;
import org.jboss.dmr.ModelNode;
+import org.junit.Assert;
import org.junit.Test;
import org.wildfly.clustering.jgroups.spi.JGroupsDefaultRequirement;
import org.wildfly.clustering.spi.ClusteringDefaultRequirement;
@@ -107,6 +111,20 @@ public void testSchemaOfSubsystemTemplates() throws Exception {
super.testSchemaOfSubsystemTemplates();
}
+ @Test
+ public void testJournalAttributes() throws Exception {
+ KernelServices kernelServices = standardSubsystemTest(null, false);
+ ModelNode rootModel = kernelServices.readWholeModel();
+ ModelNode serverModel = rootModel.require(SUBSYSTEM).require(MessagingExtension.SUBSYSTEM_NAME).require(SERVER)
+ .require(DEFAULT);
+
+ Assert.assertEquals(1357, serverModel.get(ServerDefinition.JOURNAL_BUFFER_TIMEOUT.getName()).resolve().asInt());
+ Assert.assertEquals(102400, serverModel.get(ServerDefinition.JOURNAL_FILE_SIZE.getName()).resolve().asInt());
+ Assert.assertEquals(2, serverModel.get(ServerDefinition.JOURNAL_MIN_FILES.getName()).resolve().asInt());
+ Assert.assertEquals(5, serverModel.get(ServerDefinition.JOURNAL_POOL_FILES.getName()).resolve().asInt());
+ Assert.assertEquals(7, serverModel.get(ServerDefinition.JOURNAL_FILE_OPEN_TIMEOUT.getName()).resolve().asInt());
+ }
+
/////////////////////////////////////////
// Tests for HA Policy Configuration //
/////////////////////////////////////////
@@ -119,7 +137,7 @@ public void testHAPolicyConfiguration() throws Exception {
///////////////////////
// Transformers test //
///////////////////////
- @Test
+ @Test
public void testTransformersEAP_7_2_0() throws Exception {
testTransformers(ModelTestControllerVersion.EAP_7_2_0, MessagingExtension.VERSION_4_0_0);
}
@@ -205,6 +223,7 @@ private void testRejectingTransformers(ModelTestControllerVersion controllerVers
ServerDefinition.JOURNAL_JDBC_LOCK_EXPIRATION,
ServerDefinition.JOURNAL_JDBC_LOCK_RENEW_PERIOD,
ServerDefinition.JOURNAL_NODE_MANAGER_STORE_TABLE,
+ ServerDefinition.JOURNAL_FILE_OPEN_TIMEOUT,
ServerDefinition.GLOBAL_MAX_DISK_USAGE,
ServerDefinition.DISK_SCAN_PERIOD,
ServerDefinition.GLOBAL_MAX_MEMORY_SIZE
@@ -253,6 +272,7 @@ private void testRejectingTransformers(ModelTestControllerVersion controllerVers
new FailedOperationTransformationConfig.NewAttributesConfig(ServerDefinition.JOURNAL_JDBC_LOCK_EXPIRATION,
ServerDefinition.JOURNAL_JDBC_LOCK_RENEW_PERIOD,
ServerDefinition.JOURNAL_NODE_MANAGER_STORE_TABLE,
+ ServerDefinition.JOURNAL_FILE_OPEN_TIMEOUT,
ServerDefinition.GLOBAL_MAX_DISK_USAGE,
ServerDefinition.DISK_SCAN_PERIOD,
ServerDefinition.GLOBAL_MAX_MEMORY_SIZE
@@ -260,13 +280,17 @@ private void testRejectingTransformers(ModelTestControllerVersion controllerVers
.addFailedAttribute(subsystemAddress.append(SERVER_PATH, CONNECTION_FACTORY_PATH),
new FailedOperationTransformationConfig.NewAttributesConfig(
ConnectionFactoryAttributes.Common.INITIAL_MESSAGE_PACKET_SIZE));
- } else if(messagingVersion.compareTo(MessagingExtension.VERSION_5_0_0) > 0 ){
+ } else if (messagingVersion.compareTo(MessagingExtension.VERSION_5_0_0) > 0 ) {
config.addFailedAttribute(subsystemAddress.append(SERVER_PATH),
new FailedOperationTransformationConfig.NewAttributesConfig(
ServerDefinition.GLOBAL_MAX_DISK_USAGE,
ServerDefinition.DISK_SCAN_PERIOD,
- ServerDefinition.GLOBAL_MAX_MEMORY_SIZE));
+ ServerDefinition.GLOBAL_MAX_MEMORY_SIZE,
+ ServerDefinition.JOURNAL_FILE_OPEN_TIMEOUT));
+ } else if (messagingVersion.compareTo(MessagingExtension.VERSION_6_0_0) > 0 ) {
+ config.addFailedAttribute(subsystemAddress.append(SERVER_PATH), new FailedOperationTransformationConfig.NewAttributesConfig(ServerDefinition.JOURNAL_FILE_OPEN_TIMEOUT));
}
+
if (messagingVersion.compareTo(MessagingExtension.VERSION_4_0_0) > 0) {
config.addFailedAttribute(subsystemAddress.append(SERVER_PATH, MessagingExtension.BROADCAST_GROUP_PATH), new FailedOperationTransformationConfig.NewAttributesConfig(BroadcastGroupDefinition.JGROUPS_CHANNEL));
config.addFailedAttribute(subsystemAddress.append(SERVER_PATH, DiscoveryGroupDefinition.PATH), new FailedOperationTransformationConfig.NewAttributesConfig(DiscoveryGroupDefinition.JGROUPS_CHANNEL));
diff --git a/messaging-activemq/src/test/resources/org/wildfly/extension/messaging/activemq/subsystem_6_0.xml b/messaging-activemq/src/test/resources/org/wildfly/extension/messaging/activemq/subsystem_6_0.xml
index 41ffaab0b5b2..c48f9d3d90c6 100644
--- a/messaging-activemq/src/test/resources/org/wildfly/extension/messaging/activemq/subsystem_6_0.xml
+++ b/messaging-activemq/src/test/resources/org/wildfly/extension/messaging/activemq/subsystem_6_0.xml
@@ -182,6 +182,7 @@
file-size="${journal.file.size:102400}"
min-files="${journal.min.files:2}"
pool-files="${journal.pool.files:5}"
+ file-open-timeout="${journal.file.open.timeout:7}"
compact-percentage="${journal.compact.percentage:83}"
compact-min-files="${journal.compact.min.files:2}"
max-io="${journal.max.io:50}"
diff --git a/messaging-activemq/src/test/resources/org/wildfly/extension/messaging/activemq/subsystem_6_0_reject_transform.xml b/messaging-activemq/src/test/resources/org/wildfly/extension/messaging/activemq/subsystem_6_0_reject_transform.xml
index 759a5e15f77c..6fbb818e416e 100644
--- a/messaging-activemq/src/test/resources/org/wildfly/extension/messaging/activemq/subsystem_6_0_reject_transform.xml
+++ b/messaging-activemq/src/test/resources/org/wildfly/extension/messaging/activemq/subsystem_6_0_reject_transform.xml
@@ -66,7 +66,8 @@
page-store-table="MY_PAGE_STORE"
global-max-disk-usage="70"
global-max-memory-size="100000"
- disk-scan-period="10000"/>
+ disk-scan-period="10000"
+ file-open-timeout="7"/>