【Nacos源码调试】集群模式内置数据源单机多实例部署问题解决

2023-05-16

最近对Nacos源码比较感兴趣,个人是个好奇宝宝,特别想了解一下Nacos这个阿里开源的分布式服务注册与发现及配置管理中间件内部到底是个啥样子,于是就想着自己源码编译,debug走一下试试。可惜上来就遇到问题了:

Nacos启动一直停留在这个界面无法正常启动,个人使用的是外置Mysql数据源。

再看一下Nacos启动日志,发现一下报错:


org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:156)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:544)
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:744)
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:391)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:312)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1204)
	at com.alibaba.nacos.Nacos.main(Nacos.java:35)
Caused by: org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat
	at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize(TomcatWebServer.java:124)
	at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.<init>(TomcatWebServer.java:86)
	at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getTomcatWebServer(TomcatServletWebServerFactory.java:416)
	at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getWebServer(TomcatServletWebServerFactory.java:180)
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.createWebServer(ServletWebServerApplicationContext.java:180)
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:153)
	... 8 common frames omitted
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'trafficReviseFilterRegistration' defined in class path resource [com/alibaba/nacos/naming/web/NamingConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.web.servlet.FilterRegistrationBean]: Factory method 'trafficReviseFilterRegistration' threw exception; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'trafficReviseFilter': Unsatisfied dependency expressed through field 'serverStatusManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'serverStatusManager': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'consistencyDelegate' defined in file [/Users/menghaowu/github/nacos/naming/target/classes/com/alibaba/nacos/naming/consistency/DelegateConsistencyServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'persistentConsistencyServiceDelegate' defined in file [/Users/menghaowu/github/nacos/naming/target/classes/com/alibaba/nacos/naming/consistency/persistent/PersistentConsistencyServiceDelegateImpl.class]: Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.alibaba.nacos.naming.consistency.persistent.PersistentConsistencyServiceDelegateImpl]: Constructor threw exception; nested exception is java.lang.IllegalStateException: Fail to init node, please see the logs to find the reason.
	at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:627)
	at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:456)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1318)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1158)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:554)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:514)
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:321)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:319)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:204)
	at org.springframework.boot.web.servlet.ServletContextInitializerBeans.getOrderedBeansOfType(ServletContextInitializerBeans.java:211)
	at org.springframework.boot.web.servlet.ServletContextInitializerBeans.getOrderedBeansOfType(ServletContextInitializerBeans.java:202)
	at org.springframework.boot.web.servlet.ServletContextInitializerBeans.addServletContextInitializerBeans(ServletContextInitializerBeans.java:96)
	at org.springframework.boot.web.servlet.ServletContextInitializerBeans.<init>(ServletContextInitializerBeans.java:85)
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.getServletContextInitializerBeans(ServletWebServerApplicationContext.java:253)
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.selfInitialize(ServletWebServerApplicationContext.java:227)
	at org.springframework.boot.web.embedded.tomcat.TomcatStarter.onStartup(TomcatStarter.java:53)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5128)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1384)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1374)
	at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)
	at java.util.concurrent.FutureTask.run(FutureTask.java)
	at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
	at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
	at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909)
	at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:843)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1384)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1374)
	at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)
	at java.util.concurrent.FutureTask.run(FutureTask.java)
	at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
	at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
	at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909)
	at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
	at org.apache.catalina.core.StandardService.startInternal(StandardService.java:421)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
	at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:930)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
	at org.apache.catalina.startup.Tomcat.start(Tomcat.java:486)
	at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize(TomcatWebServer.java:105)
	... 13 common frames omitted
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.web.servlet.FilterRegistrationBean]: Factory method 'trafficReviseFilterRegistration' threw exception; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'trafficReviseFilter': Unsatisfied dependency expressed through field 'serverStatusManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'serverStatusManager': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'consistencyDelegate' defined in file [/Users/menghaowu/github/nacos/naming/target/classes/com/alibaba/nacos/naming/consistency/DelegateConsistencyServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'persistentConsistencyServiceDelegate' defined in file [/Users/menghaowu/github/nacos/naming/target/classes/com/alibaba/nacos/naming/consistency/persistent/PersistentConsistencyServiceDelegateImpl.class]: Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.alibaba.nacos.naming.consistency.persistent.PersistentConsistencyServiceDelegateImpl]: Constructor threw exception; nested exception is java.lang.IllegalStateException: Fail to init node, please see the logs to find the reason.
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185)
	at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:622)
	... 55 common frames omitted
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'trafficReviseFilter': Unsatisfied dependency expressed through field 'serverStatusManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'serverStatusManager': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'consistencyDelegate' defined in file [/Users/menghaowu/github/nacos/naming/target/classes/com/alibaba/nacos/naming/consistency/DelegateConsistencyServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'persistentConsistencyServiceDelegate' defined in file [/Users/menghaowu/github/nacos/naming/target/classes/com/alibaba/nacos/naming/consistency/persistent/PersistentConsistencyServiceDelegateImpl.class]: Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.alibaba.nacos.naming.consistency.persistent.PersistentConsistencyServiceDelegateImpl]: Constructor threw exception; nested exception is java.lang.IllegalStateException: Fail to init node, please see the logs to find the reason.
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:598)
	at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90)
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:376)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1402)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:591)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:514)
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:321)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:319)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
	at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.resolveBeanReference(ConfigurationClassEnhancer.java:394)
	at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:366)
	at com.alibaba.nacos.naming.web.NamingConfig$$EnhancerBySpringCGLIB$$2ef3eaff.trafficReviseFilter(<generated>)
	at com.alibaba.nacos.naming.web.NamingConfig.trafficReviseFilterRegistration(NamingConfig.java:44)
	at com.alibaba.nacos.naming.web.NamingConfig$$EnhancerBySpringCGLIB$$2ef3eaff.CGLIB$trafficReviseFilterRegistration$0(<generated>)
	at com.alibaba.nacos.naming.web.NamingConfig$$EnhancerBySpringCGLIB$$2ef3eaff$$FastClassBySpringCGLIB$$d2c42aa4.invoke(<generated>)
	at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244)
	at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:363)
	at com.alibaba.nacos.naming.web.NamingConfig$$EnhancerBySpringCGLIB$$2ef3eaff.trafficReviseFilterRegistration(<generated>)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
	... 56 common frames omitted
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'serverStatusManager': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'consistencyDelegate' defined in file [/Users/menghaowu/github/nacos/naming/target/classes/com/alibaba/nacos/naming/consistency/DelegateConsistencyServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'persistentConsistencyServiceDelegate' defined in file [/Users/menghaowu/github/nacos/naming/target/classes/com/alibaba/nacos/naming/consistency/persistent/PersistentConsistencyServiceDelegateImpl.class]: Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.alibaba.nacos.naming.consistency.persistent.PersistentConsistencyServiceDelegateImpl]: Constructor threw exception; nested exception is java.lang.IllegalStateException: Fail to init node, please see the logs to find the reason.
	at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessProperties(CommonAnnotationBeanPostProcessor.java:325)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1402)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:591)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:514)
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:321)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:319)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
	at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:277)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1276)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1196)
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:595)
	... 79 common frames omitted
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'consistencyDelegate' defined in file [/Users/menghaowu/github/nacos/naming/target/classes/com/alibaba/nacos/naming/consistency/DelegateConsistencyServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'persistentConsistencyServiceDelegate' defined in file [/Users/menghaowu/github/nacos/naming/target/classes/com/alibaba/nacos/naming/consistency/persistent/PersistentConsistencyServiceDelegateImpl.class]: Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.alibaba.nacos.naming.consistency.persistent.PersistentConsistencyServiceDelegateImpl]: Constructor threw exception; nested exception is java.lang.IllegalStateException: Fail to init node, please see the logs to find the reason.
	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:769)
	at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:218)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1338)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1185)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:554)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:514)
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:321)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:319)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:204)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.resolveBeanByName(AbstractAutowireCapableBeanFactory.java:451)
	at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.autowireResource(CommonAnnotationBeanPostProcessor.java:527)
	at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.getResource(CommonAnnotationBeanPostProcessor.java:497)
	at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor$ResourceElement.getResourceToInject(CommonAnnotationBeanPostProcessor.java:637)
	at org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.inject(InjectionMetadata.java:180)
	at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90)
	at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessProperties(CommonAnnotationBeanPostProcessor.java:322)
	... 90 common frames omitted
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'persistentConsistencyServiceDelegate' defined in file [/Users/menghaowu/github/nacos/naming/target/classes/com/alibaba/nacos/naming/consistency/persistent/PersistentConsistencyServiceDelegateImpl.class]: Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.alibaba.nacos.naming.consistency.persistent.PersistentConsistencyServiceDelegateImpl]: Constructor threw exception; nested exception is java.lang.IllegalStateException: Fail to init node, please see the logs to find the reason.
	at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:304)
	at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:285)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1338)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1185)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:554)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:514)
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:321)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:319)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
	at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:277)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1276)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1196)
	at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:857)
	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:760)
	... 106 common frames omitted
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.alibaba.nacos.naming.consistency.persistent.PersistentConsistencyServiceDelegateImpl]: Constructor threw exception; nested exception is java.lang.IllegalStateException: Fail to init node, please see the logs to find the reason.
	at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:187)
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:117)
	at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:300)
	... 120 common frames omitted
