记一次改代码后本地正常,开发环境服务能启动,一个生产环境发布正常,另一个生产环境服务启动失败的事故(还好没杀程序员祭天)以警示

本文主要是介绍记一次改代码后本地正常,开发环境服务能启动,一个生产环境发布正常,另一个生产环境服务启动失败的事故(还好没杀程序员祭天)以警示,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题描述:这两天在工作中的两个项目优化一点同样写死的代码,大概是这样的↓

1203220171237629901和1203220171237629902是写死的,但其实可以通过Redis中动态获取,改完之后一个项目中本地测试跑main方法没问题,服务也能启动↓

另一个项目本地启动服务也能起来,不过有一些相关的报错↓

发布到线上后,服务启动失败,一个Service对象创建失败↓

子系统宕机10分钟,被运维人员吐槽,还好不是白天,要不然真是要杀程序员祭天了,扣绩效都是小事。

 

项目概况和环境:改动涉及到两个工程,都是Spring Boot项目,一个工程是用来定时跑任务的,一个工程是业务后台,跑任务的工程没用配置中心,跑业务后台的工程用了配置中心,配置中心这边有公共的配置文件application.yml,以及多个服务各个环境的配置文件↓

   

 

 

分析问题:

找到创建失败的Service,发现在static代码块有一句代码是通过RedisTemplate获取器的一个方法获取RedisTemplate对象,熟悉Spring的后端开发同学都知道Service对象会纳入Spring Bean管理,自动初始化,static代码块中的代码会随着初始化,此时就会获取RedisTemplate对象,而要获取Redis肯定要依赖配置文件的配置,代码也是这么写的↓

本地环境是dev,会去找application-dev.yml,本地也有这个文件,跑任务的工程发布到开发环境,此时环境也是dev,正常,发布到正式环境是prod,也正常。业务后台的工程当时没有发布到开发环境,直接发到线上去了,服务启动失败。我就很纳闷为什么同样的修改一个生产正常,一个生产事故,后来再仔细想了下,发现问题:跑任务的工程没有用配置中心,线上环境有各个环境对应的application-%s.yml文件并且有Redis配置,跑业务后台的工程用了配置中心,没有application-prod.yml文件导致报错。

 

心得:

1.要遵循发布流程,上生产的代码一定要先上测试环境通过测试

2.要求自己把控好质量关,开发环境一定要验证,而不仅仅只是单元测试或者跑main方法通过就行了

3.加强工作中的沟通,存在不确定时要询问主管或其他同事确认

欢迎各位大佬留言讨论。我还不想死呀,以后要更严谨。

这篇关于记一次改代码后本地正常,开发环境服务能启动,一个生产环境发布正常,另一个生产环境服务启动失败的事故(还好没杀程序员祭天)以警示的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/184553

相关文章

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

NameNode内存生产配置

Hadoop2.x 系列,配置 NameNode 内存 NameNode 内存默认 2000m ,如果服务器内存 4G , NameNode 内存可以配置 3g 。在 hadoop-env.sh 文件中配置如下。 HADOOP_NAMENODE_OPTS=-Xmx3072m Hadoop3.x 系列,配置 Nam

MySQL数据库宕机,启动不起来,教你一招搞定!

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG、Mongodb数据库运维(如安装迁移,性能优化、故障应急处理等)公众号:老苏畅谈运维欢迎关注本人公众号,更多精彩与您分享。 MySQL数据库宕机,数据页损坏问题,启动不起来,该如何排查和解决,本文将为你说明具体的排查过程。 查看MySQL error日志 查看 MySQL error日志,排查哪个表(表空间

高效+灵活,万博智云全球发布AWS无代理跨云容灾方案!

摘要 近日,万博智云推出了基于AWS的无代理跨云容灾解决方案,并与拉丁美洲,中东,亚洲的合作伙伴面向全球开展了联合发布。这一方案以AWS应用环境为基础,将HyperBDR平台的高效、灵活和成本效益优势与无代理功能相结合,为全球企业带来实现了更便捷、经济的数据保护。 一、全球联合发布 9月2日,万博智云CEO Michael Wong在线上平台发布AWS无代理跨云容灾解决方案的阐述视频,介绍了

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

springboot3打包成war包,用tomcat8启动

1、在pom中,将打包类型改为war <packaging>war</packaging> 2、pom中排除SpringBoot内置的Tomcat容器并添加Tomcat依赖,用于编译和测试,         *依赖时一定设置 scope 为 provided (相当于 tomcat 依赖只在本地运行和测试的时候有效,         打包的时候会排除这个依赖)<scope>provided

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来