From c3b1c3607e4136e7c85d0576af918ef8bf2ca4bc Mon Sep 17 00:00:00 2001 From: Tomas Olvecky Date: Sat, 30 Nov 2013 16:54:15 +0100 Subject: [PATCH] Fix persister bug introduced in last commit. Registering to JMX failed due to previous bugfix. Change-Id: I8be8751e299d7f10c7ed691b9bcefbd62308fcae Signed-off-by: Tomas Olvecky --- .../ConfigPersisterNotificationHandler.java | 43 +++++++++++-------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/opendaylight/netconf/config-persister-impl/src/main/java/org/opendaylight/controller/netconf/persist/impl/ConfigPersisterNotificationHandler.java b/opendaylight/netconf/config-persister-impl/src/main/java/org/opendaylight/controller/netconf/persist/impl/ConfigPersisterNotificationHandler.java index ac6b5b28fd..d83b1eaaf3 100644 --- a/opendaylight/netconf/config-persister-impl/src/main/java/org/opendaylight/controller/netconf/persist/impl/ConfigPersisterNotificationHandler.java +++ b/opendaylight/netconf/config-persister-impl/src/main/java/org/opendaylight/controller/netconf/persist/impl/ConfigPersisterNotificationHandler.java @@ -101,25 +101,7 @@ public class ConfigPersisterNotificationHandler implements NotificationListener, if (maybeConfig.isPresent()) { logger.debug("Last config found {}", persister); ConflictingVersionException lastException = null; - int maxAttempts = 30; - for(int i = 0 ; i < maxAttempts; i++) { - registerToNetconf(maybeConfig.get().getCapabilities()); - - final String configSnapshot = maybeConfig.get().getConfigSnapshot(); - logger.trace("Pushing following xml to netconf {}", configSnapshot); - try { - pushLastConfig(XmlUtil.readXmlToElement(configSnapshot)); - return; - } catch(ConflictingVersionException e) { - closeClientAndDispatcher(netconfClient, netconfClientDispatcher); - lastException = e; - Thread.sleep(1000); - } catch (SAXException | IOException e) { - throw new IllegalStateException("Unable to load last config", e); - } - } - throw new IllegalStateException("Failed to push configuration, maximum attempt count has been reached: " - + maxAttempts, lastException); + pushLastConfigWithRetries(maybeConfig, lastException); } else { // this ensures that netconf is initialized, this is first @@ -132,6 +114,28 @@ public class ConfigPersisterNotificationHandler implements NotificationListener, registerAsJMXListener(); } + private void pushLastConfigWithRetries(Optional maybeConfig, ConflictingVersionException lastException) throws InterruptedException { + int maxAttempts = 30; + for(int i = 0 ; i < maxAttempts; i++) { + registerToNetconf(maybeConfig.get().getCapabilities()); + + final String configSnapshot = maybeConfig.get().getConfigSnapshot(); + logger.trace("Pushing following xml to netconf {}", configSnapshot); + try { + pushLastConfig(XmlUtil.readXmlToElement(configSnapshot)); + return; + } catch(ConflictingVersionException e) { + closeClientAndDispatcher(netconfClient, netconfClientDispatcher); + lastException = e; + Thread.sleep(1000); + } catch (SAXException | IOException e) { + throw new IllegalStateException("Unable to load last config", e); + } + } + throw new IllegalStateException("Failed to push configuration, maximum attempt count has been reached: " + + maxAttempts, lastException); + } + private synchronized long registerToNetconf(Set expectedCaps) throws InterruptedException { Set currentCapabilities = Sets.newHashSet(); @@ -209,6 +213,7 @@ public class ConfigPersisterNotificationHandler implements NotificationListener, } private void registerAsJMXListener() { + logger.trace("Called registerAsJMXListener"); try { mbeanServer.addNotificationListener(on, this, null, null); } catch (InstanceNotFoundException | IOException e) { -- 2.36.6