When deleting/closing a netconf-connector, the cleanup came from 2-3 places and
was not properly synchronized resulting in failed transaction with metadata
still present
Change-Id: I91f1c8bf3d5d24cc2cf4fdb02fb1f5cc3f8a8796
Signed-off-by: Maros Marsalek <mmarsale@cisco.com>
@Override
public void operationComplete(Future<Object> future) throws Exception {
- if (!future.isSuccess()) {
+ if (!future.isSuccess() && !future.isCancelled()) {
logger.debug("{}: Connection failed", id, future.cause());
NetconfDeviceCommunicator.this.remoteDevice.onRemoteSessionFailed(future.cause());
}
// Disconnect from device
if(session != null) {
session.close();
+ // tear down not necessary, called indirectly by above close
}
-
- tearDown(id + ": Netconf session closed");
}
@Override
}
@Override
- public void onDeviceFailed(final Throwable throwable) {
+ public synchronized void onDeviceFailed(final Throwable throwable) {
salProvider.getTopologyDatastoreAdapter().setDeviceAsFailed(throwable);
salProvider.getMountInstance().onDeviceDisconnected();
salProvider.getMountInstance().onTopologyDeviceDisconnected();
}
@Override
- public void close() {
+ public synchronized void close() {
for (final AutoCloseable reg : Lists.reverse(salRegistrations)) {
closeGracefully(reg);
}