Qithub-BOT / Qithub-ORG

✅ Qithub サークルのメインリポジトリ。運用/ルール/全リポジトリの Issue など取りまとめています。
https://Qithub.tk/
Creative Commons Attribution Share Alike 4.0 International
10 stars 2 forks source link

【バグ】QiiTimeで同一記事を同一時報で複数回tootしている #180

Closed hidao80 closed 5 years ago

hidao80 commented 5 years ago

報告

sasanquaneuf@qiitadon.comさんの下記指摘により、QiiTimeが同一記事を同一時報で複数回tootしていることが判明しています。

sasanquaneufさんのtoot: https://qiitadon.com/@sasanquaneuf/101574339240810960 QiiTimeのエビデンス: https://qiitadon.com/@QiiTime/101574300645667936

推測

自分の案

TL;DR(進捗・結論 yyyy/MM/dd 現在)


KEINOS commented 5 years ago

本 Isse の現象は以前からチョイチョイ出ており、発生する条件として「新規 Qiita 記事の公開直後に編集を繰り返した」場合に発生します。

原因は3つの仕様にあります。

  1. Qiita 記事の公開後すぐに編集を行うと Qiita 側の新着に再掲載されるという Qiita の仕様
  2. QiiTime でなく Qiita-Items の仕様で、記事の投稿時間をベースに判断しているという仕様
  3. Qiita-Items のトゥート済み一覧は1時間おき(n:00)にリセットされるという仕様

上記3つの仕様の組み合わせにより、この現象が発生します。

つまり、Qiita 側の新着では、いったん削除されて再掲載されているのですが、BOT は削除されたかまで検知しておらず、単純に投稿時間が前回と異なるため別記事として判断し、再掲載のトゥートが重複トゥートになるという塩梅です。

回避案

https://github.com/Qithub-BOT/Qithub-ORG/blob/2baeb57438addf1e814206fe04e684656b39a2ff/api/v1/qiita-items/index.php#L87-L95

hidao80 commented 5 years ago

@KEINOS ううむ…説明と状況がかみ合っていない部分があるので確認を取りたいのですが。

例えば syui さんのこの投稿(password-cli)の編集履歴をみると、編集された様子がありません。

にもかかわらず、QiiTimeの同一トゥート時間内

Hint: #cli_qiita で検索するとかかります

と、編集履歴のない同一記事IDのトゥートが重複してトゥートされているように見受けられます。

ここまでで、上記トゥートは @KEINOS さんが原因としている条件のうち、2. しか満たしておらず、組み合わせで現象が発生するという説明とも合致しません。

Qiita-Itemsのソースが読み込めていないので「ここ!」と言いづらいのですが、本件の原因はどこにあると考えられるでしょうか?

KEINOS commented 5 years ago

あらー。確かに!

となると、ファイルの書き込みと読み込みのズレが問題っぽいですね。要 DB 化の挙動臭がします。

現在、中途半端に API 間でスクリプトを共有しているのでトレースするにも煩雑になっています。

サーバーの OS を入れ替えた際にコンテナ化してよりシンプルに実装するので、その時に SQLite3 対応させたいと思います。

hidao80 commented 5 years ago

@KEINOS Qiitadonにアカウントがある方には重複して通知がいくという不具合ですが、Qiita-Itemsの挙動としては致命的な不具合ではないと思われますので、優先度中くらいにしておきます―😊

KEINOS commented 5 years ago

QiiTime のコンテナ化が終了しているので、この issue は一旦 close でいかがでしょうか。 OS 入れ替え & コンテナ稼働化が終了して、再発した場合は、別途コンテナの issue をあげるとして。

問題なければ、お手すきに close お願いし 💪