问题:
站内作者发布了文章,作者的关注者却未收到任何提醒的问题
排查过程:
- 代码Code Review,并未发现问题
- 本地调试,发现一个奇怪的问题,打断点的情况下,邮件及站内信都正常发送和接收;如果移除断点,邮件及站内信就发送失败
分析:
关于排查过程的第2点,起初我并没有想到是哪里有问题,直到我看到了事务,才发现问题的所在。因为邮件和站内信是异步发送的,在事务还未提交时,事件就已经发出,但是执行事件的程序并未找到相关的数据,所以邮件和站内信就发送失败了。而你打断点时一切都正常是因为你的断点给了程序充足的时间提交事务,所以在执行事件时因为数据都能拿到,所以一切都正常。
解决:
问题原因排查到了,就好解决,有两种解决方法:
- 不使用事务
- 不使用异步事件,改为同步操作
那么,你们猜猜,upupor是使用了哪种解决方案呢?