| Summary: | Synchronize performs I/O on UI thread => can block UI for long periods | ||
|---|---|---|---|
| Product: | [Technology] EGit | Reporter: | James Blackburn <jamesblackburn+eclipse> |
| Component: | UI | Assignee: | Project Inbox <egit.ui-inbox> |
| Status: | NEW --- | QA Contact: | |
| Severity: | normal | ||
| Priority: | P3 | CC: | dariusz.luksza, robert.munteanu |
| Version: | 0.11 | ||
| Target Milestone: | --- | ||
| Hardware: | PC | ||
| OS: | All | ||
| Whiteboard: | |||
|
Description
James Blackburn
Still seeing UI lockups when starting synchronize in 0.11.3:
"main" prio=10 tid=0x0000000040115000 nid=0x4155 runnable [0x0000000040227000]
java.lang.Thread.State: RUNNABLE
at java.io.FileInputStream.readBytes(Native Method)
at java.io.FileInputStream.read(FileInputStream.java:177)
at org.eclipse.jgit.treewalk.WorkingTreeIterator.computeHash(WorkingTreeIterator.java:753)
at org.eclipse.jgit.treewalk.WorkingTreeIterator.idBufferBlob(WorkingTreeIterator.java:262)
at org.eclipse.jgit.treewalk.WorkingTreeIterator.idBuffer(WorkingTreeIterator.java:232)
at org.eclipse.jgit.treewalk.AbstractTreeIterator.getEntryObjectId(AbstractTreeIterator.java:399)
at org.eclipse.jgit.treewalk.WorkingTreeIterator.contentCheck(WorkingTreeIterator.java:696)
at org.eclipse.jgit.treewalk.WorkingTreeIterator.isModified(WorkingTreeIterator.java:668)
at org.eclipse.jgit.treewalk.filter.IndexDiffFilter.include(IndexDiffFilter.java:171)
at org.eclipse.jgit.treewalk.TreeWalk.next(TreeWalk.java:553)
at org.eclipse.egit.ui.internal.synchronize.model.GitModelCache.getChildrenImpl(GitModelCache.java:125)
at org.eclipse.egit.ui.internal.synchronize.model.GitModelObjectContainer.getChildren(GitModelObjectContainer.java:115)
at org.eclipse.egit.ui.internal.synchronize.model.GitModelRepository.getChildrenImpl(GitModelRepository.java:159)
at org.eclipse.egit.ui.internal.synchronize.model.GitModelRepository.getChildren(GitModelRepository.java:73)
at org.eclipse.egit.ui.internal.synchronize.model.GitModelRoot.getChildrenImpl(GitModelRoot.java:59)
at org.eclipse.egit.ui.internal.synchronize.model.GitModelRoot.getChildren(GitModelRoot.java:47)
at org.eclipse.egit.ui.internal.synchronize.mapping.GitModelWorkbenchAdapter.getChildren(GitModelWorkbenchAdapter.java:29)
at org.eclipse.ui.model.BaseWorkbenchContentProvider.getChildren(BaseWorkbenchContentProvider.java:64)
at org.eclipse.ui.model.BaseWorkbenchContentProvider.getElements(BaseWorkbenchContentProvider.java:73)
at org.eclipse.team.ui.mapping.SynchronizationContentProvider.getDelegateChildren(SynchronizationContentProvider.java:176)
at org.eclipse.team.ui.mapping.SynchronizationContentProvider.internalGetChildren(SynchronizationContentProvider.java:121)
at org.eclipse.team.ui.mapping.SynchronizationContentProvider.getElements(SynchronizationContentProvider.java:56)
at org.eclipse.ui.internal.navigator.extensions.SafeDelegateTreeContentProvider.getElements(SafeDelegateTreeContentProvider.java:101)
Without trying to get a stack trace, starting the sync process does cause the UI to freeze for a couple of seconds in 1.0 as well. |