You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Alan Conway (JIRA)" <ji...@apache.org> on 2017/10/06 21:02:00 UTC
[jira] [Closed] (PROTON-1461) [c++] Proton C++ client silently
retains presettled messages
[ https://issues.apache.org/jira/browse/PROTON-1461?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Alan Conway closed PROTON-1461.
-------------------------------
Resolution: Cannot Reproduce
Tried to reproduce this by applying this patch to the C sender example
{code}
modified examples/c/send.c
@@ -119,7 +119,7 @@ static bool handle(app_data_t* app, pn_event_t* event) {
pn_bytes_t msgbuf = encode_message(app);
pn_link_send(sender, msgbuf.start, msgbuf.size);
}
- pn_link_advance(sender);
+ pn_delivery_settle(pn_link_current(sender)); /* Pre settled */
}
break;
}
{code}
I tested using the direct.c example server as follows:
{code}
./direct "" amqp examples 0& sleep 1; ./send "" amqp examples 10000000000
{code}
Both `send` and `direct` process grows quickly to about 370M but then stop growing while messages continue to flow. I think this is normal allocation up to max-frame-size limits by proton. I got exactly the same results with the unmodified send.c example which sends unsettled messages.
Please re-open if the problem still exits and my reproducer is missing the point.
> [c++] Proton C++ client silently retains presettled messages
> ------------------------------------------------------------
>
> Key: PROTON-1461
> URL: https://issues.apache.org/jira/browse/PROTON-1461
> Project: Qpid Proton
> Issue Type: Bug
> Components: cpp-binding
> Affects Versions: 0.17.0
> Environment: Fedora 25
> Test message source: Qpid Dispatch Router with address that has 'distributionMode: multicast'
> Test client: example simple_recv.cpp
> Reporter: Chuck Rolke
> Assignee: Alan Conway
> Fix For: proton-c-0.18.0
>
>
> With distributionMode 'multicast' the router sends messages presettled. In this mode the simple_recv program memory grows without bound until OOM.
> Switching the router to use distribution mode 'closest' causes the router to send messages unsettled. In this mode the same simple_recv client sends back a disposition and program memory use is normal.
> A brokered connection, like to Apache Artemis, behaves normally with unsettled messages and dispositions for each.
> For comparison example program proton-0.18.0/examples/python/simple_recv.py receives router multicast presettled messages and experiences no memory growth.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org