Caused by: java.lang.IllegalStateException: Fail to init node, please see the logs to find the reason.
	at com.alipay.sofa.jraft.RaftServiceFactory.createAndInitRaftNode(RaftServiceFactory.java:48)
	at com.alipay.sofa.jraft.RaftGroupService.start(RaftGroupService.java:129)
	at com.alibaba.nacos.core.distributed.raft.JRaftServer.createMultiRaftGroup(JRaftServer.java:268)
	at com.alibaba.nacos.core.distributed.raft.JRaftProtocol.addRequestProcessors(JRaftProtocol.java:163)
	at com.alibaba.nacos.naming.consistency.persistent.impl.PersistentServiceProcessor.afterConstruct(PersistentServiceProcessor.java:68)
	at com.alibaba.nacos.naming.consistency.persistent.PersistentConsistencyServiceDelegateImpl.createNewPersistentServiceProcessor(PersistentConsistencyServiceDelegateImpl.java:101)
	at com.alibaba.nacos.naming.consistency.persistent.PersistentConsistencyServiceDelegateImpl.<init>(PersistentConsistencyServiceDelegateImpl.java:52)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:175)
	... 122 common frames omitted

通过stackTrace我们可以定位,错误发送在 com.alipay.sofa.jraft.RaftServiceFactory.createAndInitRaftNode(RaftServiceFactory.java:48)这个地方

    public static Node createAndInitRaftNode(String groupId, PeerId serverId, NodeOptions opts) {
        Node ret = createRaftNode(groupId, serverId);
        if (!ret.init(opts)) {
            throw new IllegalStateException("Fail to init node, please see the logs to find the reason.");
        } else {
            return ret;
        }
    }

