OpenLiberty / open-liberty-tools

Open Liberty Tools are lightweight tools for developing, assembling, and deploying apps to Open Liberty.
http://openliberty.io
Eclipse Public License 1.0
51 stars 41 forks source link

IDE hangs opening server.xml "Source" tab #494

Open scottkurz opened 8 months ago

scottkurz commented 8 months ago

Recreate Sequence

  1. import a Liberty Maven project (1b. say "Yes" to generating the Liberty runtime via Liberty Maven integration).
  2. open the project's server.xml
  3. click the "Source" editor tab.

Symptom

The source view opens but hangs, it is greyed/whited-out (not sure the terminology exactly), so you can't interact with it

Java dump analysis

I took three javacores. (IBM-only internal link at https://ibm.enterprise.slack.com/files/W4W23E3AM/F06E237P96D/olt494-java-dumps.zip).

Each shows the main thread in condition

3XMTHREADINFO      "main" J9VMThread:0x000000000001E400, omrthread_t:0x00000279F960B090, java/lang/Thread:0x00000000800CA968, state:B, prio=6
3XMJAVALTHREAD            (java/lang/Thread getId:0x1, isDaemon:false)
3XMJAVALTHRCCL            org/eclipse/osgi/internal/framework/ContextFinder(0x0000000080C91560)
3XMTHREADINFO1            (native thread ID:0x51AC, native priority:0x6, native policy:UNKNOWN, vmstate:B, vm thread flags:0x00000281)
3XMCPUTIME               CPU usage total: 7.265625000 secs, user: 5.421875000 secs, system: 1.843750000 secs, current category="Application"
3XMTHREADBLOCK     Blocked on: org/eclipse/core/internal/jobs/DeadlockDetector@0x0000000082680110 Owned by: "Worker-27880" (J9VMThread:0x0000000002FFA000, java/lang/Thread:0x000000008AE333D0)
3XMHEAPALLOC             Heap bytes allocated since last GC cycle=0 (0x0)
3XMTHREADINFO3           Java callstack:
4XESTACKTRACE                at org/eclipse/core/internal/jobs/LockManager.addLockWaitThread(LockManager.java:141)
4XESTACKTRACE                at org/eclipse/core/internal/jobs/OrderedLock.doAcquire(OrderedLock.java:189)
4XESTACKTRACE                at org/eclipse/core/internal/jobs/OrderedLock.acquire(OrderedLock.java:125)
4XESTACKTRACE                at org/eclipse/core/internal/jobs/OrderedLock.acquire(OrderedLock.java:100(Compiled Code))
4XESTACKTRACE                at org/eclipse/core/internal/jobs/OrderedLock.acquire(OrderedLock.java:87(Compiled Code))
4XESTACKTRACE                at org/eclipse/wst/sse/core/internal/model/ModelManagerImpl.getExistingModelForRead(ModelManagerImpl.java:1264)
4XESTACKTRACE                at org/eclipse/wst/xml/ui/internal/autoedit/StructuredAutoEditStrategyXML.customizeDocumentCommand(StructuredAutoEditStrategyXML.java:49)
4XESTACKTRACE                at org/eclipse/jface/text/TextViewer.customizeDocumentCommand(TextViewer.java:3709)

waiting for this lock:

org/eclipse/core/internal/jobs/DeadlockDetector@0x0000000082680110

along with a bunch of other threads waiting for the same lock.

In each of the Java dumps a different thread had gotten the lock and each time the thread owning the lock was doing a Resource/Path comparison like this:


3XMTHREADINFO      "Worker-27880" J9VMThread:0x0000000002FFA000, omrthread_t:0x00000279AAA5A3A0, java/lang/Thread:0x000000008AE333D0, state:R, prio=5
3XMJAVALTHREAD            (java/lang/Thread getId:0x6D5F, isDaemon:false)
3XMJAVALTHRCCL            org/eclipse/osgi/internal/framework/ContextFinder(0x0000000080C91560)
3XMTHREADINFO1            (native thread ID:0x5FA0, native priority:0x5, native policy:UNKNOWN, vmstate:CW, vm thread flags:0x00000081)
3XMCPUTIME               CPU usage total: 0.921875000 secs, user: 0.828125000 secs, system: 0.093750000 secs, current category="Application"
3XMHEAPALLOC             Heap bytes allocated since last GC cycle=1013440 (0xF76C0)
3XMTHREADINFO3           Java callstack:
4XESTACKTRACE                at org/eclipse/core/runtime/Path.equals(Path.java:673(Compiled Code))
4XESTACKTRACE                at org/eclipse/core/internal/resources/Resource.equals(Resource.java:985(Compiled Code))
4XESTACKTRACE                at java/util/ArrayList.indexOfRange(ArrayList.java:299(Compiled Code))
4XESTACKTRACE                at java/util/ArrayList.indexOf(ArrayList.java:286(Compiled Code))
4XESTACKTRACE                at java/util/ArrayList.contains(ArrayList.java:275(Compiled Code))
4XESTACKTRACE                at org/eclipse/core/internal/jobs/DeadlockDetector.lockAcquired(DeadlockDetector.java:317(Compiled Code))
4XESTACKTRACE                at org/eclipse/core/internal/jobs/LockManager.addLockThread(LockManager.java:122(Compiled Code))
5XESTACKTRACE                   (entered lock: org/eclipse/core/internal/jobs/DeadlockDetector@0x0000000082680110, entry count: 1)
4XESTACKTRACE                at org/eclipse/core/internal/jobs/WorkerPool.startJob(WorkerPool.java:265(Compiled Code))
4XESTACKTRACE                at org/eclipse/core/internal/jobs/Worker.run(Worker.java:58(Compiled Code))

Environment