结构介绍:

当客户端下线的时候,客户端会发一个消息给服务端,告诉服务端,我要下线,接着,客户端就会执行下线的函数

下线函数里会执行让服务端往数据库里写客户端的数据的函数并且把这个客户端从session列表里删除。

当服务端接受到客户端想要下线的意愿的时候,也会执行下线函数。

这样做的目的是为了防止客户端意外下线,导致客户端无法执行下线函数,服务端自己往数据库里写数据。

现场日记:

在写测试用例的时候,当客户端执行下线函数之后,立马清楚数据库。接着会导致服务端依然会往数据库里写一次数据,但是此时数据库

已经被清空了,所以此时就会报错

分析过程:

从现场日记中可以很简单的分析出错误产生的原因的时候,很自然的就想到标记一下此客户端有没有被执行过下线函数。

这样做之后这个问题确实解决了。紧接着发现了另外一个问题。因为程序是多线程操作,所以发生在往数据库里写数据

执行完之前会执行到清数据库的操作,所以依然会报错。然后想到写另外一个下线服务,让数据先往数据库里写,然后

执行下线操作。然后把这个服务阻塞掉。执行完这个服务才能执行别的服务。

最终解决方案:

分析完了解决就很简单了,首先标记一下客户端有没有成功执行过下线函数。

然后写一个下线服务,把这个服务阻塞一下。

bug修复日记---------玩家信息被重复写入数据库相关推荐

  1. bug修复日记------玩家第一次登陆的信息没有存储

    结构介绍: 最近在写游戏中社交相关的逻辑处理.整体思路架构如下: 当玩家登录游戏,去数据库中查找有没有玩家的信息,如果有,那么就取出来,放在内存中,如果没有,就新建一个玩家信息. 当玩家登出游戏的时候 ...

  2. Python写入数据库

    需求描述: 模拟个人信息的数据:姓名(长度(6-12位,由大小写 字母数字)),性别(男女随机),年龄(18-50随机),邮箱(姓名@163.com);将获取的数据存储在数据库中,当文件数据量过大时, ...

  3. flume1.7 TailDirSource断点续传与文件更名后数据重复采集的bug修复

    flume1.7 TailDirSource断点续传与文件更名后数据重复采集的bug修复 一:flume1.7新增了组件Taildir Source 官方链接:http://flume.apache. ...

  4. dnf过年服务器维护否,DNF服务器或发生重大漏洞,玩家:维护这么慢,这些BUG修复了吗?...

    原标题:DNF服务器或发生重大漏洞,玩家:维护这么慢,这些BUG修复了吗? 爱玩游戏,分享快乐,我是游戏欢乐Tree. DNF每周四都是例行服务器维护的日子,玩家们对此已经早就习以为常.每次服务器维护 ...

  5. 我的世界服务器如何修复报错,我的世界18w30a发布_我的世界1.13版本bug修复

    我的世界1.13版本刚刚上线没多久,官方就发布了18w30a,修复了游戏中的诸多bug,说实话,这次版本更新中的bug还真是不少啊,那么究竟有哪些内容呢,赶快来跟小编一起看一下吧! 我的世界1.13版 ...

  6. 12月19日绝地求生服务器维护公告,绝地求生12月19日更新内容有哪些更新到几点 BUG修复哪些...

    绝地求生12月19日正式服更新,PC1.0版本第24轮更新公告追加内容正式上线,接下来给大家带来具体的更新内容及更新时间,一起来看看吧. [正式服维护公告] 我们将在北京时间12月19日(星期三) 0 ...

  7. ninjala还是显示服务器维护,Ninjala更新2.0版本 调整了武器平衡以及BUG修复

    <Ninjala>更新2.0版本,泡泡糖忍战今日更新了最新的版本2.0,分别调整了大部分游戏的平衡性以及武器平衡,还修复了BUG错误 机制调整: -整合全球服务器,匹配已不受服务器限制 - ...

  8. JavaEE项目bug修复记——一场由特殊空字符(160号ASCII码)引发的血案

    我负责维护的一个JavaEE项目中有这样一个功能:可以用poi批量导入Excel表中的学号并在该系统中创建对应的用户.上周三中午,接到用户反馈,将Excel导入系统后用其中的用户名出现了无法登陆提示用 ...

  9. CKFinder3.5.1免费和整合springboot等相关bug修复

    CKFinder3.5.1免费和整合springboot等相关bug修复 前言 项目本身bug修复 ■ 流异常 ■ 整合springboot相关bug 免费过程 ■ 代码可读化 ① 初步整理 ② 大致 ...

最新文章

  1. mongodb基础应用
  2. 增加堆内存的大小 - 提防眼镜蛇效应
  3. python数据处理实例-Python大数据处理案例
  4. Windows Server 2016软件定义存储:Storage Spaces Direct介绍
  5. Cocos Creator实战教程(5)】——打砖块(物理引擎,碰撞检测)
  6. [译]Javascript中的闭包(closures)
  7. c语言程序错误提示一个找不到,C语言编辑程序出现错误提示.doc
  8. Python程序设计读者群成立通知
  9. 重载操作符解析(原)
  10. 【信号与系统】信号频谱和测量之汉明窗
  11. 计算机机设应用基础,计算机机应用基础–word.ppt
  12. pmic输出电压设置+pinctrl子系统+平台驱动demo例程
  13. w ndows无法完成格式化,硬盘无法格式化-windows无法完成格式化怎么办
  14. Java web----多表查询
  15. Lync 2010 客户端:无法登陆到Lync,验证服务器中的证书时遇到问题
  16. L2-023 图着色问题 (25 分c++代码)
  17. Web_Dashboard开篇:如何在网页中制作炫酷的看板
  18. 不可多得的干货!阿里P7级别面试经验总结,吊打面试官系列!
  19. 解决端口被进程占用 xxx port is already in use
  20. we learn怎么刷时间_怎么在其他平台做Shopify独立站营销

热门文章

  1. 局域网攻击与网络设备安全配置
  2. linux洪水攻击软件,SYN洪水攻击工具hping SYN-Flooding tool
  3. Microsoft Office 2016 和 Visio 2016 自定义安装的安装包 非即装即用版本
  4. Linux系统管理及服务配置
  5. 磁盘空间被占满,如何找出占用磁盘空间过大的的文件
  6. 考研快题平面图,如何用马克笔去上色?
  7. 浙江大学计算机学院 00级,“00”后来了!浙江大学2018级新生报到啦!
  8. 达人评测 酷睿i9 12950hx和i9 12900hx区别哪个强
  9. vnc连接不上解决问题方法
  10. Android_通过两个点的经纬度计算距离