Skip to content

Commit

Permalink
WFLY-11404 Add journal-file-open-timeout attribute to messaging server
Browse files Browse the repository at this point in the history
  • Loading branch information
TomasHofman committed Mar 25, 2019
1 parent a81ae98 commit 6349fb7
Show file tree
Hide file tree
Showing 9 changed files with 56 additions and 13 deletions.
Expand Up @@ -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,
Expand Down
Expand Up @@ -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);
Expand All @@ -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.
Expand Down
Expand Up @@ -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;
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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());
Expand Down Expand Up @@ -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.
*
Expand Down
Expand Up @@ -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
*/
Expand Down Expand Up @@ -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
};
Expand Down
Expand Up @@ -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.
Expand Down
Expand Up @@ -194,6 +194,7 @@
<xs:attribute name="file-size" type="xs:long" />
<xs:attribute name="min-files" type="xs:int" />
<xs:attribute name="pool-files" type="xs:int" />
<xs:attribute name="file-open-timeout" type="xs:int" />
<xs:attribute name="compact-percentage" type="xs:int" />
<xs:attribute name="compact-min-files" type="xs:int" />
<xs:attribute name="max-io" type="xs:int" />
Expand Down
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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 //
/////////////////////////////////////////
Expand All @@ -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);
}
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -253,20 +272,25 @@ 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
))
.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));
Expand Down
Expand Up @@ -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}"
Expand Down
Expand Up @@ -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"/>

<replication-colocated>
<master />
Expand Down

0 comments on commit 6349fb7

Please sign in to comment.