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

IllegalStateException in org.eclipse.jface.text.TextViewer trying to save large CSS file in Graphical Conflict Resolution Editor #1043

Open
meldorq opened this issue Aug 17, 2023 · 8 comments
Labels
bug Something isn't working

Comments

@meldorq
Copy link

meldorq commented Aug 17, 2023

I get a reproducible IllegalStateException in TextViewer when I try to save a large CSS file in the SVN graphical conflict resolution editor. The file has over 6000 lines.

The editor behaves normally, but when I try to save using ctrl-s, a popup opens, saying "Save Failed java.lang.IllegalStateException", and the editor remains unsaved.

I had originally reported the issue at subclipse subclipse/subclipse#274 but was told it's an eclipse issue. I hope I came to the right place.

Here is the stack trace: stacktrace.log

Installation details:

  • Eclipse IDE for Enterprise Java and Web Developers
    Version: 2023-06 (4.28.0)
    Build id: 20230608-1333
  • org.eclipse.jface.text 3.24.0.v20230525-0719
@iloveeclipse
Copy link
Member

@mickaelistria : the error seem to be coming from generic editor, could you please check:

!ENTRY org.eclipse.ui 2 0 2023-08-16 16:04:15.485
!MESSAGE Save Failed
!STACK 0
java.lang.IllegalStateException
	at org.eclipse.jface.text.TextViewer.setHyperlinkPresenter(TextViewer.java:5639)
	at org.eclipse.jface.text.source.SourceViewer.configure(SourceViewer.java:537)
	at org.eclipse.ui.internal.genericeditor.compare.GenericEditorMergeViewer.configureTextViewer(GenericEditorMergeViewer.java:68)
	at org.eclipse.ui.internal.genericeditor.compare.GenericEditorMergeViewer$1.inputDocumentChanged(GenericEditorMergeViewer.java:50)
	at org.eclipse.jface.text.TextViewer.fireInputDocumentChanged(TextViewer.java:2849)
	at org.eclipse.jface.text.TextViewer.setDocument(TextViewer.java:2890)
	at org.eclipse.jface.text.source.SourceViewer.setDocument(SourceViewer.java:682)
	at org.eclipse.jface.text.source.SourceViewer.setDocument(SourceViewer.java:622)
	at org.eclipse.compare.contentmergeviewer.TextMergeViewer$ContributorInfo.updateViewerDocument(TextMergeViewer.java:807)
	at org.eclipse.compare.contentmergeviewer.TextMergeViewer$ContributorInfo.internalSetDocument(TextMergeViewer.java:762)
	at org.eclipse.compare.contentmergeviewer.TextMergeViewer$ContributorInfo.setDocument(TextMergeViewer.java:679)
	at org.eclipse.compare.contentmergeviewer.TextMergeViewer.updateContent(TextMergeViewer.java:3051)
	at org.eclipse.compare.contentmergeviewer.ContentMergeViewer.internalRefresh(ContentMergeViewer.java:793)
	at org.eclipse.compare.contentmergeviewer.ContentMergeViewer.refresh(ContentMergeViewer.java:769)
	at org.eclipse.compare.contentmergeviewer.ContentMergeViewer.handleCompareInputChange(ContentMergeViewer.java:1389)
	at org.eclipse.compare.contentmergeviewer.TextMergeViewer.handleCompareInputChange(TextMergeViewer.java:5367)
	at org.eclipse.compare.contentmergeviewer.ContentMergeViewer.lambda$1(ContentMergeViewer.java:390)
	at org.eclipse.compare.structuremergeviewer.DiffNode.fireChange(DiffNode.java:140)
	at com.collabnet.subversion.merge.editors.MergeConflictsCompareInput$MyDiffNode.fireChange(MergeConflictsCompareInput.java:61)
	at com.collabnet.subversion.merge.editors.MergeConflictsCompareInput.saveChanges(MergeConflictsCompareInput.java:245)
	at org.eclipse.compare.internal.CompareEditor$2.execute(CompareEditor.java:519)
	at org.eclipse.ui.actions.WorkspaceModifyOperation.lambda$0(WorkspaceModifyOperation.java:110)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2382)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2407)
	at org.eclipse.ui.actions.WorkspaceModifyOperation.run(WorkspaceModifyOperation.java:131)
	at org.eclipse.compare.internal.CompareEditor.doSave(CompareEditor.java:526)
	at org.eclipse.compare.internal.CompareEditor$CompareSaveable.doSave(CompareEditor.java:653)
	at org.eclipse.ui.Saveable.doSave(Saveable.java:213)
	at org.eclipse.ui.internal.SaveableHelper.doSaveModel(SaveableHelper.java:333)
	at org.eclipse.ui.internal.SaveableHelper.lambda$1(SaveableHelper.java:196)
	at org.eclipse.ui.internal.SaveableHelper.lambda$3(SaveableHelper.java:271)
	at org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:434)
	at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:352)
	at org.eclipse.ui.internal.WorkbenchWindow.lambda$7(WorkbenchWindow.java:2346)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
	at org.eclipse.ui.internal.WorkbenchWindow.run(WorkbenchWindow.java:2344)
	at org.eclipse.ui.internal.SaveableHelper.runProgressMonitorOperation(SaveableHelper.java:278)
	at org.eclipse.ui.internal.SaveableHelper.runProgressMonitorOperation(SaveableHelper.java:260)
	at org.eclipse.ui.internal.SaveableHelper.saveModels(SaveableHelper.java:207)
	at org.eclipse.ui.internal.SaveableHelper.savePart(SaveableHelper.java:150)
	at org.eclipse.ui.internal.WorkbenchPage.saveSaveable(WorkbenchPage.java:3825)
	at org.eclipse.ui.internal.WorkbenchPage.saveEditor(WorkbenchPage.java:3838)

@iloveeclipse iloveeclipse added the bug Something isn't working label Aug 17, 2023
@jukzi
Copy link
Contributor

jukzi commented Aug 17, 2023

@meldorq do you have Hyperlinking enabled?
image

@meldorq
Copy link
Author

meldorq commented Aug 17, 2023

@meldorq do you have Hyperlinking enabled?

Yes.
And I just checked: the error doesn't occur if I disable hyperlinking.

@mickaelistria
Copy link
Contributor

@meldorq Are you able to reproduce a similar issue by comparing this CSS file with another similar one in the workspace (no subclipse involved)? I guess not, but better be sure.
Also, are you able to reproduce it when diffing using EGit?

@meldorq
Copy link
Author

meldorq commented Aug 18, 2023

Are you able to reproduce a similar issue by comparing this CSS file with another similar one in the workspace (no subclipse involved)? I guess not, but better be sure.

No, I couldn't.

Also, are you able to reproduce it when diffing using EGit?

No. The "Git Merge Tool" didn't have any problem either in a similar merge situation with the same file.

This is only a wild guess, but I believe the SVN graphical conflict resolution editor is somewhat dangling, i.e. it isn't directly connected to a file on the file system. So saving it requires more than just flushing a buffer to disk.

The other compare editors show me the content of a file on disk vs. some other content, so here saving might more straightforward.

Another difference is that the SVN graphical conflict resolution editor is initially dirty, i.e. displays the asterisk next to the file name in the editor tab. Maybe this is a useful hint?

@tomaswolf
Copy link
Member

Also see the analysis at eclipse-wildwebdeveloper/wildwebdeveloper#1092 (comment) .

@tomaswolf
Copy link
Member

Plus there was this PR: #1172 .

@iloveeclipse
Copy link
Member

Plus there was this PR: #1172 .

@mickaelistria : is this issue solved now, or why it is still opened?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

5 participants