You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cl...@apache.org on 2018/09/26 13:24:04 UTC
[1/2] activemq-artemis git commit: This closes #2326
Repository: activemq-artemis
Updated Branches:
refs/heads/master 9d6f13138 -> a5b19ad1e
This closes #2326
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/a5b19ad1
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/a5b19ad1
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/a5b19ad1
Branch: refs/heads/master
Commit: a5b19ad1e73e91ee5b2bc9535a1fefaa256145c8
Parents: 9d6f131 cce0e19
Author: Clebert Suconic <cl...@apache.org>
Authored: Wed Sep 26 09:23:57 2018 -0400
Committer: Clebert Suconic <cl...@apache.org>
Committed: Wed Sep 26 09:23:57 2018 -0400
----------------------------------------------------------------------
.../core/server/impl/ActiveMQServerImpl.java | 63 ++++++++++----------
.../tests/integration/jms/RedeployTest.java | 22 ++++++-
.../test/resources/reload-backup-changed.xml | 14 +++++
.../test/resources/reload-backup-original.xml | 14 +++++
.../src/test/resources/reload-live-changed.xml | 14 +++++
.../src/test/resources/reload-live-original.xml | 14 +++++
6 files changed, 108 insertions(+), 33 deletions(-)
----------------------------------------------------------------------
[2/2] activemq-artemis git commit: ARTEMIS-2094 - Fix Configuration
change loss when network Issue
Posted by cl...@apache.org.
ARTEMIS-2094 - Fix Configuration change loss when network Issue
Further fix around network loss.
If network loss (split) and slave activates, for a period its config used when it initializes in initialisePart2 was stale.
Add/Extend test to ensure address-setting change made on live preserved on slave (after activation)
Add/Extend test to ensure security-setting change made on live preserved on backup (after activation)
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/cce0e192
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/cce0e192
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/cce0e192
Branch: refs/heads/master
Commit: cce0e1927c258ce6f3c3c3cb0d90bad5337b7d12
Parents: 9d6f131
Author: Michael André Pearce <mi...@me.com>
Authored: Fri Sep 21 19:04:39 2018 +0100
Committer: Clebert Suconic <cl...@apache.org>
Committed: Wed Sep 26 09:23:57 2018 -0400
----------------------------------------------------------------------
.../core/server/impl/ActiveMQServerImpl.java | 63 ++++++++++----------
.../tests/integration/jms/RedeployTest.java | 22 ++++++-
.../test/resources/reload-backup-changed.xml | 14 +++++
.../test/resources/reload-backup-original.xml | 14 +++++
.../src/test/resources/reload-live-changed.xml | 14 +++++
.../src/test/resources/reload-live-original.xml | 14 +++++
6 files changed, 108 insertions(+), 33 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/cce0e192/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java
index b5a49ee..a5591d0 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java
@@ -2602,15 +2602,7 @@ public class ActiveMQServerImpl implements ActiveMQServer {
}
// Deploy the rest of the stuff
-
- // Deploy predefined addresses
- deployAddressesFromConfiguration();
-
- // Deploy any predefined queues
- deployQueuesFromConfiguration();
-
- // Undeploy any addresses and queues not in config
- undeployAddressesAndQueueNotInConfiguration();
+ deployReloadableConfigFromConfiguration(configuration);
// We need to call this here, this gives any dependent server a chance to deploy its own addresses
// this needs to be done before clustering is fully activated
@@ -2830,6 +2822,8 @@ public class ActiveMQServerImpl implements ActiveMQServer {
}
}
+
+
private JournalLoadInformation[] loadJournals() throws Exception {
JournalLoader journalLoader = activation.createJournalLoader(postOffice, pagingManager, storageManager, queueFactory, nodeManager, managementService, groupingHandler, configuration, parentServer);
@@ -3480,33 +3474,38 @@ public class ActiveMQServerImpl implements ActiveMQServer {
@Override
public void reload(URL uri) throws Exception {
+ Configuration config = new FileConfigurationParser().parseMainConfig(uri.openStream());
+ LegacyJMSConfiguration legacyJMSConfiguration = new LegacyJMSConfiguration(config);
+ legacyJMSConfiguration.parseConfiguration(uri.openStream());
+ configuration.setSecurityRoles(config.getSecurityRoles());
+ configuration.setAddressesSettings(config.getAddressesSettings());
+ configuration.setDivertConfigurations(config.getDivertConfigurations());
+ configuration.setAddressConfigurations(config.getAddressConfigurations());
+ configuration.setQueueConfigurations(config.getQueueConfigurations());
if (isActive()) {
- Configuration config = new FileConfigurationParser().parseMainConfig(uri.openStream());
- LegacyJMSConfiguration legacyJMSConfiguration = new LegacyJMSConfiguration(config);
- legacyJMSConfiguration.parseConfiguration(uri.openStream());
-
- ActiveMQServerLogger.LOGGER.reloadingConfiguration("security");
- securityRepository.swap(config.getSecurityRoles().entrySet());
- configuration.setSecurityRoles(config.getSecurityRoles());
-
- ActiveMQServerLogger.LOGGER.reloadingConfiguration("address settings");
- addressSettingsRepository.swap(config.getAddressesSettings().entrySet());
- configuration.setAddressesSettings(config.getAddressesSettings());
-
- ActiveMQServerLogger.LOGGER.reloadingConfiguration("diverts");
- for (DivertConfiguration divertConfig : config.getDivertConfigurations()) {
- if (postOffice.getBinding(new SimpleString(divertConfig.getName())) == null) {
- deployDivert(divertConfig);
- }
- }
+ deployReloadableConfigFromConfiguration(configuration);
+ }
+ }
+ }
- ActiveMQServerLogger.LOGGER.reloadingConfiguration("addresses");
- undeployAddressesAndQueueNotInConfiguration(config);
- deployAddressesFromConfiguration(config);
- configuration.setAddressConfigurations(config.getAddressConfigurations());
- configuration.setQueueConfigurations(config.getQueueConfigurations());
+ private void deployReloadableConfigFromConfiguration(Configuration config) throws Exception {
+ ActiveMQServerLogger.LOGGER.reloadingConfiguration("security");
+ securityRepository.swap(config.getSecurityRoles().entrySet());
+
+ ActiveMQServerLogger.LOGGER.reloadingConfiguration("address settings");
+ addressSettingsRepository.swap(config.getAddressesSettings().entrySet());
+
+ ActiveMQServerLogger.LOGGER.reloadingConfiguration("diverts");
+ for (DivertConfiguration divertConfig : config.getDivertConfigurations()) {
+ if (postOffice.getBinding(new SimpleString(divertConfig.getName())) == null) {
+ deployDivert(divertConfig);
}
}
+
+ ActiveMQServerLogger.LOGGER.reloadingConfiguration("addresses");
+ undeployAddressesAndQueueNotInConfiguration(config);
+ deployAddressesFromConfiguration(config);
+ deployQueuesFromListCoreQueueConfiguration(config.getQueueConfigurations());
}
public Set<ActivateCallback> getActivateCallbacks() {
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/cce0e192/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/RedeployTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/RedeployTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/RedeployTest.java
index cec56a0..c4c6606 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/RedeployTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/RedeployTest.java
@@ -21,6 +21,7 @@ import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardCopyOption;
+import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;
@@ -43,6 +44,7 @@ import org.apache.activemq.artemis.core.postoffice.QueueBinding;
import org.apache.activemq.artemis.core.security.Role;
import org.apache.activemq.artemis.core.server.embedded.EmbeddedActiveMQ;
import org.apache.activemq.artemis.core.server.impl.AddressInfo;
+import org.apache.activemq.artemis.core.settings.impl.AddressFullMessagePolicy;
import org.apache.activemq.artemis.core.settings.impl.AddressSettings;
import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory;
import org.apache.activemq.artemis.junit.Wait;
@@ -205,6 +207,13 @@ public class RedeployTest extends ActiveMQTestBase {
@Test
public void testRedeployWithFailover() throws Exception {
+ Set<Role> original = new HashSet<>();
+ original.add(new Role("a", false, true, false, false, false, false, false, false, false, false));
+ Set<Role> changed = new HashSet<>();
+ changed.add(new Role("b", false, true, false, false, false, false, false, false, false, false));
+
+
+
EmbeddedActiveMQ live = new EmbeddedActiveMQ();
EmbeddedActiveMQ backup = new EmbeddedActiveMQ();
@@ -232,6 +241,11 @@ public class RedeployTest extends ActiveMQTestBase {
assertTrue(Wait.waitFor(() -> backup.getActiveMQServer().isReplicaSync(), 15000, 200));
+ assertEquals("Test address settings original - live", AddressFullMessagePolicy.BLOCK, live.getActiveMQServer().getAddressSettingsRepository().getMatch("myQueue").getAddressFullMessagePolicy());
+ assertEquals("Test address settings original - backup", AddressFullMessagePolicy.BLOCK, backup.getActiveMQServer().getAddressSettingsRepository().getMatch("myQueue").getAddressFullMessagePolicy());
+ assertEquals("Test security settings original - live", original, live.getActiveMQServer().getSecurityRepository().getMatch("myQueue"));
+ assertEquals("Test security settings original - backup", original, backup.getActiveMQServer().getSecurityRepository().getMatch("myQueue"));
+
final ReusableLatch liveReloadLatch = new ReusableLatch(1);
Runnable liveTick = () -> liveReloadLatch.countDown();
live.getActiveMQServer().getReloadManager().setTick(liveTick);
@@ -259,9 +273,13 @@ public class RedeployTest extends ActiveMQTestBase {
Session session = connection.createSession();
Queue queue = session.createQueue("myQueue2");
MessageProducer producer = session.createProducer(queue);
- producer.send(session.createTextMessage("text"));
+ producer.send(session.createTextMessage("text1"));
}
+ assertFalse(backup.getActiveMQServer().isActive());
+ assertEquals("Test address settings redeploy - live", AddressFullMessagePolicy.PAGE, live.getActiveMQServer().getAddressSettingsRepository().getMatch("myQueue").getAddressFullMessagePolicy());
+ assertEquals("Test security settings redeploy - live", changed, live.getActiveMQServer().getSecurityRepository().getMatch("myQueue"));
+
live.stop();
assertTrue(Wait.waitFor(() -> (backup.getActiveMQServer().isActive()), 5000, 100));
@@ -277,6 +295,8 @@ public class RedeployTest extends ActiveMQTestBase {
Assert.assertNotNull("Queue wasn't deployed accordingly", consumer.receive(5000));
Assert.assertNotNull(consumer.receive(5000));
}
+ assertEquals("Test address settings redeploy - backup", changed, backup.getActiveMQServer().getSecurityRepository().getMatch("myQueue"));
+ assertEquals("Test security settings redeploy - backup", AddressFullMessagePolicy.PAGE, backup.getActiveMQServer().getAddressSettingsRepository().getMatch("myQueue").getAddressFullMessagePolicy());
} finally {
live.stop();
backup.stop();
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/cce0e192/tests/integration-tests/src/test/resources/reload-backup-changed.xml
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/resources/reload-backup-changed.xml b/tests/integration-tests/src/test/resources/reload-backup-changed.xml
index 8ea9241..a4d94f7 100644
--- a/tests/integration-tests/src/test/resources/reload-backup-changed.xml
+++ b/tests/integration-tests/src/test/resources/reload-backup-changed.xml
@@ -78,5 +78,19 @@ under the License.
</anycast>
</address>
</addresses>
+
+ <address-settings>
+ <address-setting match="#" >
+ <address-full-policy>PAGE</address-full-policy>
+ <config-delete-queues>FORCE</config-delete-queues>
+ <config-delete-addresses>FORCE</config-delete-addresses>
+ </address-setting>
+ </address-settings>
+
+ <security-settings>
+ <security-setting match="#" >
+ <permission type="consume" roles="b" />
+ </security-setting>
+ </security-settings>
</core>
</configuration>
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/cce0e192/tests/integration-tests/src/test/resources/reload-backup-original.xml
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/resources/reload-backup-original.xml b/tests/integration-tests/src/test/resources/reload-backup-original.xml
index 54a01a9..5dd92b3 100644
--- a/tests/integration-tests/src/test/resources/reload-backup-original.xml
+++ b/tests/integration-tests/src/test/resources/reload-backup-original.xml
@@ -73,5 +73,19 @@ under the License.
</anycast>
</address>
</addresses>
+
+ <address-settings>
+ <address-setting match="#" >
+ <address-full-policy>BLOCK</address-full-policy>
+ <config-delete-queues>FORCE</config-delete-queues>
+ <config-delete-addresses>FORCE</config-delete-addresses>
+ </address-setting>
+ </address-settings>
+
+ <security-settings>
+ <security-setting match="#" >
+ <permission type="consume" roles="a" />
+ </security-setting>
+ </security-settings>
</core>
</configuration>
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/cce0e192/tests/integration-tests/src/test/resources/reload-live-changed.xml
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/resources/reload-live-changed.xml b/tests/integration-tests/src/test/resources/reload-live-changed.xml
index 17120ce..f603263 100644
--- a/tests/integration-tests/src/test/resources/reload-live-changed.xml
+++ b/tests/integration-tests/src/test/resources/reload-live-changed.xml
@@ -78,5 +78,19 @@ under the License.
</anycast>
</address>
</addresses>
+
+ <address-settings>
+ <address-setting match="#" >
+ <address-full-policy>PAGE</address-full-policy>
+ <config-delete-queues>FORCE</config-delete-queues>
+ <config-delete-addresses>FORCE</config-delete-addresses>
+ </address-setting>
+ </address-settings>
+
+ <security-settings>
+ <security-setting match="#" >
+ <permission type="consume" roles="b" />
+ </security-setting>
+ </security-settings>
</core>
</configuration>
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/cce0e192/tests/integration-tests/src/test/resources/reload-live-original.xml
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/resources/reload-live-original.xml b/tests/integration-tests/src/test/resources/reload-live-original.xml
index 9051d58..3979c9a 100644
--- a/tests/integration-tests/src/test/resources/reload-live-original.xml
+++ b/tests/integration-tests/src/test/resources/reload-live-original.xml
@@ -73,5 +73,19 @@ under the License.
</anycast>
</address>
</addresses>
+
+ <address-settings>
+ <address-setting match="#" >
+ <address-full-policy>BLOCK</address-full-policy>
+ <config-delete-queues>FORCE</config-delete-queues>
+ <config-delete-addresses>FORCE</config-delete-addresses>
+ </address-setting>
+ </address-settings>
+
+ <security-settings>
+ <security-setting match="#" >
+ <permission type="consume" roles="a" />
+ </security-setting>
+ </security-settings>
</core>
</configuration>