mirror of
https://github.com/opennetworkinglab/onos.git
synced 2025-10-14 17:01:02 +02:00
Most notably, we fix a bug in which some nodes were not able to find pipeconf-specific behaviors for a given device. The problem is not completelly solved but it's mitigated. There's a race condition caused by the fact that the GDP updates the cfg with the merged driver name before advertising the device to the core. Some nodes might receive the cfg update after the device has been advertised. We mitigate the problem by performing the pipeline deploy (slow operation) after the cfg update, giving more time for nodes to catch up. Perhaps we should listen for cfg update events before advertising the device to the core? Also: - NPE when getting P4Runtime client - Detect if a base driver is already merged in pipeconf manager - Longer timeouts in P4Runtime driver and protocol (for slow networks) - Configurable timeout in P4Runtime driver and GDP - NPE when adding/removing device agent listeners in P4Rtunime handshaker - Various exceptions due to race conditions in GDP when disconnecting devices (by serializing disconnect tasks per device) - NPE when cancelling polling tasks in GDP - Refactored PipeconfService to distinguish between driver merge, pipeconf map update, and cfg update (now performed in the GDP) - Fixed PipeconfManagerTest, not testing driver behaviours - Use Guava striped locks when possible (more memory-efficient than maps, and with strict atomicity guarantees w.r.t. to caches). Change-Id: I30f3887541ba0fd44439a86885e9821ac565b64c