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

Bug 333690

Summary: WorkspaceSynchronizer.getFile(Resource) leads to CoreException
Product: [Modeling] EMF Services Reporter: Martin Fluegge <martin.fluegge>
Component: TransactionAssignee: EMF Services Transaction inbox <emfservices.transaction-inbox>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: P3 CC: ahunter.eclipse, bjoern.sundin, cedric.dumoulin, christoph, kofeka, orgler, sebastien.gerard, stepper
Version: unspecified   
Target Milestone: ---   
Hardware: PC   
OS: Windows XP   
Whiteboard:
Attachments:
Description Flags
Patch v1
none
Patch v2 ahunter.eclipse: iplog+

Description Martin Fluegge CLA 2011-01-06 15:11:41 EST
If someone calls WorkSpaceSynchronizer.getFile(Resource) on a CDO Resource this will lead to the exception below, because CDO has no underlying EFS implementation.

Worse, the exception is not catchable, so it can't be handled. Looking to the stack trace it turned out that the FileSystemResourceManager (line 212) catches the CoreException and simply writes it to the log.

Since GMF uses the getFile() call heavily, Dawn’s GMF extension falls into this trap, which leads to a flooded log file, if logs are enable.

This happens, as far as I could see, because as a final fallback the WorkspaceSynchronizer tries to find a workspace location for the URI which certainly fails for URIs that are not in the workspace.

I think it would be better to check if the URI can be resolved in the workspace and if not, simply return an empty array.

org.eclipse.core.runtime.CoreException: No file system is defined for scheme: cdo
	at org.eclipse.core.internal.filesystem.Policy.error(Policy.java:55)
	at org.eclipse.core.internal.filesystem.Policy.error(Policy.java:50)
	at
org.eclipse.core.internal.filesystem.InternalFileSystemCore.getFileSystem(InternalFileSystemCore.java:65)
	at
org.eclipse.core.internal.filesystem.InternalFileSystemCore.getStore(InternalFileSystemCore.java:107)
	at org.eclipse.core.filesystem.EFS.getStore(EFS.java:470)
	at
org.eclipse.core.internal.localstore.FileSystemResourceManager.findLinkedResourcesPaths(FileSystemResourceManager.java:129)
	at
org.eclipse.core.internal.localstore.FileSystemResourceManager.allPathsForLocationNonCanonical(FileSystemResourceManager.java:120)
	at
org.eclipse.core.internal.localstore.FileSystemResourceManager.allPathsForLocation(FileSystemResourceManager.java:57)
	at
org.eclipse.core.internal.localstore.FileSystemResourceManager.allResourcesFor(FileSystemResourceManager.java:198)
	at
org.eclipse.core.internal.resources.WorkspaceRoot.findFilesForLocationURI(WorkspaceRoot.java:112)
	at
org.eclipse.core.internal.resources.WorkspaceRoot.findFilesForLocationURI(WorkspaceRoot.java:103)
	at
org.eclipse.emf.workspace.util.WorkspaceSynchronizer.getFile(WorkspaceSynchronizer.java:357)
	at
org.eclipse.emf.workspace.util.WorkspaceSynchronizer.getFile(WorkspaceSynchronizer.java:270)
	at
org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreDiagramEditor.getNavigatorSelection(AcoreDiagramEditor.java:307)
	at
org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreDiagramEditor.getShowInContext(AcoreDiagramEditor.java:293)
	at
org.eclipse.ui.internal.services.WorkbenchSourceProvider.getContext(WorkbenchSourceProvider.java:412)
	at
org.eclipse.ui.internal.services.WorkbenchSourceProvider.updateActivePart(WorkbenchSourceProvider.java:478)
	at
org.eclipse.ui.internal.services.WorkbenchSourceProvider.checkActivePart(WorkbenchSourceProvider.java:305)
	at
org.eclipse.ui.internal.services.WorkbenchSourceProvider.checkActivePart(WorkbenchSourceProvider.java:300)
	at
org.eclipse.ui.internal.services.WorkbenchSourceProvider$2.windowDeactivated(WorkbenchSourceProvider.java:270)
	at org.eclipse.ui.internal.Workbench$15.run(Workbench.java:1018)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at
org.eclipse.ui.internal.Workbench.fireWindowDeactivated(Workbench.java:1016)
	at
org.eclipse.ui.internal.WorkbenchWindow$28.shellDeactivated(WorkbenchWindow.java:3133)
	at
org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:111)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1077)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1058)
	at org.eclipse.swt.widgets.Decorations.WM_ACTIVATE(Decorations.java:1647)
	at org.eclipse.swt.widgets.Shell.WM_ACTIVATE(Shell.java:2137)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4162)
	at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:341)
	at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1598)
	at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2061)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4891)
	at org.eclipse.swt.internal.win32.OS.PeekMessageW(Native Method)
	at org.eclipse.swt.internal.win32.OS.PeekMessage(OS.java:3030)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3670)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438)
	at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671)
	at
