首页 > 编程语言 >增量上线java代码引发的生产事故

增量上线java代码引发的生产事故

时间:2023-02-08 11:34:21浏览次数:40  
标签:上线 java 代码 本地 增量 返回值 save 测试环境

事情起因

某一天晚上,运维说由于业务流程问题,智能运维告警太多,需要处理,同事就改了一点与业务无关的代码,直接把class文件扔上去。到了早上9点,上游通知整个上午都下单失败,吓得我们赶紧登上系统看,一看确实有问题。。。运维立马回滚到上一个稳定版本,然后我和同事去排查问题原因。

问题排查

因为本地和测试环境的流程是正常的,看样子是没啥问题的,后面模拟昨晚的操作把本地的文件增量上到测试环境上,就报错了,报的是下图的代码和错误。

 

NoSuchMethodError,找不到这个save方法??我看本地和服务器都有的......

后面再仔细对比,发现里面内有乾坤。本地和测试环境的工具类居然是不一样的。

本地save方法是有返回值的

 

测试环境反编译后的save方法是没有返回值的

 

 也就是说本地service调用save是调有返回值的save方法,增量上上去之后就找不到有返回值的save方法。

看了增量上线的class文件,结果得到了实锤。

 

那么为什么两个文件会不一样呢??这就关系了打包工具jenkins。由于里面的工具包项目是放上去没有更新过了,可能是很旧的版本,后面我们本地的是新版本......

 

总结

主要是因为之前是很久以前的项目,没有用maven管理,导致版本不一致的问题发生。而且对于重要的业务修改还是要走正式流程,不踩坑也不知道改了一个无关紧要的代码会影响到关键业务。另外还是不推荐增量上线代码,因为是直接跳过了编译操作,这样会造成上面说的奇怪问题,如果是正常打包就会自动检查方法是否存在。一个问题的发生总是有多个小问题造成的,如果是某个环节做好了也不会发生这个事情,面对生产环境还是要小心谨慎。

 

标签:上线,java,代码,本地,增量,返回值,save,测试环境
From: https://www.cnblogs.com/bbibbi/p/17101077.html

相关文章

  • java容器结构图
    容器都是从Collection接口中导出来的,从中可以看到容器只有四种List,Set,Queue,MapCollection接口实现了Iterator接口,说明所有的容器实现类都可以使用Iterator的方法ListIterato......
  • java多线程编程核心技术(1丶2章)
    java多线程编程第一章:实现多线程编程主要有两种方式,一种是继承Thread类,另一种是实现Runnable接口。使用继承Thread类的方式创建新线程时,最大的......
  • linux系统安装java环境
    首先要去官网下载jdk,网址:https://www.oracle.com/java/technologies/downloads/#java8下载好压缩包后用XShell连接linux进入usr/local:cdusr/local 然后通过xftp将......
  • javaScript 高级语法 - class创建对象,继承 extends,super,类中this指向问题
    1.class创建对象classHuman{//类constructor(id,name){//构造器this.id=id;//成员变量this.name=name;}info(){//方法console.log("inf......
  • JAVA WEB项目大文件上传下载方法
    ​ 我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用。首先我们需要了解的是上传文件三要素:1.表单提交方式......
  • JavaScript 实战开发经验!函数多参数传参技巧
    Tips:必选参数指的是必须要传入实参的参数;可选参数在函数中有默认值,如有传入实参,则取实参的值,如果没有传入实参,则使用默认值。函数的众多参数问题当一个函数既有必选参数,......
  • JavaScript 高阶函数
    一、高阶函数JavaScript中的高阶函数是一种接受函数作为输入或返回函数作为输出的函数。它们提供了灵活的方式来处理函数,并允许把函数作为参数或返回值传递。它们是函数......
  • Java—求素数
    定义:素数又称质数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数(规定1既不是质数也不是合数)代码:package练习;importjava.util.Scann......
  • Java—10000000以内完美数
    摘要:完美数的定义:所有的真因子(即除了自身以外的约数)的和恰好等于它本身。例如:6=1+2+328=1+2+4+7+14496=1+2+……如果用for循环的话会运行很长时间,所以求完美数有一个......
  • JAVA WEB项目大文件上传下载组件
    ​ 最近遇见一个需要上传百兆大文件的需求,调研了七牛和腾讯云的切片分段上传功能,因此在此整理前端大文件上传相关功能的实现。在某些业务中,大文件上传是一个比较重要的......