Skip to content

Commit

Permalink
ARTEMIS-4576 ServerSessionImpl#updateProducerMetrics access large mes…
Browse files Browse the repository at this point in the history
…sages after being routed
  • Loading branch information
howardgao authored and clebertsuconic committed Jan 22, 2024
1 parent 3dd50f8 commit 6f6c572
Showing 1 changed file with 7 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2357,11 +2357,15 @@ public synchronized RoutingStatus doSend(final Transaction tx,
routingContext.setAddress(art.getName());
routingContext.setRoutingType(art.getRoutingType());

// Retrieve message size for metrics update before routing,
// since large message backing files may be closed once routing completes
int mSize = msg instanceof LargeServerMessageImpl ? ((LargeServerMessageImpl)msg).getBodyBufferSize() : msg.getEncodeSize();

result = postOffice.route(msg, routingContext, direct);

logger.debug("Routing result for {} = {}", msg, result);

updateProducerMetrics(msg, senderName);
updateProducerMetrics(msg, senderName, mSize);
} finally {
if (!routingContext.isReusable()) {
routingContext.clear();
Expand Down Expand Up @@ -2520,10 +2524,10 @@ public String toManagementString() {
return "ServerSession [id=" + getConnectionID() + ":" + getName() + "]";
}

private void updateProducerMetrics(Message msg, String senderName) {
private void updateProducerMetrics(Message msg, String senderName, int mSize) {
ServerProducer serverProducer = serverProducers.getServerProducer(senderName, msg, this);
if (serverProducer != null) {
serverProducer.updateMetrics(msg.getUserID(), msg instanceof LargeServerMessageImpl ? ((LargeServerMessageImpl)msg).getBodyBufferSize() : msg.getEncodeSize());
serverProducer.updateMetrics(msg.getUserID(), mSize);
}
}

Expand Down

0 comments on commit 6f6c572

Please sign in to comment.