OpenCMS の安定性に問題があります。スレッド ダンプを実行すると、多くのスレッド (400) がsynchronized (m_processingFiles)
次のコードのブロックで待機しています。
public class CmsJspLoader ... {
...
private static Set m_processingFiles = Collections.synchronizedSet(new HashSet());
...
...
...
public String updateJsp(...) {
....
while (m_processingFiles.contains(jspVfsName)) {
// wait a little bit until the first thread finishes
try {
synchronized (m_processingFiles) {
m_processingFiles.wait(100);
}
} catch (InterruptedException e) {
// ignore
}
}
...
}
...
}
コードは OpenCMS の一部です。notify()
コードのどこにもありません。表示されたブロック内では、状態の変化や共有変数の読み取りはありません。sync
ただし、400 のスレッドが待機しています。つまり、これを通過するだけでsync
、最後のスレッドは 40 秒待機する必要があります!!!
私は単にその目的を理解していません。私が見ていないものはありますか?