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

Bug 351989

Summary: [reconciler] Add more debug info for reconciler
Product: [Eclipse Project] Equinox Reporter: Krzysztof Daniel <krzysztof.daniel>
Component: p2Assignee: DJ Houghton <dj.houghton>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: P3 CC: kim.moir, krzysztof.daniel, pascal
Version: 3.6.2   
Target Milestone: 3.6.2+   
Hardware: PC   
OS: Windows XP   
Whiteboard:
Bug Depends on:    
Bug Blocks: 352789    
Attachments:
Description Flags
Patch for debugging none

Description Krzysztof Daniel CLA 2011-07-13 11:08:32 EDT
Created attachment 199593 [details]
Patch for debugging

Eclipse SDK

Version: 3.7.0
Build id: I20110613-1736

Scenario:
(1) enable dropins debug and apply the attached patch. It should print all changes that are going to happen.
(2) put test plugin A_1.0 and A_1.1 into dropins. 
(3) Start Eclipse and verify that A_1.1 is installed. Stop Eclipse
(4) remove A_1.1 and start Eclipse
(5) see messages that A_1.1 is uninstalled but no messages that 1.0 is installed (although it really is)
(6) put 1.1 again into dropins
(7) see that 1.1 is installed, but no mention of 1.0 uninstalled
Comment 1 DJ Houghton CLA 2011-07-18 15:27:52 EDT
What build are you using? When performing these steps on build N20110717-2000 I see the correct debug information printed to the console [1] when I remove v1.1 but when I add it back I do not see the removal of v1.0 in the console. [2]

When stepping through and debugging, the operands in the plan when adding v1.1 back to the dropins looks like this:
   [R]singleton 1.0.0 --> [R]singleton 1.1.0
So it appears running the reconciler in debug mode does not print out details for IUs which are updated. 

I assume that it is just the debug information that you are concerned about, and the behaviour of the reconciler is still correct?

[1]
[p2] [reconciler] Adding IU: singleton 1.0.0
[p2] [reconciler] Adding IU property: singleton 1.0.0->{org.eclipse.equinox.p2.type.lock=1, org.eclipse.equinox.p2.internal.inclusion.rules=OPTIONAL, org.eclipse.equinox.p2.reconciler.dropins=true}
[p2] [reconciler] Removing IU: singleton 1.1.0

[2]
[p2] [reconciler] [dropins] Interesting feature or bundle added: /Users/equinox/Downloads/eclipse/dropins/singleton_1.1.0.jar
[p2] [reconciler] Adding IU: singleton 1.1.0
[p2] [reconciler] No installable units to remove.
Comment 2 DJ Houghton CLA 2011-07-18 15:57:54 EDT
Note you can get debug information about the operands themselves by turning on the following debug flag:
  org.eclipse.equinox.p2.core/planner/operands=true
Comment 3 Krzysztof Daniel CLA 2011-07-19 05:15:48 EDT
DJ,

thanks for the attention. The real problem I have is that the plan verifier from the 3.6 maintenance branch is fooled. The IProvisioningPlan contains only
#getAdditions and #getRemovals. 

Blocking unadvised installation works fine, but if you try to revert some small allowed changes (minor updates like test fixes), the plan knowns that certain plugins will be uninstalled, but does not know they will be replaced. So the operation is so dangerous that it is blocked.
Comment 4 DJ Houghton CLA 2011-07-19 11:01:59 EDT
Sorry, I'm still a little confused. In 3.6.2 I am debugging the code and when I come across the plan in SimplePlanner#verifyPlan I execute the following code:
	plan.getAdditions().query(QueryUtil.createIUAnyQuery(), null).toArray(IInstallableUnit.class);
	plan.getRemovals().query(QueryUtil.createIUAnyQuery(), null).toArray(IInstallableUnit.class);

And I see the correct IUs being added/removed. 

Can you be more specific with the details of the problem you are seeing?
Comment 5 Krzysztof Daniel CLA 2011-07-20 10:05:13 EDT
I tried to reproduce again today, but it worked as expected.
Feel free to close this bug as worksforme. 

BTW. could you release the patch that is attached here? It just adds more debugging information.
Comment 6 DJ Houghton CLA 2011-07-21 13:43:53 EDT
Patch released to 3.6 maintenance branch. I'm not sure how you want to consume this, I don't know if there is a 3.6 build scheduled.
Comment 7 DJ Houghton CLA 2011-07-21 15:04:21 EDT
(released to both CVS and Git repos)