也就是说,Nacos在创建jRaft数据节点的时候发生了错误,经过调试进一步定位我们可以发现最终的报错点位于 org.rocksdb.RocksDB.open(RocksDB.java:146)处

    public static RocksDB open(DBOptions var0, String var1, List<ColumnFamilyDescriptor> var2, List<ColumnFamilyHandle> var3) throws RocksDBException {
        byte[][] var4 = new byte[var2.size()][];
        long[] var5 = new long[var2.size()];

        for(int var6 = 0; var6 < var2.size(); ++var6) {
            ColumnFamilyDescriptor var7 = (ColumnFamilyDescriptor)var2.get(var6);
            var4[var6] = var7.columnFamilyName();
            var5[var6] = var7.columnFamilyOptions().nativeHandle_;
        }

        long[] var9 = open(var0.nativeHandle_, var1, var4, var5); // 这里
        RocksDB var10 = new RocksDB(var9[0]);
        var10.storeOptionsInstance(var0);

        for(int var8 = 1; var8 < var9.length; ++var8) {
            var3.add(new ColumnFamilyHandle(var10, var9[var8]));
        }

        return var10;
    }

 那么最终原因我们可以找到,jRaft的日志记录使用的是RocksDB框架进行的,该框架是一个居于文件系统的列存储型日志数据库,它在初始化时需要指定数据文件目录。当我们默认单机启动多个Nacos实例时,RocksDB所默认使用的数据目录都是同一个,此时就会报错。当我们debug时,修改了RocksDB默认数据目录后,实例便能启动。

