Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 50631 - Hook for resource scheduling rule factory
Summary: Hook for resource scheduling rule factory
Status: RESOLVED FIXED
Alias: None
Product: Platform
Classification: Eclipse Project
Component: Team (show other bugs)
Version: 3.0   Edit
Hardware: PC Windows 2000
: P1 normal with 2 votes (vote)
Target Milestone: 3.0   Edit
Assignee: Michael Valenta CLA
QA Contact:
URL:
Whiteboard:
Keywords:
: 57668 57675 62589 (view as bug list)
Depends on:
Blocks: 57668 57675
  Show dependency tree
 
Reported: 2004-01-26 13:57 EST by John Arthorne CLA
Modified: 2004-05-18 13:55 EDT (History)
9 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description John Arthorne CLA 2004-01-26 13:57:30 EST
I20040121

I have released new API that allows clients to ask for the scheduling rule for
various operations (copy, move, delete, validateEdit, setContents, etc).  Many
of these rule requirements actually vary based on the repository provider (for
example CVS needs to lock the parent folder for most operations).  Core needs to
expose something in the TeamHook to allow repository providers to provide a rule
factory.
Comment 1 John Arthorne CLA 2004-01-26 13:59:25 EST
See bug 46753 for more detailed discussion.
Comment 2 John Arthorne CLA 2004-04-06 18:35:35 EDT
Increasing priority. This must happen for 3.0 or all non-CVS team providers will
be stuck with the hard-coded rules we are specifying for validateEdit, etc.
Comment 3 Michael Valenta CLA 2004-04-07 09:29:20 EDT
I suspect bug 57668 occurred because a 2.1 provider (ClearCase) obtained the 
workspace lock in the vaidate Edit callback. It's unfortunate but I think we 
need to make the default rule for validate edit the workspace to ensure that 
2.1 pessimistic providers still work in 3.0. We would also need to make sure 
that 3.0 providers override the rule with a rule of lower granularity.
Comment 4 John Arthorne CLA 2004-04-07 10:10:15 EDT
I agree that workspace root will have to be the default rule when a non-3.0
provider is installed on a project. I am worried now that people upstream may be
making hard-coded assumptions about what locks are acquired in core methods.  I
need to get this done soon so we can iron out the bugs.
Comment 5 Robert Risch CLA 2004-04-08 08:46:11 EDT
I add some information and logs about my problem (basically the same as 57668)
Hope this will be solved or I must choose between Eclipse 3.0 and Clearcase.

3.0M8 with IBM Rational Clearcase plugin 2.2.1.35

1. Problem:
I enable the 2.1 build behaviour.
I perform a rebuild project.
An external builder is attached.
The build configuration is from a old version (M7). Eclipse tries to
upate it to the new format. It can not be checked out because autocheckout is 
disabled.
(this is because eclipse checked automaticaly out to often and by accident-> 
switch off autocheckout).

I get a dialog:
"Errors Running Jobs:
ERROR: Rebuild Project: Problems occurred building the selected resources."
I reason was only visable in the log. However without a filename.
I know that it is .externalToolBuilders/buildEclipse.launch and check it out 
manualy.
Now rebuild projects works.
In the launcher there are two new attributes:
"
<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" 
value="true"/>
<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.
eclipse.ant.ui.AntClasspathProvider"/>
"
I check in this again and rebuild project is still possible.
New attributes are compatible with M7!

Eclipse should give a dialog with the reasone that a checkout can not be 
performed (as in the log).
Furthermore a file for which the automatich checkout failed should be stated. 
However the very best
would be if the Rational Plugin can be configured to prompt for checkout in such 
cases.
This was not possible for
"When checked in files are edited by an internal, non-interactive editor"
"When checked in files are saved by an internal editor".
There is only "Do nothing" and "Automatically checkkout" possible.
The above is already a problem with M7 (and 2.1 too)

