StashのExternal Hooks Pluginで呼び出したスクリプトが原因でマージがタイムアウトする事がある

External Hooks Plugin使ってます

  • IRCとかRedmine連携をするのに既存のプラグインだとちょっとうまく行かなくてShellScript書いてプラグインで起動するようにやってます。
    • 表題のプラグインをStashへインストールすると、以下のように出てきます。
      • リポジトリの設定→フック→ポストレシーブ→External Async Post Receive Hook

でもこれ、Asyncって書いてあるけど、同期的に動いてる気がする・・・

  • Stashを使い込むにつれてマージが遅いとかタイムアウトするとか聞くようになってきた
  • プラグインのソース見てみた。
    • ExternalPreReceiveHook.java
    • やっぱり同期的にやってる。
    • Process process = pb.start();でプロセスを起動して、process.waitFor()で待ってますもん。

対応

  • 最近だいぶヘビーに使い出してきたのでちょくちょくマージがタイムアウトすると言われていたのですが、このプラグインRedmine用のリポジトリにPushして、IRC(ikachan)に流し込んでるのが時間がかかっていた模様。(RedmineIRCはそれぞれ別サーバ)
  • とりあえずスクリプトの中で処理をバックグラウンドで実行するように直したらマージが爆速になったと言われました。

うーん、気が付かなくてすみません。