顺带提一句,这也是为什么第一个启动的节点不会报错的原因。 

下面是github中拿到的RocksDB.open方法相关的源码:

https://github.com/facebook/rocksdb/blob/master/db/db_impl/db_impl_open.cc

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Nacos源码调试】集群模式内置数据源单机多实例部署问题解决 的相关文章

  • Dubbo3.0 整合 Nacos

    首先呢 xff0c 这个项目分为provider提供者和consumer消费者 xff0c 使用的版本是dubbo3 0 7 xff0c nacos是2 0 4 xff08 注意 xff1a 要使用dubbo3 xff0c nacos的版本
  • Spring Cloud Alibaba实战(八) - Dubbo + Nacos

    目录 一 Nacos动态配置 二 Nacos注册中心 三 Sentinel之限流 四 Sentinel之熔断 五 Gateway之路由 限流 六 Gateway之鉴权 日志 七 Gateway搭配Nacos实现动态路由 八 Dubbo Na
  • SpringBoot集成nacos动态刷新数据源

    目录 前言 第一步 重写DruidAbstractDataSource类 第二步 配置动态获取nacos配置信息 第三步 手动刷新数据源 前言 因为项目需要 需要在项目运行过程中能够动态修改数据源 即 数据源的热更新 这里以com alib
  • Nacos配置中心使用(Spring Cloud版)

    目标 向项目中集成Nacos配置 原项目是一个SpringBoot项目 这里假设我们无法修改原有项目的SpringBoot版本 注意 在不动SpringBoot版本的前提下 根据SpringBoot的版本 确定Spring Cloud和Na
  • Nacos Server 1.1.3.zip网盘资源下载

    链接 https pan baidu com s 1 0TnUUh3rvzBRAUKaKZCsQ 提取码 yyds
  • Nacos startup无反应,启动报错的解决办法

    今天在运行Nacos的时候遇见了点问题 记录一下 我的系统是win11 运行的Nacos版本是 2 0 3 https github com alibaba nacos releases tag 2 0 3 运行startup cmd 无反
  • Nacos介绍以及使用

    目录 一 概述 1 1 Nacos是什么 能干嘛 1 2 去哪下载 1 3 各个注册中心比较 二 Nacos作为服务注册中心 2 1 基于Nacos的服务提供者 2 2 基于Nacos的服务消费者 三 Nacos作为服务配置中心 3 1 N
  • nacos频繁挂

    背景 公司使用的nacos 频繁挂 查看日志发现 Java HotSpot TM 64 Bit Server VM 25 144 b01 for linux amd64 JRE 1 8 0 144 b01 built on Jul 21 2
  • Nacos踩坑记录之The IPv4 address(“nacos.xxxx.local“) is incorrect

    版本 spring cloud alibaba 2021 1 项目构建工具 gradle nacos server 2 0 3 1 问题 昨天早上上班来了之后 运营的同事着急的过来说生产环境登不上了 我赶紧打开日志看了之后 就发现了这样的报
  • Nacos实战(19)-Nacos健康检查机制:保障你的服务稳定运行!

    0 前言 注册中心不应仅提供服务注册和发现功能 还应保证对服务可用性监测 对不健康的服务和过期的进行标识或剔除 维护实例的生命周期 以保证客户端尽可能的查询到可用的服务列表 因此本文介绍Nacos注册中心的健康检查机制 1 注册中心的健康检
  • zookeeper到nacos的迁移实践

    本文已收录 https github com lkxiaolou lkxiaolou 欢迎star 技术选型 公司的RPC框架是dubbo 配合使用的服务发现组件一直是zookeeper 长久以来也没什么大问题 至于为什么要考虑换掉zook
  • 【Nacos在derby模式下密码忘记】使用derby的ij工具重置密码/修改密码

    问题描述 nacos部署未用mysql 直接运行 使用了默认的derby数据库 这时候不一小心修改的密码给忘记了 无法登录 当时是部署在centos上的一个演示环境 没有采用mysql数据库 如果生产上 建议使用mysql 解决方案 1 下
  • 记一次nacos自动更新导致druird属性数据更新异常

    现象 org springframework boot context properties bind BindException Failed to bind properties under spring druid to javax
  • (超详细、带图带源码)Nacos注册中心的搭建与测试

    前言 本系列是从头开始进行学习Nacos的相关知识 从相关概念到业务开发等等 本篇是第三篇 主要知道为什么需要注册中心 为什么选择Nacos作为注册中心和Nacos作为注册中心的快速搭建 入门篇 阿里Nacos系列 为什么要选择Nacos和
  • nacos动态更新配置RefreshScope注解后取值为null

    首先排除版本问题 如果在controller类上面直接加 RefreshScope注解 会导致name值为null count值也为null Slf4j RestController RequestMapping api RefreshSc
  • 【微服务】Nacos:发现、配置和管理微服务

    Nacos 发现 配置和管理微服务 Nacos 在阿里巴巴起源于 2008 2008 2008 年五彩石项目 完成微服务拆分和业务中台建设 成长于十年双十一的洪峰考验 沉淀了简单易用 稳定可靠 性能卓越的核心竞争力 随着云计算兴起 2018
  • Nacos 注册中心的设计原理:让你的应用轻松实现高效注册与发现!

    当应用开始脱离单机运行和访问时 服务发现就诞生了 目前的网络架构是每个主机都有 个独立的 IP 地址 服务发现基本都是通过某种方式获取到服务所部署的 IP 地址 DNS 协议是最早将 个网络名称翻译为网络 IP 的协议 在最初的架构选型中
  • AlibabaCloud核心组件服务治理Nacos(一)

    目录 一 什么是注册中心 服务治理 二 为什么要用注册中心 三 主流的注册中心 四 Linux安装nacos 五 nacos的使用 添加nacos依赖 六 服务之间的调用 一 什么是注册中心 服务治理 服务注册 服务提供者provider
  • Nacos启动: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorExceptionTable nacos_config.config_inf

    把nacos 1 1 4 server下载到本地之后 然后直接在bin目录下启动startup cmd报错 本地Mysql版本 5 6 44 nacos server版本 1 1 4 我找了很多解决办法 更多的说的是nacos自带的mysq
  • k8s集群内部署nacos集群

    一 前言 在k8s集群中部署nacos集群需要用到以下服务setafulset pv pvc service configmap setafulset用来管理nacos服务 因为nacos服务是有状态服务 所以需要使用setafulset