2. Problem:
I set "When checked in files are edited by an internal, interactive editor" to 
"Prompt to checkout".
In M7 this lead to the following behaviour:
If I hit a space in an editor I get a prompt from the clearcase plugin if I want 
to checkout.
With M8 I get an error:
"Exception running validator code"
This message replace the content of the editor. If I try to open the editor 
again I get still the error
message. I must close the editor and reopen the file again or I must check out 
the file manually.
I try to set all settings of the plugin to "Automatically checkout". I get the 
same result.
I use Rational ClearCase SCM Adapcter Version 2.2.36 Build 20020612 also refered 
as 2.2.1.35.
Is there a newer one I can get or should I try to push my department towards 
CVS. The license costs for
ClearCase, ClearQuest, Rose and Purify plus are not so low that I want always 
grudging toward the CVS users.

Hope this helps and the text is not too long
Robert Risch


******************** checkout problem with externalToolBuilders launcher update 
***************************

!SESSION Apr 08, 2004 10:32:03.160 ---------------------------------------------
java.version=1.4.2
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=de_DE
!ENTRY com.rational.clearcase 4 0 Apr 08, 2004 10:32:03.160
!MESSAGE CCFileModificationValidator::validateEdit: File could not be checked 
out(not enabled)[4-Error(4-NotOkToEdit/Save)]

!ENTRY org.eclipse.core.runtime 4 2 Apr 08, 2004 10:32:03.160
!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.core.
runtime".
!STACK 1
org.eclipse.core.runtime.CoreException: File could not be checked out(not 
enabled)
	at org.eclipse.debug.internal.core.LaunchConfigurationWorkingCopy.
writeNewFile(LaunchConfigurationWorkingCopy.java:311)
	at org.eclipse.debug.internal.core.LaunchConfigurationWorkingCopy.
doSave0(LaunchConfigurationWorkingCopy.java:220)
	at org.eclipse.debug.internal.core.LaunchConfigurationWorkingCopy.
access$0(LaunchConfigurationWorkingCopy.java:211)
	at org.eclipse.debug.internal.core.LaunchConfigurationWorkingCopy$1.
run(LaunchConfigurationWorkingCopy.java:166)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1559)
	at org.eclipse.debug.internal.core.LaunchConfigurationWorkingCopy.
doSave(LaunchConfigurationWorkingCopy.java:170)
	at org.eclipse.ant.internal.ui.model.AntUtil.
migrateToNewClasspathFormat(AntUtil.java:496)
	at org.eclipse.ant.internal.ui.launchConfigurations.AntLaunchDelegate.
launch(AntLaunchDelegate.java:78)
	at org.eclipse.debug.internal.core.LaunchConfiguration.
launch(LaunchConfiguration.java:569)
	at org.eclipse.debug.internal.core.LaunchConfiguration.
launch(LaunchConfiguration.java:150)
	at org.eclipse.ui.externaltools.internal.model.ExternalToolBuilder.
launchBuild(ExternalToolBuilder.java:137)
	at org.eclipse.ui.externaltools.internal.model.ExternalToolBuilder.
build(ExternalToolBuilder.java:70)
	at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:
504)
	at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.
java:610)
	at org.eclipse.core.runtime.Platform.run(Platform.java:521)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.
java:137)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.
java:224)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.
java:165)
	at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:
194)
	at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.
java:610)
	at org.eclipse.core.runtime.Platform.run(Platform.java:521)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.
java:197)
	at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:
296)
	at org.eclipse.core.internal.resources.Project.build(Project.java:98)
	at org.eclipse.ui.actions.BuildAction.invokeOperation(BuildAction.java:169)
	at org.eclipse.ui.actions.WorkspaceAction.execute(WorkspaceAction.java:119)
	at org.eclipse.ui.actions.WorkspaceAction$2.run(WorkspaceAction.java:362)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:62)
!SUBENTRY 1 com.rational.clearcase 4 4 Apr 08, 2004 10:32:03.160
!MESSAGE File could not be checked out(not enabled)
!SUBENTRY 1 com.rational.clearcase 4 4 Apr 08, 2004 10:32:03.160
!MESSAGE File could not be checked out(not enabled)
!ENTRY org.eclipse.ui.ide 4 4 Apr 08, 2004 10:32:17.269
!MESSAGE Problems occurred building the selected resources.
!STACK 1
org.eclipse.core.internal.resources.ResourceException: Errors during build.
	at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:
298)
	at org.eclipse.core.internal.resources.Project.build(Project.java:98)
	at org.eclipse.ui.actions.BuildAction.invokeOperation(BuildAction.java:169)
	at org.eclipse.ui.actions.WorkspaceAction.execute(WorkspaceAction.java:119)
	at org.eclipse.ui.actions.WorkspaceAction$2.run(WorkspaceAction.java:362)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:62)
!SUBENTRY 1 org.eclipse.core.resources 4 566 Apr 08, 2004 10:32:17.269
!MESSAGE Errors during build.
!SUBENTRY 2 com.rational.clearcase 4 4 Apr 08, 2004 10:32:17.269
!MESSAGE File could not be checked out(not enabled)
!SUBENTRY 1 com.rational.clearcase 4 4 Apr 08, 2004 10:32:17.269
!MESSAGE File could not be checked out(not enabled)


******************** checkout problem in java editor ***************************

!ENTRY org.eclipse.core.runtime 4 2 Apr 08, 2004 12:20:22.547
!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.core.
runtime".
!STACK 0
java.lang.IllegalArgumentException: Attempted to beginRule: R/, does not match 
outer scope rule: F/PCRReader/java/com/philips/gxr/cr/pcrreader
	at org.eclipse.core.internal.runtime.Assert.isLegal(Assert.java:56)
	at org.eclipse.core.internal.jobs.ImplicitJobs$ThreadJob.
illegalPush(ImplicitJobs.java:86)
	at org.eclipse.core.internal.jobs.ImplicitJobs$ThreadJob.push(ImplicitJobs.
java:167)
	at org.eclipse.core.internal.jobs.ImplicitJobs.begin(ImplicitJobs.java:241)
	at org.eclipse.core.internal.jobs.JobManager.beginRule(JobManager.java:149)
	at org.eclipse.core.internal.resources.WorkManager.checkIn(WorkManager.
java:88)
	at org.eclipse.core.internal.resources.Workspace.
prepareOperation(Workspace.java:1521)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1554)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1578)
	at com.rational.clearcase.RSCMService.update(RSCMService.java:3407)
	at com.rational.clearcase.RSCMService.updateUI(RSCMService.java:3549)
	at com.rational.clearcase.RSCMService.updateUI(RSCMService.java:3565)
	at com.rational.clearcase.RSCMService.onDemand(RSCMService.java:1515)
	at com.rational.clearcase.team.core.clearcase.
CCFileModificationValidator$1.run(CCFileModificationValidator.java:176)
	at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:135)
	at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:25)
	at org.eclipse.swt.widgets.Display.syncExec(Display.java:2902)
	at com.rational.clearcase.team.core.clearcase.CCFileModificationValidator.
validateEdit(CCFileModificationValidator.java:172)
	at org.eclipse.team.internal.core.FileModificationValidatorManager.
validateEdit(FileModificationValidatorManager.java:70)
	at org.eclipse.core.internal.resources.Workspace$5.run(Workspace.java:1755)
	at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.
java:610)
	at org.eclipse.core.runtime.Platform.run(Platform.java:521)
	at org.eclipse.core.internal.resources.Workspace.validateEdit(Workspace.
java:1761)
	at org.eclipse.core.internal.filebuffers.ResourceFileBuffer.
validateState(ResourceFileBuffer.java:312)
	at org.eclipse.ui.editors.text.TextFileDocumentProvider$4.
execute(TextFileDocumentProvider.java:822)
	at org.eclipse.ui.editors.text.
TextFileDocumentProvider$DocumentProviderOperation.run(TextFileDocumentProvider.
java:94)
	at org.eclipse.ui.actions.WorkspaceModifyDelegatingOperation.
execute(WorkspaceModifyDelegatingOperation.java:67)
	at org.eclipse.ui.actions.WorkspaceModifyOperation$1.
run(WorkspaceModifyOperation.java:91)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1559)
	at org.eclipse.ui.actions.WorkspaceModifyOperation.
run(WorkspaceModifyOperation.java:105)
	at org.eclipse.ui.editors.text.WorkspaceOperationRunner.
run(WorkspaceOperationRunner.java:73)
	at org.eclipse.ui.editors.text.WorkspaceOperationRunner.
run(WorkspaceOperationRunner.java:63)
	at org.eclipse.ui.editors.text.TextFileDocumentProvider.
