Issue:
CSIT job using cbench had consistent failure with the error message
starting starting with a "closed connection ... exiting" message.
The karaf logs indicated the switches getting disconnected because of
"reconciliation framework" failure.
Observation and Fix:
On analyzing the logs it was found that the "flownodereconciliation"
service of the reconciliation framework was throwing an uncaught
exception (ConcurrentModificationException) which had resulted in
the reconciliation framework failure.
This has been fixed and logs have been enhanced to debug similar issues.
Change-Id: I3cbcea2da32c342c83846f2041d82e921d7acf08
Signed-off-by: Gobinath <gobinath@ericsson.com>
(cherry picked from commit
1fdc1a25f9703550c678b4cd83188de26ad9b19d)
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.Callable;
+import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
private final String serviceName;
private final int priority;
private final ResultState resultState;
- private final Map<DeviceInfo, ListenableFuture<Boolean>> futureMap = new HashMap<>();
+ private final Map<DeviceInfo, ListenableFuture<Boolean>> futureMap = new ConcurrentHashMap<>();
private final ExecutorService executor = Executors.newFixedThreadPool(THREAD_POOL_SIZE);
contextChain.continueInitializationAfterReconciliation();
} else {
OF_EVENT_LOG.debug("Reconciliation framework failure for device {}", deviceInfo);
- LOG.warn("Reconciliation framework failure for device {}", deviceInfo);
+ LOG.warn("Reconciliation framework failure for device {} with result {}", deviceInfo, result);
destroyContextChain(deviceInfo);
}
}
public void onFailure(final Throwable throwable) {
OF_EVENT_LOG.debug("Reconciliation framework failure for device {} with error {}", deviceInfo,
throwable.getMessage());
- LOG.warn("Reconciliation framework failure.");
+ LOG.warn("Reconciliation framework failure.", throwable);
destroyContextChain(deviceInfo);
}
};