mirror of
https://github.com/apache/activemq-artemis.git
synced 2025-03-01 06:49:25 +00:00
This closes #2177
This commit is contained in:
commit
7d7daa1ff2
@ -79,24 +79,27 @@ public class ReplicatedPolicyConfiguration implements HAPolicyConfiguration {
|
||||
return initialReplicationSyncTimeout;
|
||||
}
|
||||
|
||||
public void setInitialReplicationSyncTimeout(long initialReplicationSyncTimeout) {
|
||||
public ReplicatedPolicyConfiguration setInitialReplicationSyncTimeout(long initialReplicationSyncTimeout) {
|
||||
this.initialReplicationSyncTimeout = initialReplicationSyncTimeout;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean getVoteOnReplicationFailure() {
|
||||
return voteOnReplicationFailure;
|
||||
}
|
||||
|
||||
public void setVoteOnReplicationFailure(boolean voteOnReplicationFailure) {
|
||||
public ReplicatedPolicyConfiguration setVoteOnReplicationFailure(boolean voteOnReplicationFailure) {
|
||||
this.voteOnReplicationFailure = voteOnReplicationFailure;
|
||||
return this;
|
||||
}
|
||||
|
||||
public int getQuorumSize() {
|
||||
return quorumSize;
|
||||
}
|
||||
|
||||
public void setQuorumSize(int quorumSize) {
|
||||
public ReplicatedPolicyConfiguration setQuorumSize(int quorumSize) {
|
||||
this.quorumSize = quorumSize;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
@ -104,12 +107,14 @@ public class ReplicatedPolicyConfiguration implements HAPolicyConfiguration {
|
||||
return voteRetries;
|
||||
}
|
||||
|
||||
public void setVoteRetries(int voteRetries) {
|
||||
public ReplicatedPolicyConfiguration setVoteRetries(int voteRetries) {
|
||||
this.voteRetries = voteRetries;
|
||||
return this;
|
||||
}
|
||||
|
||||
public void setVoteRetryWait(long voteRetryWait) {
|
||||
public ReplicatedPolicyConfiguration setVoteRetryWait(long voteRetryWait) {
|
||||
this.voteRetryWait = voteRetryWait;
|
||||
return this;
|
||||
}
|
||||
|
||||
public long getVoteRetryWait() {
|
||||
@ -120,7 +125,9 @@ public class ReplicatedPolicyConfiguration implements HAPolicyConfiguration {
|
||||
return quorumVoteWait;
|
||||
}
|
||||
|
||||
public void setQuorumVoteWait(int quorumVoteWait) {
|
||||
public ReplicatedPolicyConfiguration setQuorumVoteWait(int quorumVoteWait) {
|
||||
new Exception("here").printStackTrace();
|
||||
this.quorumVoteWait = quorumVoteWait;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
@ -105,12 +105,12 @@ public final class DescribeJournal {
|
||||
|
||||
private final List<RecordInfo> records;
|
||||
private final List<PreparedTransactionInfo> preparedTransactions;
|
||||
private static final Configuration CONFIGURATION;
|
||||
|
||||
static {
|
||||
private static Configuration getConfiguration() {
|
||||
Configuration configuration;
|
||||
String instanceFolder = System.getProperty("artemis.instance");
|
||||
if (instanceFolder != null) {
|
||||
CONFIGURATION = new FileConfiguration();
|
||||
configuration = new FileConfiguration();
|
||||
File configFile = new File(instanceFolder + "/etc/broker.xml");
|
||||
URL url;
|
||||
|
||||
@ -121,19 +121,21 @@ public final class DescribeJournal {
|
||||
xml = XMLUtil.replaceSystemProps(xml);
|
||||
Element e = XMLUtil.stringToElement(xml);
|
||||
|
||||
String root = ((FileConfiguration) CONFIGURATION).getRootElement();
|
||||
String root = ((FileConfiguration) configuration).getRootElement();
|
||||
NodeList children = e.getElementsByTagName(root);
|
||||
if (root != null && children.getLength() > 0) {
|
||||
Node item = children.item(0);
|
||||
XMLUtil.validate(item, ((FileConfiguration) CONFIGURATION).getSchema());
|
||||
((FileConfiguration) CONFIGURATION).parse((Element) item, url);
|
||||
XMLUtil.validate(item, ((FileConfiguration) configuration).getSchema());
|
||||
((FileConfiguration) configuration).parse((Element) item, url);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logger.error("failed to load broker.xml", e);
|
||||
}
|
||||
} else {
|
||||
CONFIGURATION = new ConfigurationImpl();
|
||||
configuration = new ConfigurationImpl();
|
||||
}
|
||||
|
||||
return configuration;
|
||||
}
|
||||
|
||||
public DescribeJournal(List<RecordInfo> records, List<PreparedTransactionInfo> preparedTransactions) {
|
||||
@ -166,10 +168,11 @@ public final class DescribeJournal {
|
||||
}
|
||||
|
||||
public static DescribeJournal describeMessagesJournal(final File messagesDir, PrintStream out, boolean safe) throws Exception {
|
||||
Configuration configuration = getConfiguration();
|
||||
SequentialFileFactory messagesFF = new NIOSequentialFileFactory(messagesDir, null, 1);
|
||||
|
||||
// Will use only default values. The load function should adapt to anything different
|
||||
JournalImpl messagesJournal = new JournalImpl(CONFIGURATION.getJournalFileSize(), CONFIGURATION.getJournalMinFiles(), CONFIGURATION.getJournalPoolFiles(), 0, 0, messagesFF, "activemq-data", "amq", 1);
|
||||
JournalImpl messagesJournal = new JournalImpl(configuration.getJournalFileSize(), configuration.getJournalMinFiles(), configuration.getJournalPoolFiles(), 0, 0, messagesFF, "activemq-data", "amq", 1);
|
||||
|
||||
return describeJournal(messagesFF, messagesJournal, messagesDir, out, safe);
|
||||
}
|
||||
|
@ -21,6 +21,7 @@ import org.apache.activemq.artemis.core.config.ha.ReplicaPolicyConfiguration;
|
||||
import org.apache.activemq.artemis.core.config.ha.ReplicatedPolicyConfiguration;
|
||||
import org.apache.activemq.artemis.core.server.cluster.ha.ReplicatedPolicy;
|
||||
import org.junit.Test;
|
||||
|
||||
public class QuorumResultWaitTest extends StaticClusterWithBackupFailoverTest {
|
||||
|
||||
public static final int QUORUM_VOTE_WAIT_CONFIGURED_TIME_SEC = 12;
|
||||
@ -33,7 +34,7 @@ public class QuorumResultWaitTest extends StaticClusterWithBackupFailoverTest {
|
||||
((ReplicatedPolicyConfiguration) servers[2].getConfiguration().getHAPolicyConfiguration()).setGroupName("group2");
|
||||
((ReplicaPolicyConfiguration) servers[4].getConfiguration().getHAPolicyConfiguration()).setGroupName("group1");
|
||||
((ReplicaPolicyConfiguration) servers[5].getConfiguration().getHAPolicyConfiguration()).setGroupName("group2");
|
||||
ReplicatedPolicyConfiguration replicatedPolicyConf = new ReplicatedPolicyConfiguration();
|
||||
ReplicatedPolicyConfiguration replicatedPolicyConf = new ReplicatedPolicyConfiguration().setQuorumVoteWait(QUORUM_VOTE_WAIT_CONFIGURED_TIME_SEC);
|
||||
replicatedPolicyConf.setGroupName("group0");
|
||||
replicatedPolicyConf.setVoteRetries(5);
|
||||
replicatedPolicyConf.setVoteRetryWait(100);
|
||||
@ -43,12 +44,16 @@ public class QuorumResultWaitTest extends StaticClusterWithBackupFailoverTest {
|
||||
@Test
|
||||
public void testQuorumVotingResultWait() throws Exception {
|
||||
setupCluster();
|
||||
startServers(0, 1, 2);
|
||||
startServers(3, 4, 5);
|
||||
//Assert if the default time 30 sec is used
|
||||
assertEquals(ActiveMQDefaultConfiguration.getDefaultQuorumVoteWait(), ((ReplicatedPolicy)(servers[0].getHAPolicy())).getQuorumVoteWait());
|
||||
//Assert if the configured time is used.
|
||||
assertEquals(QUORUM_VOTE_WAIT_CONFIGURED_TIME_SEC, ((ReplicatedPolicy)(servers[3].getHAPolicy())).getQuorumVoteWait());
|
||||
try {
|
||||
startServers(0, 1, 2);
|
||||
startServers(3, 4, 5);
|
||||
//Assert if the default time 30 sec is used
|
||||
assertEquals(ActiveMQDefaultConfiguration.getDefaultQuorumVoteWait(), ((ReplicatedPolicy) (servers[0].getHAPolicy())).getQuorumVoteWait());
|
||||
//Assert if the configured time is used.
|
||||
assertEquals(QUORUM_VOTE_WAIT_CONFIGURED_TIME_SEC, ((ReplicatedPolicy) (servers[3].getHAPolicy())).getQuorumVoteWait());
|
||||
} finally {
|
||||
stopServers(0, 1, 2, 3, 4, 5);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -21,6 +21,7 @@ import org.apache.activemq.artemis.cli.commands.tools.PrintData;
|
||||
import org.apache.activemq.artemis.core.config.FileDeploymentManager;
|
||||
import org.apache.activemq.artemis.core.config.impl.FileConfiguration;
|
||||
import org.apache.activemq.artemis.core.config.impl.SecurityConfiguration;
|
||||
import org.apache.activemq.artemis.core.persistence.impl.journal.DescribeJournal;
|
||||
import org.apache.activemq.artemis.core.server.ActiveMQServer;
|
||||
import org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl;
|
||||
import org.apache.activemq.artemis.jms.server.config.impl.FileJMSConfiguration;
|
||||
@ -32,6 +33,9 @@ import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.io.PrintStream;
|
||||
|
||||
public class JournalDataPrintTest extends ActiveMQTestBase {
|
||||
|
||||
@ -49,9 +53,17 @@ public class JournalDataPrintTest extends ActiveMQTestBase {
|
||||
try {
|
||||
server.start();
|
||||
server.stop();
|
||||
// This will force some static load that used to be on the class, which would make this test to fail.
|
||||
DescribeJournal journal = new DescribeJournal(null, null);
|
||||
System.setProperty("artemis.instance",
|
||||
this.getClass().getClassLoader().getResource("dataprint").getFile());
|
||||
PrintData.printData(server.getConfiguration().getBindingsLocation().getAbsoluteFile(), server.getConfiguration().getJournalLocation().getAbsoluteFile(), server.getConfiguration().getPagingLocation().getAbsoluteFile());
|
||||
PrintData.printData(server.getConfiguration().getBindingsLocation().getAbsoluteFile(), server.getConfiguration().getJournalLocation().getAbsoluteFile(), server.getConfiguration().getPagingLocation().getAbsoluteFile(),
|
||||
new PrintStream(new OutputStream() {
|
||||
@Override
|
||||
public void write(int b) throws IOException {
|
||||
// dev/null
|
||||
}
|
||||
}), false);
|
||||
|
||||
// list journal file
|
||||
File dirFile = server.getConfiguration().getJournalLocation().getAbsoluteFile();
|
||||
|
Loading…
x
Reference in New Issue
Block a user