Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ARTEMIS-4366 Missing Mirrored ACKs with MULTICAST and subscriptions #4555

Merged
merged 1 commit into from
Jul 18, 2023

Conversation

clebertsuconic
Copy link
Contributor

No description provided.

@clebertsuconic clebertsuconic force-pushed the mirrored-acks branch 8 times, most recently from bf88fce to bdcb5fb Compare July 17, 2023 22:46
@clebertsuconic clebertsuconic merged commit 677d71b into apache:main Jul 18, 2023
6 checks passed
@@ -75,7 +75,7 @@ public static String getMirrorAddress(String connectionName) {

// We must use one referenceIDSupplier per server.
// protocol manager is the perfect aggregation for that.
private ReferenceNodeStore referenceIDSupplier;
private ReferenceNodeStoreFactory referenceIDSupplier;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Change makes the comment above seem inaccurate / contradictory (somewhat similar with the field name). There is now a factory being returned, and so the overall change here seems like it was to make sure there is not a single reference ID supplier per server as the comment says, but rather now one per-queue.

public ReferenceNodeStoreFactory(ActiveMQServer server) {
this.server = server;
this.serverID = server.getNodeID().toString();

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Superfluous newline

return (Long)message.getBrokerProperty(INTERNAL_ID_EXTRA_PROPERTY);
}


Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Superfluous newline

return getServerID(element.getMessage());
}


Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Superfluous newline

public class ReferenceNodeStore implements NodeStore<MessageReference> {

private final String serverID;
private final ReferenceNodeStoreFactory factory;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems especially weird for a ReferenceNodeStore to contain the ReferenceNodeStoreFactory that creates ReferenceNodeStore. One which it then only uses to get IDs (which are then really just taken from the message [reference]).

Feels like most or all this usage should be a different interface/ object.

@@ -125,11 +125,11 @@ public ProtonProtocolManager(ProtonProtocolManagerFactory factory, ActiveMQServe
routingHandler = new AMQPRoutingHandler(server);
}

public synchronized ReferenceNodeStore getReferenceIDSupplier() {
public synchronized ReferenceNodeStoreFactory getReferenceIDSupplier() {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The method name also seems off now.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It still the ID supplier.
That's a reason why I actually didn't make those methods static. although one of them can't be made static.

I can rename this as IDSupplier. it would implement the NodeStoreFactory and return a new instance of NodeStore.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Think the only one that wouldnt go static is getDefaultNodeID() , which didnt originally exist as the caller already had the value (serverId).

Renaming would be good...the current naming just doesnt fit, makes it confusing to read.

@gemmellr
Copy link
Member

Its odd/confusing that the ReferenceNodeStoreFactory is still named to in most parameters and fields as 'referenceIDSupplier' or 'nodeStore', especially the latter with there being an actual seperate ReferenceNodeStore. Its mixing roles and field/param names up in a confusing manner. Feels like the behaviours should be split into separate concerns, as they largely were originally.

Alternatively many of the ID methods now on ReferenceNodeStoreFactory could perhaps just be made static helpers rather than being 'passed around on the side of a factory', since they only pull details from the message[reference] rather than the factory itself.

clebertsuconic added a commit to clebertsuconic/activemq-artemis that referenced this pull request Jul 18, 2023
clebertsuconic added a commit that referenced this pull request Jul 18, 2023
This is in relation to comments from PR #4555
clebertsuconic added a commit to clebertsuconic/activemq-artemis that referenced this pull request Aug 14, 2023
This is in relation to comments from PR apache#4555

(cherry picked from commit 29deb30)

downstream: ENTMQBR-8220
clebertsuconic added a commit to clebertsuconic/activemq-artemis that referenced this pull request Aug 14, 2023
This is in relation to comments from PR apache#4555

(cherry picked from commit 29deb30)

downstream: ENTMQBR-8220
@clebertsuconic clebertsuconic deleted the mirrored-acks branch August 14, 2023 16:30
clebertsuconic added a commit to clebertsuconic/activemq-artemis that referenced this pull request Sep 12, 2023
This is in relation to comments from PR apache#4555

(cherry picked from commit 29deb30)

downstream: ENTMQBR-8220
clebertsuconic added a commit to clebertsuconic/activemq-artemis that referenced this pull request Sep 14, 2023
This is in relation to comments from PR apache#4555

(cherry picked from commit 29deb30)

downstream: ENTMQBR-8220
clebertsuconic added a commit to clebertsuconic/activemq-artemis that referenced this pull request Oct 6, 2023
This is in relation to comments from PR apache#4555

(cherry picked from commit 29deb30)
clebertsuconic added a commit to clebertsuconic/activemq-artemis that referenced this pull request Dec 19, 2023
This is in relation to comments from PR apache#4555

(cherry picked from commit 29deb30)

downstream: ENTMQBR-8220
clebertsuconic added a commit to clebertsuconic/activemq-artemis that referenced this pull request Jan 9, 2024
This is in relation to comments from PR apache#4555

(cherry picked from commit 29deb30)

downstream: ENTMQBR-8220
clebertsuconic added a commit to clebertsuconic/activemq-artemis that referenced this pull request Jan 15, 2024
This is in relation to comments from PR apache#4555

(cherry picked from commit 29deb30)

downstream: ENTMQBR-8220
clebertsuconic added a commit to clebertsuconic/activemq-artemis that referenced this pull request Jan 26, 2024
This is in relation to comments from PR apache#4555

(cherry picked from commit 29deb30)

downstream: ENTMQBR-8220
clebertsuconic added a commit to clebertsuconic/activemq-artemis that referenced this pull request Jan 27, 2024
This is in relation to comments from PR apache#4555

(cherry picked from commit 29deb30)

downstream: ENTMQBR-8220
clebertsuconic added a commit to clebertsuconic/activemq-artemis that referenced this pull request Feb 26, 2024
This is in relation to comments from PR apache#4555

(cherry picked from commit 29deb30)

downstream: ENTMQBR-8220
clebertsuconic added a commit to clebertsuconic/activemq-artemis that referenced this pull request Apr 2, 2024
This is in relation to comments from PR apache#4555

(cherry picked from commit 29deb30)

downstream: ENTMQBR-8220
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
2 participants