Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 321508

Summary: Error selecting large commit in history view
Product: [Technology] JGit Reporter: Simon Kaufmann <simon.kaufmann>
Component: JGitAssignee: Project Inbox <jgit.core-inbox>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: P3 CC: simon, stefan.lay
Version: unspecified   
Target Milestone: ---   
Hardware: PC   
OS: Windows 7   
Whiteboard:

Description Simon Kaufmann CLA 2010-08-02 09:32:25 EDT
Build Identifier: 0.9.0.201007291519

When selecting a large commit in the History view, I observe a generic "An error has occured" dialog with an unhelpful hash value.

The commit was extremly large (relocation from another source code management system). In the error log there is an LargeObjectException. Regardless whether this exception may happen at all or not (see bug #321097), the UI should at least behave more user friendly in this case.

In the error log, there is the following stack trace:

org.eclipse.jgit.errors.LargeObjectException: 80d53aee48bdfec9bca69526f41cc07a8edd3947
at org.eclipse.jgit.storage.file.LargePackedWholeObject.getCachedBytes(LargePackedWholeObject.java:98)
at org.eclipse.egit.ui.internal.history.FileDiff.getRawText(FileDiff.java:208)
at org.eclipse.egit.ui.internal.history.FileDiff.outputDiff(FileDiff.java:192)
at org.eclipse.egit.ui.internal.history.CommitMessageViewer.addDiff(CommitMessageViewer.java:348)
at org.eclipse.egit.ui.internal.history.CommitMessageViewer.format(CommitMessageViewer.java:247)
at org.eclipse.egit.ui.internal.history.CommitMessageViewer.setInput(CommitMessageViewer.java:159)
at org.eclipse.egit.ui.internal.history.GitHistoryPage$7.selectionChanged(GitHistoryPage.java:672)
at org.eclipse.jface.viewers.StructuredViewer$3.run(StructuredViewer.java:867)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:49)
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
at org.eclipse.jface.viewers.StructuredViewer.firePostSelectionChanged(StructuredViewer.java:865)
at org.eclipse.jface.viewers.StructuredViewer.handlePostSelect(StructuredViewer.java:1205)
at org.eclipse.jface.viewers.StructuredViewer$5.widgetSelected(StructuredViewer.java:1230)
at org.eclipse.jface.util.OpenStrategy.firePostSelectionEvent(OpenStrategy.java:251)
at org.eclipse.jface.util.OpenStrategy.access$5(OpenStrategy.java:245)
at org.eclipse.jface.util.OpenStrategy$3.run(OpenStrategy.java:419)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4041)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3660)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2629)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2593)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2427)
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:670)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:663)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:619)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574)
at org.eclipse.equinox.launcher.Main.run(Main.java:1407)
at org.eclipse.equinox.launcher.Main.main(Main.java:1383)


Reproducible: Always

Steps to Reproduce:
1. Commit a lot of sources at once
2. Go to the history view
3. Click on the large commit
Comment 1 Stefan Lay CLA 2010-08-10 11:38:04 EDT
This is a restriction in JGit. Bug 321097 seems to be caused by the same restriction.
Comment 2 Simon Kaufmann CLA 2010-12-01 09:27:27 EST
I just noticed that it works now. Apparently this was fixed by another change, so I'm going to close this one.