Github user franz1981 commented on the issue:

    https://github.com/apache/activemq-artemis/pull/1119
  
    @clebertsuconic Exactly, it tries to block it for a finite amount of time 
and only if not in the event loop: you've mentioned about stalling behaviours 
and I've dig in the Netty code to find out a possible reason of it, finding 
only 1 answer: maybe we share the I/O threads (via a pool?) with Netty and 
calling ``writeAndFlush`` while on one of them.
    Altought it is considered legal, IMHO is something that must be avoided 
because it increases the risk to go OOM (it steals time to a thread that would 
be happier while doing I/O stuff and releasing the sent ``ByteBuf``s) and it 
will lead to unexpected infinite stalls...
    It could be the key to solve other strange blocking behaviours happening on 
replication too!
    
    Anwers:
    i - The original behaviour was already to perform a ``writeAndFlush`` 
there, but without applying any backpressure on the caller, streaming huge 
messages with clusters (with 1 GB per msg) would lead anyway to log some warns 
but then going OOM.
    As you said we need to perform flow control in our codebase, but the 
granularity allowed using Netty in idiomatic way couldn't be enough: a 
"writable" flag is good for the most cases but not enough with very high 
traffic with long burst of data (=== streaming huge messages in batches).
    Maybe we need an API change, like returning a ``boolean`` on the 
``NettyConnection::write`` method, in order to let the caller choose what to do 
as part of its duties, but is weird ( as a user, I mean).
    Monday we could talk about it better or I could ask on the forum for 
feedbacks: solving it properly will improve Artemis a lot, I'm sure of it :+1:  
    ii - :100: No more crazy properties
    
    Thanks Cleb!!!



---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---

Reply via email to