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

结构介绍:

最近在写游戏中社交相关的逻辑处理。整体思路架构如下:

当玩家登录游戏,去数据库中查找有没有玩家的信息,如果有,那么就取出来,放在内存中,如果没有,就新建一个玩家信息。

当玩家登出游戏的时候,把玩家的信息从内存中写入数据库中

现场日记:

今天在做单元测试的时候,发现一个bug,当玩家第一次登录游戏,然后登出之后,玩家的信息竟然没有存到数据库里。

当玩家第二次登录的时候,再登出游戏,竟然存到数据库里了。

分析过程:

在知晓这个bug之后,仔细打印从玩家登录到登出过程中运行的每一个函数。经过一翻查找,发现玩家在登出游戏的时候,玩家的信息

往数据库里存储的时候报错,并且错误被劫持。

紧接着,开始打印错误日志,发现当玩家的信息往数据库里面写入的时候,有一个信息从内存中读取失败。

然后分析这个信息,发现了之前思维的一个漏洞:

之前的想法是当玩家第一次登录的时候,先校验用户名和密码,如果不存在用户,那么就会新建一个。这时候,应该接着新建一个初始

的玩家信息,但是之前没有执行这一步。所以导致玩家的信息一直都没有,自然就写不入数据库里。

时间: 2024-10-25 03:07:48

bug修复日记------玩家第一次登陆的信息没有存储的相关文章

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

结构介绍: 当客户端下线的时候,客户端会发一个消息给服务端,告诉服务端,我要下线,接着,客户端就会执行下线的函数 下线函数里会执行让服务端往数据库里写客户端的数据的函数并且把这个客户端从session列表里删除. 当服务端接受到客户端想要下线的意愿的时候,也会执行下线函数. 这样做的目的是为了防止客户端意外下线,导致客户端无法执行下线函数,服务端自己往数据库里写数据. 现场日记: 在写测试用例的时候,当客户端执行下线函数之后,立马清楚数据库.接着会导致服务端依然会往数据库里写一次数据,但是此时数

android-misc-widgets四向(上下左右)抽屉bug修复版--转载

 android-misc-widgets四向(上下左右)抽屉bug修复版 2013-08-04 08:58:13 标签:bug down top panel slidingdrawer 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://mikewang.blog.51cto.com/3826268/1263802 一,与开源项目相比,改进如下: 1,修复了闪屏的问题 二,与开源项目相比,增加的限制: 1,不能设置相应动画的In

iOS中ScrollView(滚屏,引导界面,和判段是否是第一次登陆)

#import "RootViewController.h" #import "SecondViewController.h" #define kScreenWidth [UIScreen mainScreen].bounds.size.width #define kScreenHeight [UIScreen mainScreen].bounds.size.height #define kImageCount 6 #define kImageName @"

一步一步来做WebQQ机器人-(二)(第一次登陆)

预计会有这些步骤,当然某些步骤可能会合并: 验证码 第一次登陆 第二次登陆 保持在线和接收消息 获取好友和群列表 发送消息 变成智能的(*?∀?*) webqq的登陆,分为2步,本文主要讲第一次登陆 加密 对密码加密处理得到P参数 截止到现在,加密方式是这样的: var hexcase = 1; var b64pad = ""; var chrsz = 8; var mode = 32; function md5(A) { return hex_md5(A) } function he

Python Web 应用程序框架 Django 1.10.1 发布,bug修复

Django 1.10.1 发布了,Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC)风格的 Web 应用程序框架(腾云科技TY300.COM).使用 Django,我们在几分钟之内就可以创建高品质.易维护.数据库驱动的应用程序(勤快学QKXue.NET). 该版本主要是修复1.10中的bug.更多详细信息,可参看完整发布说明. Bug修复: Fixed a crash in MySQL connections where SELECT @@SQL_AUTO_IS

关于MySQL-Proxy子进程异常退出BUG修复

关于 MySQL-Proxy 子进程异常退出的问题,我已经在之前的博文中提到过: http://sofar.blog.51cto.com/353572/1398820 相关的错误信息如下图所示: 经查阅11号信号为SIGSEGV,表示进程执行了一个无效的内存引用或发生段错误,从而导致子进程异常退出. 我们知道 MySQL-Proxy 采用的是父子进程的模式,处理请求都是由子进程来完成的,而父进程只起到监控子进程的作用, 我们一般会在 MySQL-Proxy 的配置文件中添加"keepalive=

jsb里出现的 Invalid Native Object的一次bug修复的思考

Cocos2d: jsb: ERROR: File /Users/dcx_JD/Documents/cocos2d-x-2.2.2/scripting/javascript/bindings/generated/jsb_cocos2dx_auto.cpp: Line: 4911, Function: js_cocos2dx_CCNode_removeFromParentAndCleanup Cocos2d: Invalid Native Object Cocos2d: JS: /var/mobi

[bug修复方案分享]阿拉伯文导致TextView显示顺序左右颠倒

bug现象: 在“?(·ω·) ?”这个表情后通过StringBuilder拼接的文字会显示在表情内部,例如拼接“2015”后TextView控件中显示为“?(·ω·) ?2015” bug原因排查: Step1:怀疑是工程师调用append方法错误,但通过debug调试查看String的char[]值正常 Step2:怀疑是“ ?”这个特殊字符引起的问题,删除后显示正常 Step3:百度搜索“ ?”字符,发现是阿拉伯语文字,结合阿拉伯语从右至左的阅读.书写顺序,确认bug原因 bug修复方法:

OJ2.0userInfo页面Modify逻辑bug修复,search功能逻辑实现

这周的主要任务:userInfo页面Modify逻辑bug修复,search功能逻辑实现. (一)Modify逻辑bug修复: 这里存在的bug就是在我们不重置密码的时候按照前面的逻辑是不能提交修改,这个逻辑是错误的,应该改为可以不修改密码也能提交,主要是if逻辑判断的修改 先看一下代码: def userInfo(request, user_id): try: user = User.objects.get(userID = request.session['userID']) except: