今天同事反应启动应用后,启动日志中打印的nacos配置文件不是最新版本的,但是我试了一下本地又不能复现。
于是想通过postman直接访问nacos获取配置文件来进行测试:
-
先打断点找到访问地址、参数和header:
-
然后复制到postman:
-
然后比较了我本地和同事的postman请求,发现我们访问的地址不一样,他访问的134,我访问的133,这时发现原来134节点有问题,从这个节点拉取的配置和其他节点拉取的不一样,版本较低。
-
登录nacos服务器134,进入logs目录,使用less命令打开config-dump.log,发现有大量报错:
java.io.IOException: File '/home/xxx/nacos/data/tenant-config-data/wealth-dev-ccc/wp/mp-vvvv' cannot be written to
at org.apache.commons.io.FileUtils.openOutputStream(FileUtils.java:2177)
at org.apache.commons.io.FileUtils.writeStringToFile(FileUtils.java:3096)
at org.apache.commons.io.FileUtils.writeStringToFile(FileUtils.java:3133)
at org.apache.commons.io.FileUtils.writeStringToFile(FileUtils.java:3115)
at com.alibaba.nacos.config.server.utils.DiskUtil.saveToDisk(DiskUtil.java:59)
at com.alibaba.nacos.config.server.service.ConfigCacheService.dump(ConfigCacheService.java:114)
at com.alibaba.nacos.config.server.service.dump.DumpConfigHandler.configDump(DumpConfigHandler.java:85)
at com.alibaba.nacos.config.server.service.dump.processor.DumpProcessor.process(DumpProcessor.java:87)
at com.alibaba.nacos.common.task.engine.NacosDelayTaskExecuteEngine.processTasks(NacosDelayTaskExecuteEngine.java:154)
at com.alibaba.nacos.config.server.manager.TaskManager.processTasks(TaskManager.java:114)
at com.alibaba.nacos.common.task.engine.NacosDelayTaskExecuteEngine$ProcessRunnable.run(NacosDelayTaskExecuteEngine.java:174)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
原来是目录权限不对,导致新的配置文件无法更新导致,于是修改该文件的所属权限为nacos启动用户,postman再次使用134测试,发现返回正常了。