Mastodon 中文全文搜索失效 debug 日记及修复方法

我的长毛象实例最近全文搜索失效,debug 了一下失效原因。简而言之,elasticsearch 自动更新了,所以之前装的中文全文搜索 plugin 本来是给 6.8.12 built 的,现在 6.8.14 运行不了,elastisearch 就卡死了。

解决方法:

1. 在根目录下运行
/usr/share/elasticsearch/bin/elasticsearch-plugin remove analysis-ik
/usr/share/elasticsearch/bin/elasticsearch-plugin remove analysis-stconvert
来卸载旧版本 plugin。

2. 运行如下两个命令下载为新版本编译的两个中文 plugin。
/usr/share/elasticsearch/bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/
download/v6.8.14/elasticsearch-analysis-stconvert-6.8.14.zip

/usr/share/elasticsearch/bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-stconvert/releases/download/v6.8.14/elasticsearch-analysis-stconvert-6.8.14.zip

3. restart elasticsearch,运行 sudo systemctl restart elasticsearch.

以下是 debug 过程,不想深入研究的可以不看。

  1. 今天早上本站用户说搜索坏了,搜不到嘟文只能搜到用户名和 tag,我当时在手机上以为是之前搜索不全的老问题。
  2. 今天晚上自己测试了一下,确实任何全文搜索都搜不到,打开 sidekiq 发现从四月初开始 failure 暴增,应该是有问题。
  3. failed message Faraday::ConnectionFailed: Failed to open TCP connection to localhost:9200 (Connection refused - connect(2) for "localhost" port 9200) ,Google 此 message 可知是 elasticsearch (后简称 ES)的问题。
  4. Google 如何查看 active ports(没错这玩意儿天天用但是永远记不住,but why bother though),用 sudo netstat -tulpn | grep LISTEN 发现 9200 not active.
  5. Google 如何重启 ES,运行 sudo systemctl restart elasticsearch ,但发现 sidekiq 失败 message 并没有下降。Google 如何查看 ES 状态,运行 sudo systemctl status elasticsearch,发现重启失败,最后一行报错是 JAVA_HOME not set.
  6. export JAVA_HOME=/usr/bin/java ,重启 ES,发现没有解决问题,Google 之后发现有人说可能这并不是错误所在。
  7. Google 如何查看 ES log,运行 less /var/log/elasticsearch/elasticsearch.log ,发现报错 uncaught exception in thread [main]
    org.elasticsearch.bootstrap.StartupException: java.lang.IllegalArgumentException: Plugin [analysis-ik] was built for Elasticsearch version 6.8.12 but version 6.8.14 is running
  8. 在 mastodon doc(https://docs.joinmastodon.org/admin/optional/elasticsearch/ )里找到当初安装的俩中文 index plugin repo,进入 repo 找到安装方法,Google remove elasticsearch plugin 方法卸载旧 plugin,安装 6.8.14 相对应新版本的俩 plugin。
  9. 重启 ES,查了几次 status 发现运行稳定,sidekiq 里 failed retry queue 稳定下降,在 Mastodon 里随便搜了几个中文出现了过去的嘟文,确认问题解决。

如果喜欢本文的话,欢迎在 Patreon 给我打赏顺便解锁一下小 perks(不喜欢月费的话页面最下方可以 make custom pledge 输入自定义金额 (ง •̀_•́)ง)。Patreon 里提供诸如 1:1 聊天/职业咨询和博客选题投票等金主特权,如果想多聊几毛钱欢迎来成为金主:Become a Patron!

Scaleway Object Storage 不稳定和 Mastodon 迁移备份笔记

我的长毛象实例 douchi.space 一直采用 Scaleway 的 Object Storage,因为它们前 75G 免费,对于这种小服务很划算。但是最近一个月连续发生两次故障,因为是免费 tier 所以客服修复的时间也没有保证。本文记述了故障可能的产生原因、debug 过程、修复方法和以后可能采取的 precaution messures。

Continue Reading

豆瓣难民背井离乡,我为 14 位友邻画了像素头像

一切缘起于 2020 年 10 月.

(2020 年 10 月 14 日左右)
1. 豆瓣整改 hashtag 功能,所有 # 发出来自动替换成 * ,友邻 A 发广播说了这个事情
2. 有友邻调侃井号跳槽了,友邻 A 开广播让大家缅怀过去的 tag。友邻 A 是重度 hashtag 使用者,之前有“猜谜学”“最安全”“豆友找工互助”等 tag。其中猜谜学是给大家解释注入为什么“reply”(ply 包夫人缩写)“偏远贫困“(远贫跟包子他哥谐音)“洗完衣服,今早”(洗…今)这种正常内容会被锁的。已经早就炸过了。
3. 友邻 A 被永久封号,大家群情激愤骂豆瓣。
4. 豆瓣官方账号豆嬷嬷发语焉不详的通告并说“豆瓣前行的路上,需要每一位豆友支持“。友邻 B 小号转发”豆瓣倒退的路上,需要每一位豆友反对“。
5. 友邻 B 大号发布其小号被永久封号,群情激愤 + 要告豆瓣。
6. 部分用户(包括我)终于受够了,开始转发大家安利长毛象等替代平台。
因此有了 #背井离乡 这个 tag——一场 # (井号)引发的血案。另外之前离岸爱国粉红“背(一声)井离乡”也是一个梗。

这个是老号了,我事先经过别人安利去了 m.cmx.im,即长毛象中文站,aka 草莓县。但后来被人指出大规模在墙内号召人过来会对站点造成安全隐患(以前已经炸过一次站了)有慷他人之慨之嫌,且总有人指出要“心疼战长钱包”所以少发图,倍感拘束背离了最初背井离乡寻找更自由的互联网空间的初衷,于是自己建了实例,这是后话了。

背景 aside,我在迁移之前还非常慷他人之慨地为了号召豆瓣友邻迁移,而 promise 了跟着我迁移并且给我参考图的,可以得到一个 32px 的像素头像。这个 offer 当然迁移之后也有效,不管友邻们是留在了草莓县还是去了我的新实例豆豉

最后,总计有三十多位友邻有效报名。十月之后我又搞了很多 side project(如博客、Patreon 等),发现工作量超标,于是开始给自己找借口减少工作量。11月底查看的时候半数的人跟风注册了之后也没有再活跃了(其实过半这个活跃比例已经蛮震惊我了),于是缩减为只给当初要了的、还在活跃的象友画。又画了几组之后发现由于水平所限和大家偏好不同,真的会使用象友也只是个别,于是又给自己找了个借口变成还想要的主动来找我 confirm。

于是在进入了圣诞假期的今天,终于一鼓作气把 confirm 了象友们的头像也画完了。

因为大家提供的参考图画风不同(有本身就是二次元的、涂鸦式的,也有照片类型的)和自身水平有限,画出来的成品效果也是参差不齐。不过好歹还是兑现了承诺了的。

之后,就可以毫无心理负担地继续开始其他像素画的项目了!(说的好像我有多勤快似的……


如果喜欢本文的话,欢迎在 Patreon 给我打赏顺便解锁一下小 perks(不喜欢月费的话页面最下方可以 make custom pledge 输入自定义金额 (ง •̀_•́)ง)。Patreon 里提供诸如 1:1 聊天/职业咨询和博客选题投票等金主特权,如果想多聊几毛钱欢迎来成为金主:Become a Patron!