zoukankan      html  css  js  c++  java
  • 自己orm框架的一个旷世大BUG!自己都恶心死了。

    错误的现象是空指针,在orm的list删除一个对象的时候发生的。

    首先把所有项目都源代码都放在一起看,最后找到空指针的问题:

    ormobject.removefromlist。产生了一个插数据库操作,但是这个操作的对象的uniquekey没有赋值,导致数据库错误,这个错误被log记录,但是log。。(log里面由于select的时候没有把对方添加到内存,)记录error 的时候,log开启了ip,导致空指针。

    解决是解决了,可是为什么会出现插入数据库的操作?

    removefromlist, 在aop里面会调用
    proxyList = ObjConvertor.Instance.ObjListToProxyList(value as IList);
    把输入参数转化为proxy

    如果buffer没有对应的对象如果对象的proxy不存在,那么这个方法会自动创建一个proxy,这个时候就导致了插入数据库操作(sqlserver又会认为空的uk为重复,导致了log的出错)

    找到问题了,那么问题就是,为什么对象的proxy不存在

    select的bug,如果出现2个数据,select返回是null!!!

    由于ormobj的list里面保存了2个对象的upk都是相同的,导致select的时候,返回2个结果,但是程序自动判断,返回null。导致了这个复杂的bug!!!!

    又由于返回了null,proxy=null,但是aop没有判断空指针返回,因此再次传递给了proxytoobject,这个时候,object就有了空的proxy,导致了出错!

    靠!!!!!!!!!!恶心到自己都想吐。。。这么垃圾的代码怎么可能是我写的。嗨。。。

    现在还有另外一个大bug,在withdraw数据的时候,服务器报500错误,查看日志依然是违反了Unique约束,估计仍然是个bug

  • 相关阅读:
    Maven篇----04 mvn 常用命令
    Maven篇----03 私服配置&使用
    Maven篇----02 Nexus2私服管理
    Maven篇----01 简介&Maven私服
    SonarQube 系列之 — 04 插件扩展
    SonarQube 系列之 — 02 配置与管理
    SonarQube 系列之 — 01 安装和扫描
    JMeter 系列之—-05 支持CI扩展
    一些关于常见的进制教程
    【pic+js+gh】免费高速图床方案
  • 原文地址:https://www.cnblogs.com/zc22/p/1622843.html
Copyright © 2011-2022 走看看