Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TargetLocationHandlerAdapter hangs UI on slow P2 repositories #1160

Open
basilevs opened this issue Feb 16, 2024 · 0 comments
Open

TargetLocationHandlerAdapter hangs UI on slow P2 repositories #1160

basilevs opened this issue Feb 16, 2024 · 0 comments

Comments

@basilevs
Copy link
Contributor

basilevs commented Feb 16, 2024

Environment:
Eclipse IDE for Eclipse Committers (includes Incubating components)
Version: 2024-03 (4.31.0)
Build id: 20240307-1437
MacOS 12

Test steps

Open a slow target definition
Ensure resolving starts
Hit Reload button

Actual result

Indefinite UI freeze

"main" #1 prio=6 os_prio=31 cpu=159343.47ms elapsed=11756.76s tid=0x000000012c03aa00 nid=0x103 in Object.wait()  [0x000000016fccc000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(java.base@17.0.4.1/Native Method)
	- waiting on <no object reference available>
	at java.lang.Object.wait(java.base@17.0.4.1/Object.java:338)
	at org.eclipse.equinox.internal.p2.engine.ProfileLock.lock(ProfileLock.java:97)
	- locked <0x00000007822a30d0> (a org.eclipse.oomph.p2.internal.core.LazyProfileRegistry)
	at org.eclipse.equinox.internal.p2.engine.SimpleProfileRegistry.internalLockProfile(SimpleProfileRegistry.java:896)
	at org.eclipse.equinox.internal.p2.engine.SimpleProfileRegistry.removeProfile(SimpleProfileRegistry.java:466)
	- locked <0x00000007822a30d0> (a org.eclipse.oomph.p2.internal.core.LazyProfileRegistry)
	at org.eclipse.pde.internal.core.target.P2TargetUtils.deleteProfileWithId(P2TargetUtils.java:276)
	at org.eclipse.pde.internal.core.target.P2TargetUtils.deleteProfile(P2TargetUtils.java:267)
	at org.eclipse.pde.internal.ui.shared.target.IUFactory.reload(IUFactory.java:162)
	at org.eclipse.pde.internal.ui.shared.target.TargetLocationHandlerAdapter.reload(TargetLocationHandlerAdapter.java:113)
	at org.eclipse.pde.internal.ui.shared.target.TargetLocationsGroup.handleReload(TargetLocationsGroup.java:554)
	at org.eclipse.pde.internal.ui.shared.target.TargetLocationsGroup.lambda$6(TargetLocationsGroup.java:356)
	at org.eclipse.pde.internal.ui.shared.target.TargetLocationsGroup$$Lambda$891/0x0000000801470a38.accept(Unknown Source)
	at org.eclipse.swt.events.SelectionListener$1.widgetSelected(SelectionListener.java:84)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:252)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
	at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4577)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1524)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1547)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1532)
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1325)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4363)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3939)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1155)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1046)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155)
	at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:643)
	at org.eclipse.ui.internal.Workbench$$Lambda$184/0x0000000800e1f120.run(Unknown Source)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:550)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:171)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:136)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:402)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(java.base@17.0.4.1/Native Method)
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(java.base@17.0.4.1/NativeMethodAccessorImpl.java:77)
	at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(java.base@17.0.4.1/DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(java.base@17.0.4.1/Method.java:568)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:659)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:596)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1467)

"process reaper" #33 daemon prio=10 os_prio=31 cpu=0.35ms elapsed=11752.29s tid=0x000000012956d800 nid=0x29e03 runnable  [0x0000000176206000]
   java.lang.Thread.State: RUNNABLE
	at java.lang.ProcessHandleImpl.waitForProcessExit0(java.base@17.0.4.1/Native Method)
	at java.lang.ProcessHandleImpl$1.run(java.base@17.0.4.1/ProcessHandleImpl.java:147)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@17.0.4.1/ThreadPoolExecutor.java:1136)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@17.0.4.1/ThreadPoolExecutor.java:635)
	at java.lang.Thread.run(java.base@17.0.4.1/Thread.java:833)

