Open zllai opened 4 years ago
Hi @zllai - thanks for reporting the issue. I wonder, can you provide a simple repro (program) that uses ElasticCircularBuffer stand alone, and shows the issue. That will help us diagnose and fix the data structure. If you have a fix, a PR would be very welcome as well :).
Hi Ambrosia team,
I am recently studying the Ambrosia source code. I think I may find a bug in
ElasticCircularBuffer
implemented inAmbrosia/Ambrosia/CircularBuffers.cs
, though it seems not causing any trouble for now.The first
foreach
iterates frombuffers.First
tobuffers.Last
. But this is actually not the desired behavior. Because when enqueued, theElasticCircularBuffer
reusesbuffers.First
ifbuffers.First
contains an emptyCircularBuffer
, makingbuffers.First
not actually the head. I also didn't seebuffers.First
being updated anywhere.I guess it didn't cause any trouble because in testcases,
CircularBuffer
is big enough to hold all pending messages, so thatElasticCircularBuffer
always contains only oneCircularBuffer
.