[
https://issues.apache.org/jira/browse/PROTON-2128?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17025376#comment-17025376
]
Charles E. Rolke commented on PROTON-2128:
------------------------------------------
Now that PROTON-2005 is fixed I re-ran my dispatch self test. I don't see the
symptom of PROTON-2005 but I do see this error again very frequently.
I tried the naive fix:
{{diff --git a/c/src/core/engine.c b/c/src/core/engine.c}}
{{index c3a82adbc..50880a113 100644}}
{{--- a/c/src/core/engine.c}}
{{+++ b/c/src/core/engine.c}}
{{@@ -683,7 +683,7 @@ static void pni_add_work(pn_connection_t *connection,
pn_delivery_t *delivery)}}
{{ {}}
{{ if (!delivery->work)}}
{{ {}}
{{- assert(!delivery->local.settled); // never allow settled deliveries}}
{{+ assert(!delivery->local.settled || delivery->aborted); }}
{{ LL_ADD(connection, work, delivery);}}
{{ delivery->work = true;}}
{{ }}}
but this didn't fix anything and exposed an assert in transport.c line 1469,
pn_full_settle() assert(!delivery->work);
This problem needs a more comprehensive solution.
Also, in a production build the code blasts through and ignores the asserts.
What does that mean for the integrity of the proton subsystem?
> Python client crash sending aborted messages
> --------------------------------------------
>
> Key: PROTON-2128
> URL: https://issues.apache.org/jira/browse/PROTON-2128
> Project: Qpid Proton
> Issue Type: Bug
> Components: python-binding
> Affects Versions: proton-c-0.29.0
> Environment: Fedora 29; dispatch master=2efbd; proton master or 0.29
> release
> Reporter: Charles E. Rolke
> Priority: Major
> Attachments: PROTON-2128-reproducer.zip,
> PROTON-2128_DISPATCH-1464-gdb-bt.txt, PROTON-2128_DISPATCH-1464-gdb-py-bt.txt
>
>
> This issue was originally reported under DISPATCH-1464
> Dispatch self tests have an intermittent failure:
> {{
> 41: test_05_message_route_abort_one_router
> (system_tests_delivery_abort.RouterTest)
> ... python: /home/chug/git/qpid-proton/c/src/core/engine.c:691:
> pni_add_work: Assertion `!delivery->local.settled' failed.
> 1/1 Test #41: system_tests_delivery_abort ......Child aborted***Exception:
> 4.47 sec
> }}
> The failure is an assert with the assumption that the delivery must not be
> settled. The failing code is handling a SENDER link.
> The suspect here is interaction with the abort processing which spontaneously
> settles an outgoing delivery from the client side. The message is not
> presettled and there is no settlement over the wire.
> Spontaneous settlement may prove the assert to be overly aggressive:
> sometimes deliveries may be settled in pni_add_work(). Maybe the assertion
> could be changed to allow delivery.local.settled to be true but only if
> delivery.aborted is also true.
> Core dump backtraces to be added shortly.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]