org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at
org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664)
	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(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:622)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
	at org.eclipse.equinox.launcher.Main.main(
Comment 1 Martin Fluegge CLA 2011-01-06 15:13:46 EST
Created attachment 186221 [details]
Patch v1

I attached a patch which could solve the problem. At least it does this for my case.  
 ;)
 
Cheers,

Martin
Comment 2 Martin Fluegge CLA 2011-04-15 07:54:13 EDT
Created attachment 193355 [details]
Patch v2

I noticed that in my previous patch I forget to include the dependency changes in the Manifest.MF. The new patch now contains the corrected version. Sorry for that. 

Since the topic is open for a while I would like the draw the attention to it again. It would be nice if someone from the EMF Transaction could comment on this bug.

Thx :)
Comment 3 Martin Fluegge CLA 2011-05-16 07:11:27 EDT
Hi Anthony,

I added you to this bug in the hope that you are the right one to have a look at it (saw that you are the last active committer on EMF Transaction). 

The bug is around for a while without any reaction.  It would be nice if you could have a look at the attached patch and make some comments about it, or even accept it :)

Thanks in advance. 

Cheers, 

Martin
Comment 4 Anthony Hunter CLA 2011-06-01 13:24:30 EDT
What is Dawn’s GMF extension? Is this blocking something or is it just an annoying error in the log 100s of times?
Comment 5 Martin Fluegge CLA 2011-06-01 14:00:42 EDT
Hi Anthony,

Thanks for your response. 

