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

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

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

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

相关文章

C++使用栈实现括号匹配的代码详解

《C++使用栈实现括号匹配的代码详解》在编程中,括号匹配是一个常见问题,尤其是在处理数学表达式、编译器解析等任务时,栈是一种非常适合处理此类问题的数据结构,能够精确地管理括号的匹配问题,本文将通过C+... 目录引言问题描述代码讲解代码解析栈的状态表示测试总结引言在编程中,括号匹配是一个常见问题,尤其是在

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

定价129元!支持双频 Wi-Fi 5的华为AX1路由器发布

《定价129元!支持双频Wi-Fi5的华为AX1路由器发布》华为上周推出了其最新的入门级Wi-Fi5路由器——华为路由AX1,建议零售价129元,这款路由器配置如何?详细请看下文介... 华为 Wi-Fi 5 路由 AX1 已正式开售,新品支持双频 1200 兆、配有四个千兆网口、提供可视化智能诊断功能,建

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

pip install jupyterlab失败的原因问题及探索

《pipinstalljupyterlab失败的原因问题及探索》在学习Yolo模型时,尝试安装JupyterLab但遇到错误,错误提示缺少Rust和Cargo编译环境,因为pywinpty包需要它... 目录背景问题解决方案总结背景最近在学习Yolo模型,然后其中要下载jupyter(有点LSVmu像一个

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(

TP-Link PDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务

《TP-LinkPDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务》近期,路由器制造巨头普联(TP-Link)在用户群体中引发了一系列重要变动,上个月,公司发出了一则通知,明确要求所... 路由器厂商普联(TP-Link)上个月发布公告要求所有用户必须完成实名认证后才能继续使用普联提供的 D

Android里面的Service种类以及启动方式

《Android里面的Service种类以及启动方式》Android中的Service分为前台服务和后台服务,前台服务需要亮身份牌并显示通知,后台服务则有启动方式选择,包括startService和b... 目录一句话总结:一、Service 的两种类型:1. 前台服务(必须亮身份牌)2. 后台服务(偷偷干