mirror of
https://github.com/opennetworkinglab/onos.git
synced 2025-10-14 17:01:02 +02:00
The P4Runtime client was hanging (deadlock) on a master arbitration request. As such, all other requests (e.g. table write) were waiting for the client's request lock to become available. Apart from fixing those deadlocks, this patch brings a number of improvements that all together allow to run networks of 100+ P4Runtime devices on a single ONOS instance (before only ~20 devices) Includes: - Asynchrounous mastership handling in DevicHandshaker (as defined in the P4Runtime and OpenFlow spec) - Refactored arbitration handling in the P4RuntimeClient to be consistent with the P4Runtime spec - Report suspect deadlocks in P4RuntimeClientImpl - Exploit write errors in P4RuntimeClient to quickly report channel/mastership errors to upper layers - Complete all futures with deadlines in P4Runtime driver - Dump all tables in one request - Re-purposed ChannelEvent to DeviceAgentEvent to carry also mastership response events - Fixed IntelliJ warnings - Various code and log clean-ups Change-Id: I9376793a9fe69d8eddf7e8ac2ef0ee4c14fbd198