"LS-org.eclipse.wildwebdeveloper.xml-launcher-0" #45 prio=5 os_prio=31 cpu=187.71ms elapsed=11751.31s tid=0x000000012aa2de00 nid=0x15f03 runnable  [0x0000000177266000]
   java.lang.Thread.State: RUNNABLE
	at java.io.FileInputStream.readBytes(java.base@17.0.4.1/Native Method)
	at java.io.FileInputStream.read(java.base@17.0.4.1/FileInputStream.java:276)
	at java.io.BufferedInputStream.fill(java.base@17.0.4.1/BufferedInputStream.java:244)
	at java.io.BufferedInputStream.read(java.base@17.0.4.1/BufferedInputStream.java:263)
	- locked <0x0000000784002488> (a java.lang.ProcessImpl$ProcessPipeInputStream)
	at org.eclipse.lsp4j.jsonrpc.json.StreamMessageProducer.listen(StreamMessageProducer.java:79)
	at org.eclipse.lsp4j.jsonrpc.json.ConcurrentMessageProcessor.run(ConcurrentMessageProcessor.java:113)
	at java.util.concurrent.Executors$RunnableAdapter.call(java.base@17.0.4.1/Executors.java:539)
	at java.util.concurrent.FutureTask.run(java.base@17.0.4.1/FutureTask.java:264)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@17.0.4.1/ThreadPoolExecutor.java:1136)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@17.0.4.1/ThreadPoolExecutor.java:635)
	at java.lang.Thread.run(java.base@17.0.4.1/Thread.java:833)

"Q7 Indexer" #66 daemon prio=4 os_prio=31 cpu=10.96ms elapsed=11750.44s tid=0x0000000129bd2e00 nid=0x17503 in Object.wait()  [0x000000028fe46000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(java.base@17.0.4.1/Native Method)
	- waiting on <no object reference available>
	at java.lang.Object.wait(java.base@17.0.4.1/Object.java:338)
	at org.eclipse.rcptt.internal.core.jobs.JobManager.run(JobManager.java:406)
	- locked <0x00000007840c1f10> (a org.eclipse.rcptt.internal.core.model.index.IndexManager)
	at java.lang.Thread.run(java.base@17.0.4.1/Thread.java:833)

"Worker-238: File Transport Cancel Handler" #3916 prio=5 os_prio=31 cpu=26360.67ms elapsed=8143.22s tid=0x00000002a6086a00 nid=0x2391f waiting on condition  [0x000000028d4ca000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
	at java.lang.Thread.sleep(java.base@17.0.4.1/Native Method)
	at org.eclipse.equinox.internal.p2.transport.ecf.FileReader$CancelHandler.run(FileReader.java:160)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)

