Please file a jira. We can discuss it there.
wyang wrote:
hi, all
I’m reading the MemoryChannel code these days. I’ve noticed doRollback
releases putByteCounter permits of bytesRemaining. This is wrong for
the below cases:
In the doCommit function:
1)
if(!bytesRemaining.tryAcquire(putByteCounter, keepAlive,
TimeUnit.SECONDS)) {
throw new ChannelException("Cannot commit transaction. Heap space " +
"limit of " + byteCapacity + "reached. Please increase heap space" +
" allocated to the channel as the sinks may not be keeping up " +
"with the sources");
}
2)
if(!queueRemaining.tryAcquire(-remainingChange, keepAlive,
TimeUnit.SECONDS)) {
bytesRemaining.release(putByteCounter);
throw new ChannelFullException("Space for commit to queue couldn't be
acquired." +
" Sinks are likely not keeping up with sources, or the buffer size is
too tight");
}
When they throw ChannelException, bytesRemaining should not release
any permits.
Is it right or am I missing something?
Thanks