executeOperation(TextFileDocumentProvider.java:392)
	at org.eclipse.ui.editors.text.TextFileDocumentProvider.
validateState(TextFileDocumentProvider.java:835)
	at org.eclipse.ui.texteditor.AbstractTextEditor.
validateState(AbstractTextEditor.java:3029)
	at org.eclipse.ui.texteditor.AbstractTextEditor$16.run(AbstractTextEditor.
java:3077)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:84)
	at org.eclipse.ui.texteditor.AbstractTextEditor.
validateEditorInputState(AbstractTextEditor.java:3072)
	at org.eclipse.ui.texteditor.
AbstractTextEditor$ElementStateListener$Validator.verifyText(AbstractTextEditor.
java:208)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:
193)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:769)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:793)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:778)
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:586)
	at org.eclipse.swt.custom.StyledText.modifyContent(StyledText.java:5539)
	at org.eclipse.swt.custom.StyledText.sendKeyEvent(StyledText.java:6391)
	at org.eclipse.swt.custom.StyledText.doContent(StyledText.java:2526)
	at org.eclipse.swt.custom.StyledText.handleKey(StyledText.java:4948)
	at org.eclipse.swt.custom.StyledText.handleKeyDown(StyledText.java:4971)
	at org.eclipse.swt.custom.StyledText$7.handleEvent(StyledText.java:4720)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:769)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:793)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:778)
	at org.eclipse.swt.widgets.Control.sendKeyEvent(Control.java:1720)
	at org.eclipse.swt.widgets.Control.sendKeyEvent(Control.java:1716)
	at org.eclipse.swt.widgets.Control.WM_CHAR(Control.java:3041)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:2944)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:3146)
	at org.eclipse.swt.internal.win32.OS.CallWindowProcW(Native Method)
	at org.eclipse.swt.internal.win32.OS.CallWindowProc(OS.java:1374)
	at org.eclipse.swt.internal.BidiUtil.windowProc(BidiUtil.java:647)
	at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
	at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:1450)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2254)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1562)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1536)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:
257)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:139)
	at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:90)
	at org.eclipse.core.internal.runtime.PlatformActivator$1.
run(PlatformActivator.java:277)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:
239)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:
117)
	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:324)
	at org.eclipse.core.launcher.Main.basicRun(Main.java:267)
	at org.eclipse.core.launcher.Main.run(Main.java:692)
	at org.eclipse.core.launcher.Main.main(Main.java:676)
Comment 6 John Arthorne CLA 2004-04-08 12:07:12 EDT
Yes, this will be fixed in a way that allows for backward compatibility for
older team providers.  Priority P1 means we won't ship Eclipse 3.0 without it.
Comment 7 John Arthorne CLA 2004-04-08 18:09:12 EDT
I have released new methods on TeamHook to allow repository providers to change
the scheduling rules used for all workspace modifying operations.  The TeamHook
then needs to delegate this down to the RepositoryProvider API.

Moving to Team component for remaining implementation work.
Comment 8 John Arthorne CLA 2004-04-08 18:16:03 EDT
*** Bug 57675 has been marked as a duplicate of this bug. ***
Comment 9 Cherie Wong CLA 2004-04-15 10:12:25 EDT
*** Bug 58593 has been marked as a duplicate of this bug. ***
Comment 10 Michael Valenta CLA 2004-04-15 17:09:32 EDT
I have released the changes for Team and CVS. Leaving open as a reminder to 
test the effects of the pessimistic rule factory on Eclipse in general (i.e. 
is everyone a good citizen?)
Comment 11 Michael Valenta CLA 2004-04-15 17:09:50 EDT
*** Bug 57668 has been marked as a duplicate of this bug. ***
Comment 12 John Arthorne CLA 2004-05-07 11:53:03 EDT
It would be nice to mark this as fixed. Having open P1 bugs this close to the
release does not look good. If the remaining issue is testing, we can open a
separate bug report for writing tests.
Comment 13 Michael Valenta CLA 2004-05-07 12:59:29 EDT
GOod enough. Closing
Comment 14 John Arthorne CLA 2004-05-18 13:55:15 EDT
*** Bug 62589 has been marked as a duplicate of this bug. ***