| Summary: | [reconciler] Add more debug info for reconciler | ||||||
|---|---|---|---|---|---|---|---|
| Product: | [Eclipse Project] Equinox | Reporter: | Krzysztof Daniel <krzysztof.daniel> | ||||
| Component: | p2 | Assignee: | 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: |
|
||||||
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.
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 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. 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? 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. 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. (released to both CVS and Git repos) |
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