Eclipse3.6-SR2のパッケージ移動で固まるバグの解決方法

Eclipse3.6-SR2をインストールしてから、リファクタリング機能のパッケージ移動をするときに「ワークスペースの変更を作成しています」の状態で固まってしまう不具合が頻繁に発生していてかなりストレスの元になっていたのですが、ようやく原因がわかりました。

結論から言うとEclipseのWSTに含まれるStructured Source Model プラグインの不具合が原因。

解決編

WST(Web Tools Platform)をEclipse 3.6-SR2 に含まれている ver3.2.3 から ver3.2.4 にアップデートすることで解決できそうです。

  1. WSTダウンロードページからMaintenance Build 3.2.4をクリックしてダウンロードページを表示。
  2. 画面下の方の「Traditional Zip Files」から「wtp」をダウンロードします。
  3. wtp-M-3.2.4-20110420135235.zip」がダウンロードできたら、展開してeclipseディレクトリに上書きして再起動すればOK。
  4. アップデート後のStructured Source Modelプラグインのバージョンは 1.1.505.v201104070043 になっているはずです。

調査編(おまけ)

固まっている状態でJDK付属のVisualVMを立ち上げてEclipseVMの状態を調べたら、TIMED_WAITING のままのスレッドを発見。

止まっている個所が org.eclipse.wst.sse.core.indexing.AbstractIndexManager.waitForConsistent だったので、Eclipseソースコードリポジトリから該当クラスを探してリポジトリの履歴を見ると、以下のようなコメントを発見。

[340003] Refactoring dialog hung at AbstractIndexManager.waitForConsistent

これはSR2リリース後に修正されたバグでした。

それにしても、VisualVM はちょっと使わない間に地道に改良されてかなり使いやすくなってますね。スレッドダンプが一発で取得できたり、スレッドの活動状況をリアルタイムに表示できたり。