随机推荐

  • 人的梦想 是不会结束的!

    文章目录 前言一 一年之约1 学习嵌入式2 探寻嵌入式之路 二 我的心跳1 奉劝2 行动人的梦想是永远不会结束的 xff01 前言 随着在程序员这条路上不断发展 xff0c 自己学得越多 xff0c 就会感觉自己学的东西有多渺小 下面就说说
  • 在linux下启动tomcat,并实时查看tomcat的控制台输出

    在windows下 xff0c 只要双击运行start bat文件 xff0c tomcat就能正常启动 xff0c 并且在控制台中保持持续输出 xff0c 方便维护人员实时查看程序运行状态 但是在Linux中 xff0c 情况会比wind
  • apt-get autoremove remove 新手收割者

    每一个接触linux系统的小坏蛋 xff0c 都会接触apt get 不出意外的话 xff0c 每一个小坏蛋都会尝试被sudo apt get remove 所摆布的命运 重申一遍 xff0c 重要的事情说三遍 文章目录 不要用sudo a
  • c++ stringstream ss()

    定义了三个类 xff1a istringstream ostringstream 和 stringstream xff0c 分别用来进行流的输入 输出和输入输出操作 本文以 stringstream 为主 xff0c 介绍流的输入和输出操作
  • C++ getline函数用法详解

    文章目录 前言一 getline 函数的定义二 getline 函数的使用1 可读取整行 xff0c 包括前导和嵌入的空格 xff0c 并将其存储在字符串对象中 2 char delim表示遇到这个字符停止读入 xff0c 在不设置的情况下
  • 【ROS-Navigation-costmap_2d】costmap_prohibition_layer障碍物插件

    系列文章目录 文章目录 系列文章目录前言一 costmap 2d是什么 xff1f 二 使用步骤1 下载源代码2 安装插件3 在costmap 2d中插入障碍物4 修改launch文件5 设置障碍物坐标参数6 主要事项 总结 前言 随着SL
  • 【C++】指向指针的引用

    系列文章目录 文章目录 系列文章目录前言一 指向指针的引用二 使用步骤1 代码2 TIPS 总结 前言 一 指向指针的引用 引用本身不是一个对象 xff0c 因此不能定义指向引用的指针 但指针是对象 xff0c 所以存在对指针的引用 二 使
  • 第三讲 【cartographer】 添加功能以从RVIZ为纯本地化模式设置初始姿势

    系列文章目录 第一讲 ROS SLAM 2D激光雷达 cartographer构建地图 第二讲 cartographer Ubuntu16 04 kinetic 最新版cartographer安装 xff08 2020 11 4更新 xff
  • 第四讲 【cartographer】纯定位 纯本地化 pure_localization

    系列文章目录 第一讲 ROS SLAM 2D激光雷达 cartographer构建地图 第二讲 cartographer Ubuntu16 04 kinetic 最新版cartographer安装 xff08 2020 11 4更新 xff
  • C++中compare函数

    compare函数用来进行字符串以及其子串的比较 xff0c 示例如下 span class token macro property span class token directive keyword include span span
  • C++ to_string()函数

    系列文章目录 文章目录 系列文章目录前言一 C 43 43 to string 函数详解二 example总结 前言 http www cplusplus com reference string to string 一 C 43 43 t
  • Ubuntu18.04 下VSCode配置Clang-format

    系列文章目录 文章目录 系列文章目录前言一 Clang format二 使用步骤1 Visual Studio Code安装Clang format2 在命令行中安装Clang format3 添加格式化同步保存功能 总结 前言 一 Cla
  • 在Ubuntu/Linux环境下使用MySQL:启动和关闭MySQL服务

    传送门 在Ubuntu下使用MySQL 安装MySQL 操作系统 Ubuntu 17 04 64位 MySQL版本 MySQL 5 7 一 启动MySQL服务 nbsp 使用以下命令来启动MySQL service mysql start
  • CDockablePane操作[转]

    去掉关闭按钮 xff1a 在继承CDockablePane的类中重写CanBeClosed 方法 xff1a virtual BOOL CanAutoHide const return FALSE 去掉自动隐藏风格 xff1a virtua
  • 【设计模式】中介者模式的解析与使用

    系列文章目录 文章目录 系列文章目录前言一 使用设计模式的目的二 实践是最好的老师2 1 中介者模式 xff08 飞机塔台 xff09 2 2 通信过程 总结 前言 设计模式在系统编程的重要性不言而喻 xff0c 如何一个程序没有使用设计模
  • 【C++】一文读懂多重条件判断、多条件判断

    系列文章目录 文章目录 系列文章目录前言一 if else1 1 优点 xff1a 1 2 缺点 xff1a 二 switch case2 1 优点 xff1a 2 2 缺点 xff1a 总结 前言 多重条件判断 多条件判断是每一个程序员都
  • 修身齐家治国平天下

    系列文章目录 文章目录 系列文章目录前言一 修身齐家治国平天下1 1 修身1 2 齐家1 3 治国1 4 平天下 二 了凡四训2 1 立命之学2 2 改过之法2 3 积善之方2 4 谦德之效 总结 前言 人的一生 xff0c 追求光明 xf
  • 如何使用IntelliJ IDEA 配置Maven

    IDEA 全称 IntelliJ IDEA xff0c 是java语言开发的集成环境 xff0c IntelliJ在业界被公认为最好的Java开发工具之一 IDEA是JetBrains公司的产品 现在有逐步取代老牌Java开发工具Eclip
  • Protobuf协议格式详解

    protobuf 是google开源的一个序列化框架 xff0c 类似xml xff0c json xff0c 最大的特点是基于二进制 xff0c 比传统的XML表示同样一段内容要短小得多 还可以定义一些可选字段 xff0c 用于服务端与客
  • 【Nacos源码调试】集群模式内置数据源单机多实例部署问题解决

    最近对Nacos源码比较感兴趣 xff0c 个人是个好奇宝宝 xff0c 特别想了解一下Nacos这个阿里开源的分布式服务注册与发现及配置管理中间件内部到底是个啥样子 xff0c 于是就想着自己源码编译 xff0c debug走一下试试 可