Bug 443455 - modal dialog shown when task list index is corrupt
Summary: modal dialog shown when task list index is corrupt
Status: CLOSED MOVED
Alias: None
Product: z_Archived
Classification: Eclipse Foundation
Component: Mylyn (show other bugs)
Version: unspecified   Edit
Hardware: PC Windows 8
: P2 normal (vote)
Target Milestone: ---   Edit
Assignee: Project Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords: helpwanted
Depends on:
Blocks:
 
Reported: 2014-09-06 17:02 EDT by Emerson Murphy-Hill CLA
Modified: 2014-09-12 11:23 EDT (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Emerson Murphy-Hill CLA 2014-09-06 17:02:47 EDT
In the task list view, whenever I type something, an Eclipse error dialog pops up. Stack trace below.

In my ".metadata\.mylyn\.taskListIndex" folder, I have a file named "segments-toolcita2.gen". I guess this file got created automatically by MS OneDrive when there was a conflict between it and the same file on another one of my systems. Deleting the file solves the problem.

I would expect Mylyn to function correctly even in the presence of unexpected files.

---------------------

eclipse.buildId=4.4.0.I20140606-1215
java.version=1.8.0_20
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US
Framework arguments:  -product org.eclipse.epp.package.rcp.product
Command-line arguments:  -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.rcp.product

java.lang.NumberFormatException: For input string: "toolcita2.gen"
	at java.lang.NumberFormatException.forInputString(Unknown Source)
	at java.lang.Long.parseLong(Unknown Source)
	at org.apache.lucene.index.SegmentInfos.generationFromSegmentsFileName(SegmentInfos.java:226)
	at org.apache.lucene.index.SegmentInfos.getCurrentSegmentGeneration(SegmentInfos.java:161)
	at org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:644)
	at org.apache.lucene.index.DirectoryReader.open(DirectoryReader.java:75)
	at org.apache.lucene.index.IndexReader.open(IndexReader.java:462)
	at org.apache.lucene.index.IndexReader.open(IndexReader.java:322)
	at org.eclipse.mylyn.internal.tasks.index.core.TaskListIndex.getIndexReader(TaskListIndex.java:772)
	at org.eclipse.mylyn.internal.tasks.index.core.TaskListIndex.matches(TaskListIndex.java:569)
	at org.eclipse.mylyn.internal.tasks.index.ui.IndexedSubstringPatternFilter.isLeafMatch(IndexedSubstringPatternFilter.java:47)
	at org.eclipse.ui.dialogs.PatternFilter.isElementVisible(PatternFilter.java:243)
	at org.eclipse.ui.dialogs.PatternFilter.computeAnyVisible(PatternFilter.java:138)
	at org.eclipse.ui.dialogs.PatternFilter.isAnyVisible(PatternFilter.java:121)
	at org.eclipse.ui.dialogs.PatternFilter.isParentMatch(PatternFilter.java:262)
	at org.eclipse.ui.dialogs.PatternFilter.isElementVisible(PatternFilter.java:243)
	at org.eclipse.ui.dialogs.PatternFilter.select(PatternFilter.java:149)
	at org.eclipse.jface.viewers.ViewerFilter.filter(ViewerFilter.java:51)
	at org.eclipse.ui.dialogs.PatternFilter.filter(PatternFilter.java:89)
	at org.eclipse.jface.viewers.StructuredViewer.getFilteredChildren(StructuredViewer.java:909)
	at org.eclipse.jface.viewers.AbstractTreeViewer.getSortedChildren(AbstractTreeViewer.java:617)
	at org.eclipse.jface.viewers.AbstractTreeViewer.updateChildren(AbstractTreeViewer.java:2649)
	at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefreshStruct(AbstractTreeViewer.java:1918)
	at org.eclipse.jface.viewers.TreeViewer.internalRefreshStruct(TreeViewer.java:684)
	at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefresh(AbstractTreeViewer.java:1893)
	at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefresh(AbstractTreeViewer.java:1850)
	at org.eclipse.jface.viewers.StructuredViewer$8.run(StructuredViewer.java:1528)
	at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1436)
	at org.eclipse.jface.viewers.TreeViewer.preservingSelection(TreeViewer.java:366)
	at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1397)
	at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1525)
	at org.eclipse.jface.viewers.ColumnViewer.refresh(ColumnViewer.java:533)
	at org.eclipse.ui.dialogs.FilteredTree$NotifyingTreeViewer.refresh(FilteredTree.java:1292)
	at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1481)
	at org.eclipse.ui.dialogs.FilteredTree$NotifyingTreeViewer.refresh(FilteredTree.java:1280)
	at org.eclipse.ui.dialogs.FilteredTree$2.runInUIThread(FilteredTree.java:528)
	at org.eclipse.ui.progress.UIJob$1.run(UIJob.java:97)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:136)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4147)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3764)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1151)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1032)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:148)
	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:636)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:579)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:135)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:382)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:236)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:648)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:603)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1465)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1438)
Comment 1 Sam Davis CLA 2014-09-11 16:23:34 EDT
This is a bug in Apache Lucene: https://issues.apache.org/jira/browse/LUCENE-4405. Since it's been open for 2 years we should probably try to handle that exception:
Comment 2 Sam Davis CLA 2014-09-11 16:52:07 EDT
Actually there is not much we can do about it. The only way to resolve the issue is for the user to delete the file that Lucene objects to.
Comment 3 Emerson Murphy-Hill CLA 2014-09-11 20:15:38 EDT
Thanks, Sam. What about wrapping the error and throwing a more descriptive error message, and perhaps put it in the error log rather than a modal dialog?
Comment 4 Sam Davis CLA 2014-09-12 11:23:20 EDT
You're right, there shouldn't be a modal dialog when the index is corrupt and we can't fix it. Maybe once per session, to let the user know, but not every time they type in the task list. I am not sure that we can reliably extract the name of the offending file from the exception thrown by Lucene, but we could make a best effort. This bug has been marked helpwanted to indicate that we would be happy to support a community contribution to resolve it.
Comment 5 Eclipse Webmaster CLA 2022-11-15 11:45:08 EST
Mylyn has been restructured, and our issue tracking has moved to GitHub [1].

We are closing ~14K Bugzilla issues to give the new team a fresh start. If you feel that this issue is still relevant, please create a new one on GitHub.

[1] https://github.com/orgs/eclipse-mylyn