Commit bf43f7da by Spencer Gibb

Eureka server is itself a eureka client when discovering eureka peers (it gets…

Eureka server is itself a eureka client when discovering eureka peers (it gets DiscoverClient from DiscoveryManager). Make sure DiscoveryManager is initialzed regardless of if the client or server config is invoked first. fixes gh-18
parent 45143bed
package org.springframework.cloud.netflix.eureka;
import com.netflix.discovery.DiscoveryManager;
import org.springframework.beans.factory.annotation.Autowired;
/**
* @author Spencer Gibb
*/
public class DiscoveryManagerIntitializer {
@Autowired
private EurekaClientConfigBean clientConfig;
@Autowired
private EurekaInstanceConfigBean instanceConfig;
public synchronized void init() {
if (DiscoveryManager.getInstance().getDiscoveryClient() == null) {
DiscoveryManager.getInstance().initComponent(instanceConfig, clientConfig);
}
}
}
...@@ -79,7 +79,7 @@ public class EurekaClientConfiguration implements SmartLifecycle, Ordered { ...@@ -79,7 +79,7 @@ public class EurekaClientConfiguration implements SmartLifecycle, Ordered {
public void start() { public void start() {
if (port != 0) { if (port != 0) {
instanceConfig.setNonSecurePort(port); instanceConfig.setNonSecurePort(port);
DiscoveryManager.getInstance().initComponent(instanceConfig, clientConfig); discoveryManagerIntitializer().init();
logger.info("Registering application {} with eureka with status UP", logger.info("Registering application {} with eureka with status UP",
instanceConfig.getAppname()); instanceConfig.getAppname());
ApplicationInfoManager.getInstance().setInstanceStatus(InstanceStatus.UP); ApplicationInfoManager.getInstance().setInstanceStatus(InstanceStatus.UP);
...@@ -120,6 +120,12 @@ public class EurekaClientConfiguration implements SmartLifecycle, Ordered { ...@@ -120,6 +120,12 @@ public class EurekaClientConfiguration implements SmartLifecycle, Ordered {
} }
@Bean @Bean
@ConditionalOnMissingBean(DiscoveryManagerIntitializer.class)
public DiscoveryManagerIntitializer discoveryManagerIntitializer() {
return new DiscoveryManagerIntitializer();
}
@Bean
@Lazy @Lazy
@Scope(proxyMode = ScopedProxyMode.TARGET_CLASS) @Scope(proxyMode = ScopedProxyMode.TARGET_CLASS)
public DiscoveryClient discoveryClient() { public DiscoveryClient discoveryClient() {
......
...@@ -28,7 +28,9 @@ import org.apache.commons.logging.LogFactory; ...@@ -28,7 +28,9 @@ import org.apache.commons.logging.LogFactory;
import org.springframework.aop.framework.ProxyFactory; import org.springframework.aop.framework.ProxyFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.cloud.netflix.eureka.DiscoveryManagerIntitializer;
import org.springframework.cloud.netflix.eureka.EurekaServerConfigBean; import org.springframework.cloud.netflix.eureka.EurekaServerConfigBean;
import org.springframework.cloud.netflix.eureka.advice.PiggybackMethodInterceptor; import org.springframework.cloud.netflix.eureka.advice.PiggybackMethodInterceptor;
import org.springframework.cloud.netflix.eureka.event.EurekaRegistryAvailableEvent; import org.springframework.cloud.netflix.eureka.event.EurekaRegistryAvailableEvent;
...@@ -79,8 +81,15 @@ public class EurekaServerInitializerConfiguration implements ServletContextAware ...@@ -79,8 +81,15 @@ public class EurekaServerInitializerConfiguration implements ServletContextAware
this.servletContext = servletContext; this.servletContext = servletContext;
} }
@Bean
@ConditionalOnMissingBean(DiscoveryManagerIntitializer.class)
public DiscoveryManagerIntitializer discoveryManagerIntitializer() {
return new DiscoveryManagerIntitializer();
}
@Override @Override
public void start() { public void start() {
discoveryManagerIntitializer().init();
new Thread(new Runnable() { new Thread(new Runnable() {
@Override @Override
public void run() { public void run() {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment