You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by jb...@apache.org on 2018/07/02 18:22:00 UTC
[1/2] activemq-artemis git commit: This closes #2167
Repository: activemq-artemis
Updated Branches:
refs/heads/master 8ce808755 -> da313f58b
This closes #2167
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/da313f58
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/da313f58
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/da313f58
Branch: refs/heads/master
Commit: da313f58b6de9d59b2e3ad777f2117564b2e56d4
Parents: 8ce8087 7a76d95
Author: Justin Bertram <jb...@apache.org>
Authored: Mon Jul 2 13:06:41 2018 -0500
Committer: Justin Bertram <jb...@apache.org>
Committed: Mon Jul 2 13:06:41 2018 -0500
----------------------------------------------------------------------
.../impl/journal/DescribeJournal.java | 47 +++++++++-
.../journal/JournalDataPrintTest.java | 90 ++++++++++++++++++++
.../src/test/resources/dataprint/etc/broker.xml | 84 ++++++++++++++++++
3 files changed, 217 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
[2/2] activemq-artemis git commit: ARTEMIS-1959 server startup
failure caused by './artemis data print'
Posted by jb...@apache.org.
ARTEMIS-1959 server startup failure caused by './artemis data print'
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/7a76d95e
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/7a76d95e
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/7a76d95e
Branch: refs/heads/master
Commit: 7a76d95e60f029e8ca1e1b9c05c53146c11bbb8f
Parents: 8ce8087
Author: 17103355 <17...@cnsuning.com>
Authored: Thu Jun 28 19:53:28 2018 +0800
Committer: Justin Bertram <jb...@apache.org>
Committed: Mon Jul 2 13:06:41 2018 -0500
----------------------------------------------------------------------
.../impl/journal/DescribeJournal.java | 47 +++++++++-
.../journal/JournalDataPrintTest.java | 90 ++++++++++++++++++++
.../src/test/resources/dataprint/etc/broker.xml | 84 ++++++++++++++++++
3 files changed, 217 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/7a76d95e/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/DescribeJournal.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/DescribeJournal.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/DescribeJournal.java
index 2021012..1842a58 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/DescribeJournal.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/DescribeJournal.java
@@ -40,7 +40,10 @@ import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalR
import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.UPDATE_DELIVERY_COUNT;
import java.io.File;
+import java.io.InputStreamReader;
import java.io.PrintStream;
+import java.io.Reader;
+import java.net.URL;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
@@ -51,7 +54,9 @@ import javax.transaction.xa.Xid;
import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
import org.apache.activemq.artemis.api.core.ActiveMQBuffers;
import org.apache.activemq.artemis.api.core.Message;
+import org.apache.activemq.artemis.core.config.Configuration;
import org.apache.activemq.artemis.core.config.impl.ConfigurationImpl;
+import org.apache.activemq.artemis.core.config.impl.FileConfiguration;
import org.apache.activemq.artemis.core.io.SequentialFileFactory;
import org.apache.activemq.artemis.core.io.nio.NIOSequentialFileFactory;
import org.apache.activemq.artemis.core.journal.EncodingSupport;
@@ -82,8 +87,12 @@ import org.apache.activemq.artemis.core.persistence.impl.journal.codec.Scheduled
import org.apache.activemq.artemis.core.server.LargeServerMessage;
import org.apache.activemq.artemis.spi.core.protocol.MessagePersister;
import org.apache.activemq.artemis.utils.Base64;
+import org.apache.activemq.artemis.utils.XMLUtil;
import org.apache.activemq.artemis.utils.XidCodecSupport;
-
+import org.jboss.logging.Logger;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
/**
* Outputs a String description of the Journals contents.
@@ -92,8 +101,40 @@ import org.apache.activemq.artemis.utils.XidCodecSupport;
*/
public final class DescribeJournal {
+ private static final Logger logger = Logger.getLogger(DescribeJournal.class);
+
private final List<RecordInfo> records;
private final List<PreparedTransactionInfo> preparedTransactions;
+ private static final Configuration CONFIGURATION;
+
+ static {
+ String instanceFolder = System.getProperty("artemis.instance");
+ if (instanceFolder != null) {
+ CONFIGURATION = new FileConfiguration();
+ File configFile = new File(instanceFolder + "/etc/broker.xml");
+ URL url;
+
+ try {
+ url = configFile.toURI().toURL();
+ Reader reader = new InputStreamReader(url.openStream());
+ String xml = XMLUtil.readerToString(reader);
+ xml = XMLUtil.replaceSystemProps(xml);
+ Element e = XMLUtil.stringToElement(xml);
+
+ 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);
+ }
+ } catch (Exception e) {
+ logger.error("failed to load broker.xml", e);
+ }
+ } else {
+ CONFIGURATION = new ConfigurationImpl();
+ }
+ }
public DescribeJournal(List<RecordInfo> records, List<PreparedTransactionInfo> preparedTransactions) {
this.records = records;
@@ -128,9 +169,7 @@ public final class DescribeJournal {
SequentialFileFactory messagesFF = new NIOSequentialFileFactory(messagesDir, null, 1);
// Will use only default values. The load function should adapt to anything different
- ConfigurationImpl defaultValues = new ConfigurationImpl();
-
- JournalImpl messagesJournal = new JournalImpl(defaultValues.getJournalFileSize(), defaultValues.getJournalMinFiles(), defaultValues.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);
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/7a76d95e/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/journal/JournalDataPrintTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/journal/JournalDataPrintTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/journal/JournalDataPrintTest.java
new file mode 100644
index 0000000..8e8b0d3
--- /dev/null
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/journal/JournalDataPrintTest.java
@@ -0,0 +1,90 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * <br>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <br>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.activemq.artemis.tests.integration.journal;
+
+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.server.ActiveMQServer;
+import org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl;
+import org.apache.activemq.artemis.jms.server.config.impl.FileJMSConfiguration;
+import org.apache.activemq.artemis.spi.core.security.ActiveMQJAASSecurityManager;
+import org.apache.activemq.artemis.spi.core.security.jaas.InVMLoginModule;
+import org.apache.activemq.artemis.tests.util.ActiveMQTestBase;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.File;
+
+public class JournalDataPrintTest extends ActiveMQTestBase {
+
+ protected ActiveMQServer server;
+
+ @Override
+ @Before
+ public void setUp() throws Exception {
+ super.setUp();
+ }
+
+ @Test
+ public void testJournalDataPrint() throws Exception {
+ ActiveMQServer server = getActiveMQServer("dataprint/etc/broker.xml");
+ try {
+ server.start();
+ server.stop();
+ System.setProperty("artemis.instance",
+ this.getClass().getClassLoader().getResource("dataprint").getFile());
+ PrintData.printData(server.getConfiguration().getBindingsLocation().getAbsoluteFile(), server.getConfiguration().getJournalLocation().getAbsoluteFile(), server.getConfiguration().getPagingLocation().getAbsoluteFile());
+
+ // list journal file
+ File dirFile = server.getConfiguration().getJournalLocation().getAbsoluteFile();
+ File[] files = dirFile.listFiles();
+ for (int i = 0; i < files.length; i++) {
+ File journalFile = files[i];
+ Assert.assertEquals(30 * 1024 * 1024L, journalFile.length());
+ }
+
+ server.start();
+ } finally {
+ try {
+ server.stop();
+ } catch (Exception e) {
+ }
+ }
+ }
+
+ protected ActiveMQServer getActiveMQServer(String brokerConfig) throws Exception {
+ FileConfiguration fc = new FileConfiguration();
+ FileJMSConfiguration fileConfiguration = new FileJMSConfiguration();
+ FileDeploymentManager deploymentManager = new FileDeploymentManager(brokerConfig);
+ deploymentManager.addDeployable(fc);
+ deploymentManager.addDeployable(fileConfiguration);
+ deploymentManager.readConfiguration();
+
+ ActiveMQJAASSecurityManager sm = new ActiveMQJAASSecurityManager(InVMLoginModule.class.getName(), new SecurityConfiguration());
+
+ recreateDirectory(fc.getBindingsDirectory());
+ recreateDirectory(fc.getJournalDirectory());
+ recreateDirectory(fc.getPagingDirectory());
+ recreateDirectory(fc.getLargeMessagesDirectory());
+
+ return addServer(new ActiveMQServerImpl(fc, sm));
+ }
+}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/7a76d95e/tests/integration-tests/src/test/resources/dataprint/etc/broker.xml
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/resources/dataprint/etc/broker.xml b/tests/integration-tests/src/test/resources/dataprint/etc/broker.xml
new file mode 100644
index 0000000..01b5591
--- /dev/null
+++ b/tests/integration-tests/src/test/resources/dataprint/etc/broker.xml
@@ -0,0 +1,84 @@
+<?xml version='1.0'?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<configuration xmlns="urn:activemq"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:activemq /schema/artemis-configuration.xsd">
+
+
+ <core xmlns="urn:activemq:core">
+
+ <name>0.0.0.0</name>
+
+ <configuration-file-refresh-period>100</configuration-file-refresh-period>
+
+ <persistence-enabled>false</persistence-enabled>
+
+ <security-enabled>false</security-enabled>
+
+ <!-- this could be ASYNCIO or NIO
+ -->
+ <journal-type>NIO</journal-type>
+
+ <paging-directory>./target/tmp/printdata/paging</paging-directory>
+
+ <bindings-directory>./target/tmp/printdata/bindings</bindings-directory>
+
+ <journal-directory>./target/tmp/printdata/journal</journal-directory>
+
+ <large-messages-directory>./target/tmp/printdata/large-messages</large-messages-directory>
+
+ <journal-min-files>2</journal-min-files>
+
+ <journal-pool-files>-1</journal-pool-files>
+
+ <journal-file-size>30Mb</journal-file-size>
+
+ <addresses>
+ <address name="mytopic_2">
+ <multicast>
+ <queue name="queue.A" />
+ <queue name="queue.B" />
+ <queue name="queue.C" />
+ </multicast>
+ </address>
+ <address name="mytopic_1">
+ <multicast>
+ <queue name="queue.A" />
+ <queue name="queue.B" />
+ <queue name="queue.C" />
+ </multicast>
+ </address>
+ </addresses>
+
+ <address-settings>
+ <!--default for catch all-->
+ <address-setting match="#">
+ <auto-create-queues>false</auto-create-queues>
+ <dead-letter-address>DLQ</dead-letter-address>
+ <expiry-address>ExpiryQueue</expiry-address>
+ <redelivery-delay>0</redelivery-delay>
+ <max-size-bytes>10Mb</max-size-bytes>
+ <message-counter-history-day-limit>10</message-counter-history-day-limit>
+ <address-full-policy>BLOCK</address-full-policy>
+ </address-setting>
+ </address-settings>
+ </core>
+</configuration>