As follow up to the recent discussion about limited versus unlimited
channels consider the following story. There is an expensive commercial
Java software that consists of several components that run on different
servers for performance and fault tolerance.

The software extensively uses bounded queues for its message passing
between components. As administrator can change the size of the queues it
resulted in rather tunable system when one can make clear tradeoff between
say, latency and throughput. It also made the system rather resilient to
traffic spikes allowing to drop some processing if the system can not deal
with the input fast enough.

The bad part is that the software contains at least one internal unlimited
queue. The assumption was that in practice the queue would always be small.
Of cause after some months of nice running a particular traffic variation
happened. In theory it should not affect  the system at all. In practice
the result was that queue had eaten all the memory and triggered
OutOfMemory in a particularly bad spot. That failure propagated through the
whole system resulting in complete halt of all the components.

The vendor now works hard for several days trying to provide a fix.
Apparently changing that queue to bounded one requires substantial code
changes that cannot be accounted as a hot fix, so I guess they try to
sprinkle the code with few try/catch(OutOfMemory) or whatever...
_______________________________________________
Rust-dev mailing list
Rust-dev@mozilla.org
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to