If there are some errors during start the netconf session, SshClient is not freed so that sockets or file descriptors that made by SshClient are not freed as well.
It leads to starvation of file descriptors for onos so that onos cannot make network connections, spawn the threads so on.
This fix does not permit reusing of already closed NetconfSessionMinaImpl.
ONOS-7833
Change-Id: I1c8799cbbf8b28d23629123ad5d31ccca4a1fb3d
(cherry picked from commit 8f4c1e2ac5ed0033a472a4eb44fdfcba12145134)
If there are some errors during start the netconf session, SshClient is not freed so that sockets or file descriptors that made by SshClient are not freed as well.
It leads to starvation of file descriptors for onos so that onos cannot make network connections, spawn the threads so on.
This fix does not permit reusing of already closed NetconfSessionMinaImpl.
ONOS-7833
Change-Id: I1c8799cbbf8b28d23629123ad5d31ccca4a1fb3d
Also, the parent DefaultRestSBDevice had a faulty testUrl toString.
Change-Id: I15d9432402aa00d453c3b09cbf5e5c05e82549eb
Signed-off-by: Georgios Katsikas <katsikas.gp@gmail.com>
This patch solves the PENDING_UPDATE and PENDING_ADD_RETRY issue
observed on the ONS EU topology.
The P4Runtime action profile group handling has been re-implemented to
be robust against inconsistencies of the device mirror, which is now
periodically synchronized with the device state. Similarly, we implement
a routine in the P4RuntimeClient to cleanup unused action profile
members.
This patch includes also:
- Refactor PI handle classes to allow creating handles without the
entity instance
- Use list instead of collections in P4RuntimeClient methods, as order
of updates sent and/or entities received from the device is important
Change-Id: I2e7964ce90f43d66680131b47ab52aca32ab55d2
Spec says:
the default entry for a table is always set. It can be set at
compile-time by the P4 programmer - or defaults to NoAction (which is a
no-op) otherwise - and assuming it is not declared as const, can be
modified by the P4Runtime client. Because the default entry is always
set, we do not allow INSERT and DELETE updates on the default entry and
the P4Runtime server must return an INVALID_ARGUMENT error code if the
client attempts one.
With this patch we convert insert or delete operations into modify ones
(unless specified by a driver property, to support non-compliant devices).
For delete, we use the interpreter to suggest a default action that is
the same as the one when the pipeline was originally deployed.
Also, we introduce the capability of synchronizing the device mirror
with the device state.
Change-Id: I3758fc11780eb0f1cf4ed5a295bd98b54b182e29
Also reduces default pipeconf watchdog probe interval
Also fixes NPE on GDP when device is unreachable
Change-Id: Ie2fe1874b0883a037596d9a555a2f8cc030a55a6
(cherry picked from commit d797e2c28505fbdbb8597038ebcf977a053bae72)
This patch is an attempt to solve issues observed when restarting both
switches and ONOS nodes. Most of the issues seemed to depend on a
brittle mastership handling when deploying the pipeline.
With this patch, GDP registers devices to the core with available=false
(i.e. offline) and marks them online only when the P4 pipeline has been
deployed to the device. A new PiPipeconfWatchdogService takes care of
deploying pipelines and producing event when devices are ready.
Moreover, we fix a race condition where pipeconf-related behaviors
were not found. This was caused by GDP enforcing the merged
driver name in the network config, while external entities (e.g.
Mininet) were pushing a JSON blob with the base driver name. This patch
removes the need to rely on such a trick and instead uses
pipeconf-aware logic directly in the driver manager (change #19622).
Finally, we fix issues in P4RuntimeClientImpl that were causing the
stream channel not detecting unreachable devices. The solution is to
follow gRPC APIs and re-instantiate a new channel once the first fails.
Change-Id: I6fbc91859c0fb58a6db3bc197b7081a8fe9f97f7