traPtitech / traQ

traQ - traP Internal Messenger Application Backend
MIT License
425 stars 29 forks source link

同じものを参照してるつもりなのにタイムスタンプがずれる #103

Closed azonti closed 6 years ago

azonti commented 6 years ago

https://circleci.com/gh/traPtitech/traQ/240?utm_campaign=vcs-integration-link&utm_medium=referral&utm_source=github-build-link このテストなんで失敗するのか分かりません

wtks commented 6 years ago

97 からタイムスタンプはDBには秒未満を記録しないようになったので、時間の比較は秒未満を省いてください

azonti commented 6 years ago

ありがとうございます ついでなんですけど全く同じレコードを参照してるつもりなんですけどずれることってあるんですかね

wtks commented 6 years ago

xormでDBの同じレコードを取り出した場合、メモリのアドレス的な意味での参照だと異なる(別の構造体になる)から、それらに異なる操作を同時にすればずれることはある。 今回は、mustMakeMessageで作った(DBに挿入した)構造体にはGo側で作成日時を生成したから秒未満もtime.Timeに含まれてたけど、そのタイムスタンプの秒以上しかDBに記録しなかったから、GetUnreadで取り出したレコードの構造体には秒未満が含まれてなかった。

azonti commented 6 years ago

完全に理解しました ありがとうございました