"Worker-260: Resolving "itest-eclipse-4.29" target definition" #5067 prio=5 os_prio=31 cpu=5050.65ms elapsed=2078.20s tid=0x00000002fd63a200 nid=0x1f01f in Object.wait()  [0x000000029c154000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
	at java.lang.Object.wait(java.base@17.0.4.1/Native Method)
	- waiting on <no object reference available>
	at org.eclipse.core.internal.jobs.Semaphore.acquire(Semaphore.java:45)
	- locked <0x00000007f2f9a160> (a org.eclipse.core.internal.jobs.Semaphore)
	at org.eclipse.core.internal.jobs.JobManager.join(JobManager.java:931)
	at org.eclipse.core.internal.jobs.InternalJob.join(InternalJob.java:344)
	at org.eclipse.core.runtime.jobs.Job.join(Job.java:531)
	at org.eclipse.equinox.internal.p2.transport.ecf.FileInfoReader.waitOnSelf(FileInfoReader.java:74)
	at org.eclipse.equinox.internal.p2.transport.ecf.FileInfoReader.getRemoteFiles(FileInfoReader.java:110)
	at org.eclipse.equinox.internal.p2.transport.ecf.FileInfoReader.getRemoteFile(FileInfoReader.java:125)
	at org.eclipse.equinox.internal.p2.transport.ecf.FileInfoReader.getLastModified(FileInfoReader.java:130)
	at org.eclipse.equinox.internal.p2.transport.ecf.RepositoryTransport.getLastModified(RepositoryTransport.java:244)
	at org.eclipse.equinox.internal.p2.repository.CacheManager.getLastModified(CacheManager.java:289)
	at org.eclipse.equinox.internal.p2.repository.CacheManager.createCache(CacheManager.java:197)
	at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepositoryFactory.getLocalFile(SimpleArtifactRepositoryFactory.java:68)
	at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepositoryFactory.load(SimpleArtifactRepositoryFactory.java:92)
	at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepositoryFactory.load(SimpleArtifactRepositoryFactory.java:80)
	at org.eclipse.equinox.internal.p2.artifact.repository.ArtifactRepositoryManager.factoryLoad(ArtifactRepositoryManager.java:92)
	at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:787)
	at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:685)
	at org.eclipse.equinox.internal.p2.artifact.repository.ArtifactRepositoryManager.loadRepository(ArtifactRepositoryManager.java:131)
	at org.eclipse.equinox.internal.p2.artifact.repository.ArtifactRepositoryManager.loadRepository(ArtifactRepositoryManager.java:125)
	at org.eclipse.equinox.internal.p2.artifact.repository.CompositeArtifactRepository.load(CompositeArtifactRepository.java:496)
	at org.eclipse.equinox.internal.p2.artifact.repository.CompositeArtifactRepository.addChild(CompositeArtifactRepository.java:177)
	at org.eclipse.equinox.internal.p2.artifact.repository.CompositeArtifactRepository.<init>(CompositeArtifactRepository.java:99)
	at org.eclipse.equinox.internal.p2.artifact.repository.CompositeArtifactRepositoryFactory.load(CompositeArtifactRepositoryFactory.java:120)
	at org.eclipse.equinox.internal.p2.artifact.repository.ArtifactRepositoryManager.factoryLoad(ArtifactRepositoryManager.java:92)
	at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:787)
	at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:685)
	at org.eclipse.equinox.internal.p2.artifact.repository.ArtifactRepositoryManager.loadRepository(ArtifactRepositoryManager.java:131)
	at org.eclipse.equinox.internal.p2.artifact.repository.ArtifactRepositoryManager.loadRepository(ArtifactRepositoryManager.java:125)
	at org.eclipse.equinox.p2.engine.ProvisioningContext.getLoadedRepository(ProvisioningContext.java:189)
	at org.eclipse.equinox.p2.engine.ProvisioningContext.getLoadedArtifactRepositories(ProvisioningContext.java:163)
	at org.eclipse.equinox.p2.engine.ProvisioningContext.getArtifactRepositories(ProvisioningContext.java:149)
	at org.eclipse.equinox.internal.p2.engine.DownloadManager.getArtifactRepositories(DownloadManager.java:110)
	at org.eclipse.equinox.internal.p2.engine.DownloadManager.start(DownloadManager.java:95)
	at org.eclipse.equinox.internal.p2.engine.phases.Collect.completePhase(Collect.java:111)
	at org.eclipse.equinox.internal.p2.engine.Phase.postPerform(Phase.java:254)
	at org.eclipse.equinox.internal.p2.engine.Phase.perform(Phase.java:105)
	at org.eclipse.equinox.internal.p2.engine.PhaseSet.perform(PhaseSet.java:50)
	at org.eclipse.equinox.internal.p2.engine.Engine.perform(Engine.java:80)
	at org.eclipse.equinox.internal.p2.engine.Engine.perform(Engine.java:48)
	at org.eclipse.pde.internal.core.target.P2TargetUtils.resolveWithPlanner(P2TargetUtils.java:1042)
	at org.eclipse.pde.internal.core.target.P2TargetUtils.synchronize(P2TargetUtils.java:828)
	- locked <0x00000007a7547cf0> (a org.eclipse.pde.internal.core.target.P2TargetUtils)
	at org.eclipse.pde.internal.core.target.TargetDefinition.resolve(TargetDefinition.java:403)
	at org.eclipse.pde.internal.ui.editor.targetdefinition.TargetEditor$TargetChangedListener$1.run(TargetEditor.java:606)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)

"Worker-263: Loading the repository {0}" #5101 prio=5 os_prio=31 cpu=731.20ms elapsed=1784.29s tid=0x00000002fedee800 nid=0x245a7 in Object.wait()  [0x000000028d752000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
	at java.lang.Object.wait(java.base@17.0.4.1/Native Method)
	- waiting on <no object reference available>
	at org.eclipse.equinox.internal.p2.transport.ecf.FileInfoReader.run(FileInfoReader.java:52)
	- locked <0x00000007f2f98d28> (a [Ljava.lang.Boolean;)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)

