5.4.5. Performance and Scalability
5.4.5.1. [Critical] High CPU usage and delayed events in a DataReader managing many instances of a deleted DataWriter
When a DataWriter is deleted, all matching DataReaders must update all instances the deleted DataWriter was writing to indicate there was one less writer for that instance. The search through the instance list in the DataReader was not optimized to find the instances for a single DataWriter, so the deletion of a DataWriter could take a long time if the number of instances in the DataReader queue was large (10s or 100s of thousands). This processing could have delayed other important middleware events from running, like liveliness assertions and data processing.
Now, the DataReader keeps track of the instances that a DataWriter is writing so that it does not search through its entire list of instances. This change resolves the issue when the deleted DataWriter is writing a small subset of those instances. If the number of instances that a single DataWriter is writing is still large, the problem described will still exist.
[RTI Issue ID CORE-14906]