This is an automated email from the ASF dual-hosted git repository.
tabish pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git
The following commit(s) were added to refs/heads/main by this push:
new 8d7608b4d6 ARTEMIS-4929 use correct details for expiration audit log
8d7608b4d6 is described below
commit 8d7608b4d64bf23bd6be923cb16b08426809112d
Author: Justin Bertram <[email protected]>
AuthorDate: Mon Nov 10 16:41:50 2025 -0600
ARTEMIS-4929 use correct details for expiration audit log
---
.../artemis/core/server/impl/QueueImpl.java | 13 +++++++--
.../tests/smoke/logging/AuditLoggerTest.java | 31 ++++++++++++++++++++++
2 files changed, 42 insertions(+), 2 deletions(-)
diff --git
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/QueueImpl.java
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/QueueImpl.java
index aefcba2564..5ff8f65021 100644
---
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/QueueImpl.java
+++
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/QueueImpl.java
@@ -107,6 +107,7 @@ import
org.apache.activemq.artemis.core.transaction.impl.BindingsTransactionImpl
import org.apache.activemq.artemis.core.transaction.impl.TransactionImpl;
import org.apache.activemq.artemis.logs.AuditLogger;
import org.apache.activemq.artemis.spi.core.protocol.RemotingConnection;
+import org.apache.activemq.artemis.spi.core.security.jaas.UserPrincipal;
import org.apache.activemq.artemis.utils.ArtemisCloseable;
import org.apache.activemq.artemis.utils.BooleanUtil;
import org.apache.activemq.artemis.utils.Env;
@@ -1733,8 +1734,16 @@ public class QueueImpl extends CriticalComponentImpl
implements Queue {
if (AuditLogger.isMessageLoggingEnabled()) {
// it's possible for the consumer to be null (e.g. acking the
message administratively)
final ServerSession session = consumer != null ?
server.getSessionByID(consumer.getSessionID()) : null;
- final Subject subject = session == null ? null :
session.getRemotingConnection().getSubject();
- final String remoteAddress = session == null ? null :
session.getRemotingConnection().getRemoteAddress();
+ final Subject subject;
+ final String remoteAddress;
+ if (session == null) {
+ subject = new Subject();
+ subject.getPrincipals().add(new UserPrincipal("system"));
+ remoteAddress = "internal";
+ } else {
+ subject = session.getRemotingConnection().getSubject();
+ remoteAddress =
session.getRemotingConnection().getRemoteAddress();
+ }
if (transactional) {
AuditLogger.addAckToTransaction(subject, remoteAddress,
getName().toString(), ref.getMessage().toString(), tx.toString());
diff --git
a/tests/smoke-tests/src/test/java/org/apache/activemq/artemis/tests/smoke/logging/AuditLoggerTest.java
b/tests/smoke-tests/src/test/java/org/apache/activemq/artemis/tests/smoke/logging/AuditLoggerTest.java
index 85b95915cf..c03b43590a 100644
---
a/tests/smoke-tests/src/test/java/org/apache/activemq/artemis/tests/smoke/logging/AuditLoggerTest.java
+++
b/tests/smoke-tests/src/test/java/org/apache/activemq/artemis/tests/smoke/logging/AuditLoggerTest.java
@@ -38,12 +38,15 @@ import org.apache.activemq.artemis.api.core.Message;
import org.apache.activemq.artemis.api.core.QueueConfiguration;
import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.api.core.SimpleString;
+import org.apache.activemq.artemis.api.core.client.ClientMessage;
import org.apache.activemq.artemis.api.core.client.ClientProducer;
import org.apache.activemq.artemis.api.core.client.ClientSession;
import org.apache.activemq.artemis.api.core.client.ClientSessionFactory;
import org.apache.activemq.artemis.api.core.client.ServerLocator;
+import org.apache.activemq.artemis.api.core.management.ActiveMQServerControl;
import org.apache.activemq.artemis.api.core.management.AddressControl;
import org.apache.activemq.artemis.api.core.management.ObjectNameBuilder;
+import org.apache.activemq.artemis.core.settings.impl.AddressSettings;
import org.apache.activemq.artemis.tests.util.CFUtil;
import org.apache.activemq.artemis.utils.Base64;
import org.apache.activemq.artemis.utils.RandomUtil;
@@ -199,4 +202,32 @@ public class AuditLoggerTest extends AuditLoggerTestBase {
Wait.assertTrue(() -> findLogRecord(getAuditLog(), "is consuming a
message from"), 5000);
Wait.assertTrue(() -> findLogRecord(getAuditLog(), "acknowledged message
from"), 5000);
}
+
+ @Test
+ public void testExpiration() throws Exception {
+ final int EXPIRATION = 1000;
+ final SimpleString queue = RandomUtil.randomUUIDSimpleString();
+ final SimpleString expiryQueue = RandomUtil.randomUUIDSimpleString();
+
+ JMXConnector jmxConnector = getJmxConnector();
+ MBeanServerConnection mBeanServerConnection =
jmxConnector.getMBeanServerConnection();
+ String brokerName = "0.0.0.0"; // configured e.g. in broker.xml
<broker-name> element
+ ObjectNameBuilder objectNameBuilder =
ObjectNameBuilder.create(ActiveMQDefaultConfiguration.getDefaultJmxDomain(),
brokerName, true);
+
+ final ActiveMQServerControl serverControl =
MBeanServerInvocationHandler.newProxyInstance(mBeanServerConnection,
objectNameBuilder.getActiveMQServerObjectName(), ActiveMQServerControl.class,
false);
+
+ serverControl.addAddressSettings(queue.toString(), new
AddressSettings().setExpiryAddress(expiryQueue).toJSON());
+
+
session.createQueue(QueueConfiguration.of(queue).setAddress(queue).setDurable(false));
+
session.createQueue(QueueConfiguration.of(expiryQueue).setAddress(expiryQueue).setDurable(false));
+
+ ClientProducer producer = session.createProducer(queue);
+ ClientMessage message = session.createMessage(false);
+ message.setExpiration(System.currentTimeMillis() + EXPIRATION);
+ producer.send(message);
+
+ Thread.sleep(EXPIRATION);
+
+ Wait.assertTrue(() -> findLogRecord(getAuditLog(), "User system@internal
acknowledged message from"), EXPIRATION * 2, 100);
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information, visit: https://activemq.apache.org/contact