(In reply to comment #4)
> What is Dawn’s GMF extension? 

Dawn is the UI integration part of CDO (http://wiki.eclipse.org/Dawn). It provides an integration layer between CDO and EMF based framework such as GMF to make the collaborative. 

>Is this blocking something or is it just an annoying error in the log 100s of times?

It is not blocking anything but leads to a blown up log file and slows down the performance of the editor.
Comment 6 Sébastien Gérard CLA 2011-06-01 14:13:16 EDT
Hi,

here is Sebastien the project lead of Papyrus, the UML graphical editor of Modelling MDT. It is exactly the same thing for us, and the result is feezing Papyrus some time that will be not accepted by users...

I do thank you in advance if this bug may be solved quite soon for RC4 it would be perfect.

Cheers... Sébastien.
Comment 7 Martin Fluegge CLA 2011-06-02 12:25:38 EDT
Hi Sebastien,

just out of curiosity: Does the attched patch solve your problem, too?
Comment 8 Cedric Dumoulin CLA 2011-06-15 17:25:54 EDT
The Papyrus team has tried the patch, and it works. But, personally I don't think it is a good idea to return an empty array when the URI is not found. 

If the URI is not found, this means there is an error, and this error should be reported with an exception. The problem with the actual implementation is that a silent exception (not declared in the method signature) is thrown, so callers of the method are not obliged to catch this error. 
A better solution should be to throw a not silent exception, and let the callers deal with the exception.
  If you return an empty array, you can't detect easily if the returned values are corrects, partially correct (a file is missing), or bad. This could lead to  problems that will be propagated to other part of your code, and will be difficult to understand.
Comment 9 Martin Fluegge CLA 2011-06-21 13:35:02 EDT
As far as I remember to actual problem (unbelievable amount of traces in the log file) comes from the FileSystemResourceManager.allPathsForLocationNonCanonical() method which simply catches the CoreException, writes it to the log file and than returns an empty list. 

So what is returned to the the WorkSpaceSynchronizer.getFile() is this empty list. This leads to returning null to the caller.

My proposed patch just checks whether the call of WorkspaceRoot.findFilesForLocationURI() is necessary (if not it would trace the exception due to the catch in FileSystemResourceManager) and if not it just avoids the call and thus the exception is not written to the log file.The contract of the method WorkSpaceSynchronizer.getFile())  stays the same. 

I chose this way because we cannot declare an additional exception to this method, because this would break any caller of this method, which for example would mean any generated GMF editor. So in addition GMF codegen must be changed to generate code which handles this exception and any existing GMF editor must be changed accordingly. I think this is not solution. 

I am not sure whether I got what the problem for Papyrus is, because currently you also do not have a way to track that an error occurred, because getFile() simply returns null on an unregistered files system. My patch does not change this behaviour but just suppresses the print out of the exception. 

But I have to admit that it has been a while since I last looked at this problem. Since I am no EMF Transaction committer I am not that familiar with the code. 

Anthony, do you have a better solution to solve this problem?
Comment 10 Johannes Michler CLA 2011-06-25 08:47:12 EDT
Hello,

we have the same issue on our Business Process Modeling Tool Horus. We're loading/saving our models through our custom resourceManager. For us - as for the CDO-users - we're getting tons of errors in our log complaining about an unknown filesystem-scheme.

The patch provided by Martin solves this issue. I would propose to bring this into the mainline as soon as possible. Maybe there are better solutions (it seems a bit weird to me to have a direct dependency from EMF to EFS), but the provided patch is in my opinion better than the errors we have at the moment :-(

- Johannes
Comment 11 Chris CLA 2011-07-13 08:41:45 EDT
Hi all,

did the patch find its way into the Indigo release? Because we're also getting our error log clogged with this core exception. It doesn't seem to have any other negative effects, just as described here.

Regards,
chris
Comment 12 Martin Fluegge CLA 2011-07-31 06:07:48 EDT
> did the patch find its way into the Indigo release?

Unfortunatelly not. :(


+1 for having this one in Indigo SR1
Comment 13 Bjoern Sundin CLA 2011-08-08 11:18:06 EDT
I encounter the same problem attempting to upgrade my application to Indigo using EMF/GMF and a HibernateResource (Teneo).

Resource URI: hibernate://dsname=mydatabase

org.eclipse.core.runtime.CoreException: No file system is defined for scheme: hibernate
	at org.eclipse.core.internal.filesystem.Policy.error(Policy.java:55)
	at org.eclipse.core.internal.filesystem.Policy.error(Policy.java:50)
	at org.eclipse.core.internal.filesystem.InternalFileSystemCore.getFileSystem(InternalFileSystemCore.java:65)
	at org.eclipse.core.internal.filesystem.InternalFileSystemCore.getStore(InternalFileSystemCore.java:107)
	at org.eclipse.core.filesystem.EFS.getStore(EFS.java:470)
	at org.eclipse.core.internal.localstore.FileSystemResourceManager.findLinkedResourcesPaths(FileSystemResourceManager.java:142)
	at org.eclipse.core.internal.localstore.FileSystemResourceManager.allPathsForLocationNonCanonical(FileSystemResourceManager.java:124)
	at org.eclipse.core.internal.localstore.FileSystemResourceManager.allPathsForLocation(FileSystemResourceManager.java:62)
	at org.eclipse.core.internal.localstore.FileSystemResourceManager.allResourcesFor(FileSystemResourceManager.java:216)
	at org.eclipse.core.internal.resources.WorkspaceRoot.findFilesForLocationURI(WorkspaceRoot.java:113)
	at org.eclipse.core.internal.resources.WorkspaceRoot.findFilesForLocationURI(WorkspaceRoot.java:104)
	at org.eclipse.emf.workspace.util.WorkspaceSynchronizer.getFile(WorkspaceSynchronizer.java:357)
	at org.eclipse.emf.workspace.util.WorkspaceSynchronizer.getFile(WorkspaceSynchronizer.java:270)
	at org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand.getAffectedFiles(EditElementCommand.java:86)
	at org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand.<init>(EditElementCommand.java:67)
	at org.eclipse.gmf.runtime.emf.type.core.commands.CreateElementCommand.<init>(CreateElementCommand.java:69)
	at ch.bergauer.rcp.amset.project.data.nodes.amset.diagram.edit.commands.GateLsaCreateCommand.<init>(GateLsaCreateCommand.java:22)
	at ch.bergauer.rcp.amset.project.data.nodes.amset.diagram.edit.policies.EnvironmentItemSemanticEditPolicy.getCreateCommand(EnvironmentItemSemanticEditPolicy.java:61)
	at ch.bergauer.rcp.amset.project.data.nodes.amset.diagram.edit.policies.NodeprojectdataBaseItemSemanticEditPolicy.getSemanticCommandSwitch(NodeprojectdataBaseItemSemanticEditPolicy.java:183)
	at ch.bergauer.rcp.amset.project.data.nodes.amset.diagram.edit.policies.NodeprojectdataBaseItemSemanticEditPolicy.getSemanticCommand(NodeprojectdataBaseItemSemanticEditPolicy.java:136)
	at org.eclipse.gmf.runtime.diagram.ui.editpolicies.SemanticEditPolicy.getCommand(SemanticEditPolicy.java:69)
	at ch.bergauer.rcp.amset.project.data.nodes.amset.diagram.edit.policies.NodeprojectdataBaseItemSemanticEditPolicy.getCommand(NodeprojectdataBaseItemSemanticEditPolicy.java:101)
	at org.eclipse.gef.editparts.AbstractEditPart.getCommand(AbstractEditPart.java:502)
	at org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart.access$1(GraphicalEditPart.java:1)
	at org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart$1.run(GraphicalEditPart.java:482)
	at org.eclipse.emf.transaction.impl.TransactionalEditingDomainImpl.runExclusive(TransactionalEditingDomainImpl.java:328)
	at org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart.getCommand(GraphicalEditPart.java:477)
	at org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy.getCreateElementAndViewCommand(CreationEditPolicy.java:340)
	at org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy.getCommand(CreationEditPolicy.java:87)
	at org.eclipse.gef.editparts.AbstractEditPart.getCommand(AbstractEditPart.java:502)
	at org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart.access$1(GraphicalEditPart.java:1)
	at org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart$1.run(GraphicalEditPart.java:482)
	at org.eclipse.emf.transaction.impl.TransactionalEditingDomainImpl.runExclusive(TransactionalEditingDomainImpl.java:328)
	at org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart.getCommand(GraphicalEditPart.java:477)
	at org.eclipse.gmf.runtime.diagram.ui.tools.PopupBarTool.getCommand(PopupBarTool.java:107)
	at org.eclipse.gmf.runtime.diagram.ui.tools.AbstractPopupBarTool.isCommandEnabled(AbstractPopupBarTool.java:96)
	at org.eclipse.gmf.runtime.diagram.ui.editpolicies.PopupBarEditPolicy$PopupBarLabelHandle.calculateEnabled(PopupBarEditPolicy.java:263)
	at org.eclipse.gmf.runtime.diagram.ui.editpolicies.PopupBarEditPolicy$PopupBarLabelHandle.<init>(PopupBarEditPolicy.java:170)
	at org.eclipse.gmf.runtime.diagram.ui.editpolicies.PopupBarEditPolicy.initPopupBars(PopupBarEditPolicy.java:780)
	at org.eclipse.gmf.runtime.diagram.ui.editpolicies.PopupBarEditPolicy.showDiagramAssistant(PopupBarEditPolicy.java:842)
	at org.eclipse.gmf.runtime.diagram.ui.editpolicies.DiagramAssistantEditPolicy$FocusListener.selectedStateChanged(DiagramAssistantEditPolicy.java:150)
	at org.eclipse.gef.editparts.AbstractEditPart.fireSelectionChanged(AbstractEditPart.java:436)
	at org.eclipse.gef.editparts.AbstractEditPart.setFocus(AbstractEditPart.java:1012)
	at org.eclipse.gef.ui.parts.GraphicalViewerImpl.handleFocusGained(GraphicalViewerImpl.java:123)
	at org.eclipse.gef.ui.parts.GraphicalViewerImpl$2.focusGained(GraphicalViewerImpl.java:276)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:139)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1077)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1058)
	at org.eclipse.swt.widgets.Control.sendFocusEvent(Control.java:2822)
	at org.eclipse.swt.widgets.Widget.wmSetFocus(Widget.java:2403)
	at org.eclipse.swt.widgets.Control.WM_SETFOCUS(Control.java:5152)
	at org.eclipse.swt.widgets.Canvas.WM_SETFOCUS(Canvas.java:448)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4598)
	at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:341)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4972)
	at org.eclipse.swt.internal.win32.OS.SetFocus(Native Method)
	at org.eclipse.swt.widgets.Control.forceFocus(Control.java:1098)
	at org.eclipse.swt.widgets.Control.setSavedFocus(Control.java:3599)
	at org.eclipse.swt.widgets.Decorations.restoreFocus(Decorations.java:821)
	at org.eclipse.swt.widgets.Decorations.WM_ACTIVATE(Decorations.java:1651)
	at org.eclipse.swt.widgets.Shell.WM_ACTIVATE(Shell.java:2137)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4525)
	at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:341)
	at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1610)
	at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2061)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4972)
	at org.eclipse.swt.internal.win32.OS.PeekMessageW(Native Method)
	at org.eclipse.swt.internal.win32.OS.PeekMessage(OS.java:3095)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3749)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2696)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2660)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2494)
	at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:674)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:667)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at ch.bergauer.rcp.amset.Application.start(Application.java:31)
	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:344)
	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:622)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1386)
Comment 14 Carsten Reckord CLA 2011-08-08 11:43:55 EDT
With the FileSystemResourceManager being the root of the problem here, shouldn't this be reassigned to core? I guess that would also increase the chance of getting this included in SR1 :)
Comment 15 Key Ofeka CLA 2011-08-23 12:48:00 EDT
+1

This patch saved us time. And I agree with comment #9 of Martin Fluegge
Comment 16 Anthony Hunter CLA 2011-08-23 17:58:50 EDT
I have committed to R1_5_maintenance

Will do a build over the next few days and get a build in Indigo SR1.
Comment 17 Anthony Hunter CLA 2011-08-23 21:00:14 EDT
(In reply to comment #16)
> I have committed to R1_5_maintenance
> 
> Will do a build over the next few days and get a build in Indigo SR1.

This fix is in the indigo repository for SR1.