[
https://issues.apache.org/jira/browse/ARTEMIS-4924?focusedWorklogId=927157&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-927157
]
ASF GitHub Bot logged work on ARTEMIS-4924:
-------------------------------------------
Author: ASF GitHub Bot
Created on: 24/Jul/24 08:30
Start Date: 24/Jul/24 08:30
Worklog Time Spent: 10m
Work Description: gtully commented on code in PR #5091:
URL: https://github.com/apache/activemq-artemis/pull/5091#discussion_r1687972386
##########
artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/impl/ClusterConnectionImpl.java:
##########
@@ -712,6 +712,19 @@ private synchronized void activate() throws Exception {
serverLocator.start(server.getExecutorFactory().getExecutor());
}
+ // add security role to disallow send/edit directly to sf queues
+ if (server.getConfiguration().isSecurityEnabled()) {
+ Set<Role> roles = new HashSet<>();
+ String addressMatch = storeAndForwardPrefix + name + "." +
server.getConfiguration().getWildcardConfiguration().getSingleWordString();
Review Comment:
I don't know that we want to add rbac to cluster connection in a special
way. My reference to rbac was in the context of a user using a producer to send
to the sfn, the assumption being that the cluster connection would be not being
doing this.
##########
artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/QueueImpl.java:
##########
@@ -1284,6 +1284,15 @@ public void addTail(final MessageReference ref, final
boolean direct) {
if (scheduleIfPossible(ref)) {
return;
}
+ if (checkInvalid(ref)) {
+ //send to dlq
+ try {
+ sendToDeadLetterAddress(null, ref);
Review Comment:
this looks sensible. Do we need to have some way to set a reason as to why
the message is on the DLQ? Or will it be implicit by peeking at the empty id
properties.
##########
artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/impl/ClusterConnectionBridge.java:
##########
@@ -201,12 +201,6 @@ protected Message beforeForward(final Message message,
final SimpleString forwar
byte[] queueIds = message.getExtraBytesProperty(idsHeaderName);
- if (queueIds == null) {
- // Sanity check only
- ActiveMQServerLogger.LOGGER.noQueueIdDefined(message, messageCopy,
idsHeaderName);
Review Comment:
seems like routing to the DLQ here is the simplest solution.
##########
artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/QueueImpl.java:
##########
@@ -1284,6 +1284,15 @@ public void addTail(final MessageReference ref, final
boolean direct) {
if (scheduleIfPossible(ref)) {
return;
}
+ if (checkInvalid(ref)) {
+ //send to dlq
+ try {
+ sendToDeadLetterAddress(null, ref);
Review Comment:
do we need a new queue type and valid check, is is possible to just replace
the error AMQ222110 with a sent do dlq?
Issue Time Tracking
-------------------
Worklog Id: (was: 927157)
Time Spent: 1h (was: 50m)
> Do not allow sending messages directly to store-and-forward queues
> ------------------------------------------------------------------
>
> Key: ARTEMIS-4924
> URL: https://issues.apache.org/jira/browse/ARTEMIS-4924
> Project: ActiveMQ Artemis
> Issue Type: Bug
> Components: Clustering
> Affects Versions: 2.35.0
> Reporter: Howard Gao
> Assignee: Howard Gao
> Priority: Major
> Time Spent: 1h
> Remaining Estimate: 0h
>
> Currently, if a poison message missing queue information ends up in the SF
> queue, the broker logs an error, like:
> AMQ222110: no queue IDs defined...
> but the message remains in the queue, with the result that the bridge
> continuously reconnects, encounters the failure, then evicts the bridge
> consumer.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information, visit: https://activemq.apache.org/contact