X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fnetconf%2Fconfig-netconf-connector%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fnetconf%2Fconfignetconfconnector%2Fosgi%2FNetconfOperationServiceFactoryImpl.java;h=b5ae66d605ff6b1199eac5c7f7ec11298d63e0ed;hp=2db3c9d4f1d538893da1b9de420c696ef555e242;hb=992a433ff8fd0ce7335bf5ea9e59a75602a95a19;hpb=0ae12c54560ef14cb8c08beef4553f7523d41578 diff --git a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/osgi/NetconfOperationServiceFactoryImpl.java b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/osgi/NetconfOperationServiceFactoryImpl.java index 2db3c9d4f1..b5ae66d605 100644 --- a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/osgi/NetconfOperationServiceFactoryImpl.java +++ b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/osgi/NetconfOperationServiceFactoryImpl.java @@ -8,24 +8,22 @@ package org.opendaylight.controller.netconf.confignetconfconnector.osgi; +import java.lang.management.ManagementFactory; +import javax.management.MBeanServer; import org.opendaylight.controller.config.util.ConfigRegistryJMXClient; -import org.opendaylight.controller.config.yang.store.api.YangStoreException; -import org.opendaylight.controller.config.yang.store.api.YangStoreService; import org.opendaylight.controller.netconf.mapping.api.NetconfOperationServiceFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.management.MBeanServer; -import java.lang.management.ManagementFactory; - public class NetconfOperationServiceFactoryImpl implements NetconfOperationServiceFactory { public static final int ATTEMPT_TIMEOUT_MS = 1000; + private static final int SILENT_ATTEMPTS = 30; private final YangStoreService yangStoreService; private final ConfigRegistryJMXClient jmxClient; - private static final Logger logger = LoggerFactory.getLogger(NetconfOperationServiceFactoryImpl.class); + private static final Logger LOG = LoggerFactory.getLogger(NetconfOperationServiceFactoryImpl.class); public NetconfOperationServiceFactoryImpl(YangStoreService yangStoreService) { this(yangStoreService, ManagementFactory.getPlatformMBeanServer()); @@ -34,30 +32,40 @@ public class NetconfOperationServiceFactoryImpl implements NetconfOperationServi public NetconfOperationServiceFactoryImpl(YangStoreService yangStoreService, MBeanServer mBeanServer) { this.yangStoreService = yangStoreService; + ConfigRegistryJMXClient configRegistryJMXClient; + int i = 0; // Config registry might not be present yet, but will be eventually while(true) { - final ConfigRegistryJMXClient configRegistryJMXClient; try { configRegistryJMXClient = new ConfigRegistryJMXClient(mBeanServer); + break; } catch (IllegalStateException e) { - logger.debug("Jmx client could not be created, reattempting"); + ++i; + if (i > SILENT_ATTEMPTS) { + LOG.info("JMX client not created after {} attempts, still trying", i, e); + } else { + LOG.debug("JMX client could not be created, reattempting, try {}", i, e); + } try { Thread.sleep(ATTEMPT_TIMEOUT_MS); } catch (InterruptedException e1) { Thread.currentThread().interrupt(); - throw new RuntimeException(e1); + throw new IllegalStateException("Interrupted while reattempting connection", e1); } - continue; } + } - jmxClient = configRegistryJMXClient; - break; + jmxClient = configRegistryJMXClient; + if (i > SILENT_ATTEMPTS) { + LOG.info("Created JMX client after {} attempts", i); + } else { + LOG.debug("Created JMX client after {} attempts", i); } } @Override - public NetconfOperationServiceImpl createService(long netconfSessionId, String netconfSessionIdForReporting) { + public NetconfOperationServiceImpl createService(String netconfSessionIdForReporting) { try { return new NetconfOperationServiceImpl(yangStoreService, jmxClient, netconfSessionIdForReporting); } catch (YangStoreException e) {