"Worker-267: https://example.com/sample/artifacts.jar" #5110 prio=5 os_prio=31 cpu=1076.53ms elapsed=206.93s tid=0x000000016a71dc00 nid=0x240db sleeping [0x00000002a4a04000]
   java.lang.Thread.State: RUNNABLE
	at sun.nio.ch.Net.poll(java.base@17.0.4.1/Native Method)
	at sun.nio.ch.NioSocketImpl.park(java.base@17.0.4.1/NioSocketImpl.java:181)
	at sun.nio.ch.NioSocketImpl.timedRead(java.base@17.0.4.1/NioSocketImpl.java:285)
	at sun.nio.ch.NioSocketImpl.implRead(java.base@17.0.4.1/NioSocketImpl.java:309)
	at sun.nio.ch.NioSocketImpl.read(java.base@17.0.4.1/NioSocketImpl.java:350)
	at sun.nio.ch.NioSocketImpl$1.read(java.base@17.0.4.1/NioSocketImpl.java:803)
	at java.net.Socket$SocketInputStream.read(java.base@17.0.4.1/Socket.java:966)
	at sun.security.ssl.SSLSocketInputRecord.read(java.base@17.0.4.1/SSLSocketInputRecord.java:478)
	at sun.security.ssl.SSLSocketInputRecord.readHeader(java.base@17.0.4.1/SSLSocketInputRecord.java:472)
	at sun.security.ssl.SSLSocketInputRecord.bytesInCompletePacket(java.base@17.0.4.1/SSLSocketInputRecord.java:70)
	at sun.security.ssl.SSLSocketImpl.readApplicationRecord(java.base@17.0.4.1/SSLSocketImpl.java:1460)
	at sun.security.ssl.SSLSocketImpl$AppInputStream.read(java.base@17.0.4.1/SSLSocketImpl.java:1064)
	at org.apache.hc.core5.http.impl.io.SessionInputBufferImpl.fillBuffer(SessionInputBufferImpl.java:149)
	at org.apache.hc.core5.http.impl.io.SessionInputBufferImpl.readLine(SessionInputBufferImpl.java:280)
	at org.apache.hc.core5.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:241)
	at org.apache.hc.core5.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:53)
	at org.apache.hc.core5.http.impl.io.DefaultBHttpClientConnection.receiveResponseHeader(DefaultBHttpClientConnection.java:298)
	at org.apache.hc.core5.http.impl.io.HttpRequestExecutor.execute(HttpRequestExecutor.java:175)
	at org.apache.hc.core5.http.impl.io.HttpRequestExecutor.execute(HttpRequestExecutor.java:218)
	at org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager$InternalConnectionEndpoint.execute(PoolingHttpClientConnectionManager.java:583)
	at org.apache.hc.client5.http.impl.classic.InternalExecRuntime.execute(InternalExecRuntime.java:212)
	at org.apache.hc.client5.http.impl.classic.MainClientExec.execute(MainClientExec.java:105)
	at org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
	at org.apache.hc.client5.http.impl.classic.ExecChainElement$1.proceed(ExecChainElement.java:57)
	at org.apache.hc.client5.http.impl.classic.ConnectExec.execute(ConnectExec.java:182)
	at org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
	at org.apache.hc.client5.http.impl.classic.ExecChainElement$1.proceed(ExecChainElement.java:57)
	at org.apache.hc.client5.http.impl.classic.ProtocolExec.execute(ProtocolExec.java:175)
	at org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
	at org.apache.hc.client5.http.impl.classic.ExecChainElement$1.proceed(ExecChainElement.java:57)
	at org.apache.hc.client5.http.impl.classic.HttpRequestRetryExec.execute(HttpRequestRetryExec.java:96)
	at org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
	at org.apache.hc.client5.http.impl.classic.ExecChainElement$1.proceed(ExecChainElement.java:57)
	at org.apache.hc.client5.http.impl.classic.ContentCompressionExec.execute(ContentCompressionExec.java:133)
	at org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
	at org.apache.hc.client5.http.impl.classic.ExecChainElement$1.proceed(ExecChainElement.java:57)
	at org.apache.hc.client5.http.impl.classic.RedirectExec.execute(RedirectExec.java:115)
	at org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
	at org.apache.hc.client5.http.impl.classic.InternalHttpClient.doExecute(InternalHttpClient.java:170)
	at org.apache.hc.client5.http.impl.classic.CloseableHttpClient.execute(CloseableHttpClient.java:75)
	at org.eclipse.ecf.provider.filetransfer.httpclient5.HttpClientFileSystemBrowser.runRequest(HttpClientFileSystemBrowser.java:251)
	at org.eclipse.ecf.provider.filetransfer.browse.AbstractFileSystemBrowser$DirectoryJob.run(AbstractFileSystemBrowser.java:71)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant