08:26:07
icon

浅煎りのコーヒーがおいしくはいったので :saba:

b9b0313c7 (upstream/master) Revert "Remove conversation URI (#11423)" (#11424)
75f7f9930 Remove conversation URI (#11423)
cfb2ed782 Add autosuggestions for hashtags (#11422)
15de24a42 Bump json-ld-preloaded from 3.0.2 to 3.0.3 (#11316)
0d80f686d Add `tootctl preview_cards remove` (#11320)
9349f1067 Fix animate on hover in poll options without CW (#11404)
6a1f08d29 Prevent archiving when user set "noindex" (#11421)
10e78ecf5 Change contrast of status links that are not mentions nor hashtags (#11406)
f371b3213 Change hashtags to preserve first-used casing (#11416)

11423なんじゃろと思ったら11424でrevertされてたね

08:28:34
icon

ほむー

https://github.com/tootsuite/mastodon/pull/11423#issue-301815770

> It (conversation URI) is not part of ActivityPub and will free up a lot of space

https://github.com/tootsuite/mastodon/pull/11424#issuecomment-515775223

> ThibG pointed out that this hacked-on non-standard attribute is the only way to make conversation mutes work beyond unavailable replies (blocked servers, private off-server posts) and out-of-order arrival of replies.

Web site image
Remove conversation URI by Gargron · Pull Request #11423 · mastodon/mastodon
Web site image
Revert "Remove conversation URI" by Gargron · Pull Request #11424 · mastodon/mastodon
08:41:17
icon

Masterに追随できませんすたー。ひゃー。

Migrating to AddCaseInsensitiveIndexToTags (20190726175042)
== 20190726175042 AddCaseInsensitiveIndexToTags: migrating ====================
-- execute("CREATE UNIQUE INDEX CONCURRENTLY index_tags_on_name_lower ON tags (lower(name))")
rake aborted!
StandardError: An error has occurred, all later migrations canceled:

PG::UniqueViolation: ERROR: could not create unique index "index_tags_on_name_lower"
DETAIL: Key (lower(name::text))=(ドット絵) is duplicated.
: CREATE UNIQUE INDEX CONCURRENTLY index_tags_on_name_lower ON tags (lower(name))

08:46:30
icon

どうすればいいのだー

$ heroku pg:psql -a zundan-mastodon
SELECT * FROM tags WHERE name='ドット絵';
id | name | created_at | updated_at
-------+----------+----------------------------+----------------------------
6861 | ドット絵 | 2017-12-08 00:19:35.793832 | 2017-12-08 00:19:35.793832
33453 | ドット絵 | 2018-12-21 23:16:44.551211 | 2018-12-21 23:16:44.551211
(2 rows)

08:58:31
icon

2つのテーブルから別々のIDで参照されてるんだねぇ

> \d tags
:
Referenced by:
TABLE "account_tag_stats" CONSTRAINT "fk_rails_1fa34bab2d" FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE
TABLE "featured_tags" CONSTRAINT "fk_rails_23a9055c7c" FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE
TABLE "statuses_tags" CONSTRAINT "fk_rails_623fc2c83d" FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE
> SELECT id, tag_id FROM account_tag_stats where tag_id=6861 OR tag_id=33453;
id | tag_id
-----+--------
910 | 33453
(1 row)

> SELECT id, tag_id FROM featured_tags where tag_id=6861 OR tag_id=33453;
id | tag_id
----+--------
(0 rows)

> SELECT * FROM statuses_tags where tag_id=6861 OR tag_id=33453;
status_id | tag_id
--------------------+--------
99133468401332852 | 6861
:
102412648813550940 | 6861
(27 rows)

09:05:04
icon

うりゃ。

> UPDATE account_tag_stats SET tag_id=6861 WHERE id=910;
UPDATE 1

あ、できた。

> DELETE FROM tags WHERE id=33453;

お、できた。

もう一度プロモーションしてみるよ!

09:07:16
icon

$ heroku pipelines:promote
$ heroku releases:output
D, [2019-07-28T19:06:20.321073 #53] DEBUG -- : [httplog] Connecting: checkin.scoutapp.com:443
Migrating to AddCaseInsensitiveIndexToTags (20190726175042)
== 20190726175042 AddCaseInsensitiveIndexToTags: migrating ====================
-- execute("CREATE UNIQUE INDEX CONCURRENTLY index_tags_on_name_lower ON tags (lower(name))")
rake aborted!
StandardError: An error has occurred, all later migrations canceled:

PG::DuplicateTable: ERROR: relation "index_tags_on_name_lower" already exists
: CREATE UNIQUE INDEX CONCURRENTLY index_tags_on_name_lower ON tags (lower(name))
:

09:11:39
icon

もうひといきだね

> DROP INDEX CONCURRENTLY index_tags_on_name_lower;
DROP INDEX

PG::UniqueViolation: ERROR: could not create unique index "index_tags_on_name_lower"
DETAIL: Key (lower(name::text))=(銀河丼だじゃれ部) is duplicated.

ぐぬぬーw

09:19:43
icon

下記を重複がなくなるまで繰り返します

> SELECT * FROM tags WHERE name='銀河丼だじゃれ部';
id | name | created_at | updated_at
-------+------------------+----------------------------+----------------------------
18530 | 銀河丼だじゃれ部 | 2018-06-16 09:12:14.542953 | 2018-06-16 09:12:14.542953
33692 | 銀河丼だじゃれ部 | 2018-12-26 06:48:49.434151 | 2018-12-26 06:48:49.434151
(2 rows)
> SELECT id, tag_id FROM featured_tags where tag_id=18530 OR tag_id=33692;
> SELECT id, tag_id FROM featured_tags where tag_id=18530 OR tag_id=33692;
> SELECT * FROM statuses_tags where tag_id=18530 OR tag_id=33692;
status_id | tag_id
--------------------+--------
100213740961971202 | 18530
:
101328952130952564 | 33692
:
(18530の方が多い)
> UPDATE statuses_tags SET tag_id=18530 WHERE tag_id=33692;
> DELETE FROM tags WHERE id=33692;
> DROP INDEX CONCURRENTLY index_tags_on_name_lower;
> CREATE UNIQUE INDEX CONCURRENTLY index_tags_on_name_lower ON tags (lower(name));

09:28:44
icon

なか卯、ニコニコ動画タイムライン、

まだまだあるなあ

09:34:17
icon

:saba: は自動化を決意した

> SELECT COUNT(1), name FROM tags GROUP BY name HAVING COUNT(1) > 1;
:
(46 rows)

10:12:05
icon

Radikoのタイムフリー、再生の可否をブラウザのローカル時刻で決めているようだ。ほほえましいw

11:20:38
icon

プロダクション環境をローカルに起動するのに久しぶりにdocker用マシンを起動しましたよ

Welcome to Ubuntu 18.04.2 LTS (GNU/Linux 4.15.0-50-generic x86_64)
:
196 packages can be updated.
102 updates are security updates.

むふー

11:23:37
icon

unattended-upgradesが走っててupgradeさせてくれませーん

$ sudo apt upgrade -y
:
E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?

11:30:51
icon

待ってる間にnokogiriさんたち入れておこう

12:39:13
icon

ActiveRecord::RecordNotUnique: PG::UniqueViolation: ERROR: duplicate key value violates unique constraint "index_account_tag_stats_on_tag_id"
DETAIL: Key (tag_id)=(27844) already exists.
: UPDATE account_tag_stats SET tag_id=27844 WHERE tag_id=36790;

SQLを分ければいいっちゅう問題じゃなかったかあ

https://gist.github.com/zunda/91f848982e2090911a949957fe3e3596

13:55:10
icon

ぎゃあ。

https://github.com/zunda/mastodon/blob/zunda-ninja-master-on-heroku/lib/tasks/remove-dup-t を実行したところ、

2019-07-28T23:21:23.636717+00:00 app web.1 - - 46 TID-oso8vnf9m WARN: NoMethodError: undefined method `suspended?' for #<Account:0x00007f3eb097b210>

のようなエラーが出るようになりました。

とりあえずデータベースをロールバックして

$ heroku addons:create heroku-postgresql:standard-0 --rollback DATABASE_URL --to '2019-07-28 23:21:23+00:00'

復旧。

Web site image
mastodon/lib/tasks/remove-dup-tags.rake at zunda-ninja-master-on-heroku · zunda/mastodon
13:55:19
icon

何が起きたのかな…

13:56:10
icon

$ export HEROKU_APP=zundan-mastodon
$ export DATABASE_URL=`heroku config:get DATABASE_URL`
$ export OTP_SECRET=`heroku config:get OTP_SECRET`
$ export SECRET_KEY_BASE=`heroku config:get SECRET_KEY_BASE`
$ export RAILS_ENV=production
$ bundle install --with production
$ bundle exec rake db:remove_dup_tags
$ heroku pg:psql
> CREATE UNIQUE INDEX CONCURRENTLY index_tags_on_name ON tags (name);
> DROP INDEX index_tags_on_name_lower;
$ heroku pipelines:promote -a zundan-mastodon-staging

ここまではうまくいってたのにな。

13:58:00
icon

リモートサーバの皆様お騒がせいたしました。データベースをロールバックしたのでこちらが矛盾した状態になってる可能性が高いです(´・ω・`)

15:48:06
icon

絶滅危惧種のカエルの卵をいただきました。けっこうおいしいもんだねえw

Attach image
16:38:28
icon

@mayaeh ありがとうございます。ぜひぜひお願いします!こちらで理解してからIssueを書こうとも思ったのですが、時間がかかりそうな気配です。

16:45:35
icon

> SELECT name FROM tags GROUP BY name HAVING COUNT(1) > 1;
name
------
(0 rows)

あ、あれ?重複が消えとる…

16:48:26
icon

なんだったんだ…

16:49:06
icon

迂闊なマイグレーションが成功してしまった…

Migrating to AddCaseInsensitiveIndexToTags (20190726175042)
== 20190726175042 AddCaseInsensitiveIndexToTags: migrating ====================
-- execute("CREATE UNIQUE INDEX CONCURRENTLY index_tags_on_name_lower ON tags (lower(name))")
-> 0.7533s
-- remove_index(:tags, {:name=>"index_tags_on_name"})
-> 0.0047s
-- remove_index(:tags, {:name=>"hashtag_search_index"})
-> 0.0052s
== 20190726175042 AddCaseInsensitiveIndexToTags: migrated (0.7641s) ===========

16:50:11
icon

なにもしてないのになおった←

16:51:54
icon

おやくにたてな鯖缶(と思ったら絵文字をタイプしようとした瞬間にしょんぼりぞうさんになることが判明)←

16:58:41
icon

あー。直す時にプロモート元間違ってた疑惑

16:58:44
icon

しぬなー!!

16:59:40
icon

あいうえあー

16:59:50
icon

デプロイはできたな?

17:01:04
icon

しょんぼりぞうさんに変化はないな。コロンをタイプしてアルファベットをタイプした瞬間にしょんぼりする。

17:01:50
icon

ちがうなアルファベット2文字目か。

17:01:55
icon

どこがこわれてるのやらー

17:07:35
icon

$ tootctl cache clear
ではなおりませんでした(さっきはtootcrlさえなかったからやっぱり古いコードになっちゃっててんね)

17:07:45
icon

かなしみつつおっさんぽに行こうかな

17:09:31
icon

とりあえず間違えちゃったプロモート元の古いアプリを消しておきましたよ

17:25:00
icon

どうしようかな。

重複がなくなっちゃったのは重複をなくすrakeタスクがうまく走ったからかもしれない(そういえば完走してた気がする)。その時点でキャッシュクリアが必要だったんだけど、わちゃわちゃしてるうちに古いコードをデプロイしちゃってtootctlが失われた。データベースの内容をエラーの出始めた時点に戻したことでエラーが解消したように見えたのは偶然だったのかもしれない。

しょんぼりぞうさんの原因は見つけて直したい。Reactから呼んでるエンドポイントが期待されないレスポンスをしてるんだろうからブラウザから見てみるのが最初のステップかな?きっと重複をなくす作業で参照先を失ったモノがあるのだろう。

17:25:29
icon

@mayaeh あーありがとうございます!別件かぁ!

17:25:32
2019-07-28 17:24:31 Maya Minatsuki :neko_smiley:の投稿 mayaeh@taruntarun.net
icon

このアカウントは、notestockで公開設定になっていません。

17:26:42
icon

自分がポンコツだと再認識したためポンコツはすべて自分に起因すると仮定してしまうポンコツ←

17:27:34
icon

あとdiscord入らないとね

17:28:20
icon

お酒を飲んでもマンツーマンの相手がいないみなさん←

17:29:09
icon

ツーの両辺が両方ともマンなんですけれども

17:33:22
icon

とりあえず重複を消す前のデータを保全しときたいよね

17:46:58
icon

通電でM菱D機さんの工場を思い出してしまうので前職業病

17:47:54
icon

入構するのは面倒わよ

18:13:09
icon

おっさんなのでbzip2を思い浮かべてしまう。Bad Communication(それはB'z)

18:18:51
icon

@mayaeh これまでの歴史で同じnameのタグのレコードが複数作られちゃう場面があった感じですかねー

18:22:05
2019-07-28 18:17:31 まちカドおるみん御嬢様の投稿 orumin@mstdn.maud.io
icon

ところで vmlinux や vmlinuz の vm は Virtual Memory ですね。Unix は元々 /unix として kernel を置きがちだったが例えば最初期の Unix ですら hard disk(PDP-11 の RK series)対応だと rkunix って名前で / に置いたり,モジュラスでなかったのでコンフィグで名前変えて / に置いてた。で,後々 3BSD で VAX の 仮想記憶に対応して kernel も vmunix というファイル名になったのでした。

18:22:09
icon

へえええ

18:26:45
icon

【ポンコツ】散々迷ったあげくばんごはんはシリアルとビールになりました【速報】

19:09:08
icon

2019-07-28 22:00 UTCのデータをロールバックに展開中。

19:37:41
icon

というわけで重複を消すまえのtagsテーブルの重複の内容(なんかカラム幅が変でもーしわけない)

https://gist.github.com/zunda/45330d4cf860deae275a8474aedf1ccc

Web site image
Duplicate tags for mastodon.zunda.ninja as of 2019-07-28 22:00 UTC
19:48:23
icon

Heroku Postgresは消去、バックアップはzundon-db-20190728-2200.b550.dumpとして家のサーバに保管した。

19:52:07
icon

復旧後しばらくたった状態のものもzundon-db-20190729-0514.b549.dumpとして保管した。ケチなのでこれまでお世話になっていたHeorku Postgresも消去しますよ(どきどき)

19:54:39
icon

ステージングアプリの名前もわかりやすいものに変えておきますね

19:57:01
icon

ほい。これで今回の騒動への対応はとりあえず完了とします。マイグレーション、改良されるといいな。

19:57:09
icon

ビールも空いちゃったし←

20:01:02
icon

やれやれ

20:17:57
icon

今日はポンコツ活動で疲弊しましたので夜だけどコーヒーいただきますね。ぷっはー。

20:18:33
icon

今後はデータベースを直接触るときはコピーした環境で試してみてからにしましょうね←

20:25:12
icon

特許広ウホ

20:27:50
icon

お騒がせしておりますお騒がせしております。人間の遅延によるタイムラインの乱れを観測しております。お騒がせしております。

20:31:32
icon

雑に煎れたはずのコーヒーが意外においしかったんだけど、なーんも測定してないので再現不可能。しょぼーん。

20:32:00
icon

測定しとけば再現可能なわけではないのだけどw

20:33:46
icon

シロクマ…対決列島…

20:42:03
icon

おちる時は落ちるんだよねえ…(すみませんでした(´・ω・`)

21:06:49
icon

下町ロケット2の最終回をみようとときどき日本語チャンネルをつけたらぽっちゃりママがダイエットしてて

21:10:55
icon

俺、今度日本に帰れたら、つけ麺をおいしく食べられるおっさんになるんだ…

21:19:42
icon

キッコーマンのマンって

23:55:20
2019-07-28 23:22:50 銀猫さんの投稿 silverscat_3@social.xeltica.work
icon

このアカウントは、notestockで公開設定になっていません。

23:55:31
icon

goだー

23:56:50
2019-07-28 23:50:47 nagachika✅の投稿 nagachika@pawoo.net
icon

このアカウントは、notestockで公開設定になっていません。