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