「補完候補を検索する」が有効なときskkservのタイムアウトが連続して入力できなくなる
概要
下記の動画のようにskkservのタイムアウトが連続して入力ができなくなるという事象が3回ほど発生しました。
https://github.com/user-attachments/assets/fb383d5e-2780-479f-a503-de8a13d62c56
別のIMEに切り替えてkillall macSKKして再びmacSKKに戻すと、skkservのタイムアウトは生じなくなることから、skkservのサーバー側の問題ではないと考えています。
環境情報
- macOS: 15.7.1
- macSKK: 2.6.0
- azoo-key-skkserv: 0.3.0
この組み合せでSKKServの 👇 補完候補を検索するをONしたところ発生しました。
考察(?)
発生が偶発的であまり原因を特定しきれていませんが、少し気になったのは #407 でskkservへ「補完」の問い合せがはいったことで、それまであったSKKServClient.referとは別に新たにSKKServClient.completionで下記のSKKServClient.connectionに(connectメソッド経由で)アクセスするようになりました。
- https://github.com/mtgto/macSKK/blob/75d4eacab252483048e64f7f0ccedd54fcf23c9d/SKKServClient/SKKServClient.swift#L13-L14
そして、SKKServServiceのrefer/completionの中でセマフォを試してタイムアウトした際にproxy.disconnect()経由でSKKServClient.connectionを初期化しています。
- https://github.com/mtgto/macSKK/blob/75d4eacab252483048e64f7f0ccedd54fcf23c9d/macSKK/SKKServService.swift#L111-L113
もしSKKServService.refer/completionが別スレッドで呼ばれた場合、それぞれがdisconnect経由でSKKServClient.connect初期化するといった競合が発生するような気がしました。個人的にもCtrl + Iでのタブ入力と、スペースによる変換をガチャガチャやっているときに発生している印象があります 🤔
@y-yu 報告ありがとうございます。
azoo-key-skkserv: 0.3.0 この組み合せでSKKServの 👇 補完候補を検索するをONしたところ発生しました。
azoo-key-skkserv v0.3.0リリース版にはまだ補完候補の検索が入っていません。 常に見つからないエラーを返します。
一応私は↓のPull Requestをビルドして使えることを軽くテストしてはいます。 https://github.com/gitusp/azoo-key-skkserv/pull/41
もし
SKKServService.refer/completionが別スレッドで呼ばれた場合、それぞれがdisconnect経由でSKKServClient.connect初期化するといった競合が発生するような気がしました。個人的にもCtrl + Iでのタブ入力と、スペースによる変換をガチャガチャやっているときに発生している印象があります 🤔
コードをしっかり読まないといけないですが、可能性はありそうですね。
azoo-key-skkserv v0.3.0リリース版にはまだ補完候補の検索が入っていません。 常に見つからないエラーを返します。
ありがとうございます!そういうことでしたか。 とりあえずazoo-key-skkservの次バージョンがリリースされるまでのあいだ、いったん補完候補の検索をオフにしておこうと思います 🙆♀️