Bug 256414 - [planner] Change the Projector so that it doesn't query ALL IU's
Summary: [planner] Change the Projector so that it doesn't query ALL IU's
Status: RESOLVED WONTFIX
Alias: None
Product: Equinox
Classification: Eclipse Project
Component: p2 (show other bugs)
Version: 3.4.1   Edit
Hardware: All All
: P3 enhancement (vote)
Target Milestone: ---   Edit
Assignee: P2 Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords: performance
Depends on: 256411
Blocks: 256418
  Show dependency tree
 
Reported: 2008-11-25 06:14 EST by Thomas Hallgren CLA
Modified: 2020-02-20 05:48 EST (History)
4 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Thomas Hallgren CLA 2008-11-25 06:14:25 EST
At present, the Projector (the interface to SAT4J) will issue a query for all available IU's. When used together with a database that potentially contains millions of IU's, this will consume a lot of time and resources.

Proposal:
The Projector is passed an array of roots. A special Query could be created that requested the transitive closure of all IU's that provide at least one of the required capabilities listed in those roots. This is analog to a very naive resolution and it would potentially render a lot of false positives. It would however reach two major objectives:

1. The result would be limited and potentially only consist of a fairly small part of a huge set of IU's.
2. The result would contain all possible candidates for the remaning part of the resolution.
Comment 1 Pascal Rapicault CLA 2008-12-03 11:34:20 EST
Having a TransitiveIUQuery is an interesting direction, however I think some pretty good improvements could be obtained by improving the Collector (bug #256411) and have it for example return something queryale itself.
The other thing to be careful around the TransitiveIUQuery is to make sure that in the end all the repos are still consulted for every requirement to be satisfied. 
And finally, the implementation of this query would likely require some smart at the repository level to be able to cache and not do the work over and over again.
Comment 2 Thomas Hallgren CLA 2008-12-03 18:05:50 EST
(In reply to comment #1)
> Having a TransitiveIUQuery is an interesting direction, however I think some
> pretty good improvements could be obtained by improving the Collector (bug
> #256411) and have it for example return something queryale itself.

In our case that would be similar to returning a Collector that represents the whole database. Such a collector must be passed by reference.

The solution I had in mind would collect a finite set of objects and then pass them by value.

The difference in performance would probably be very significant since this initial query is the one and only query that the Projector does against it's initial set of meta-data repositories. All subsequent queries are performed on the collected result.

> The other thing to be careful around the TransitiveIUQuery is to make sure
> that in the end all the repos are still consulted for every requirement to be
> satisfied.

If all IU's that provides at least one of the required capabilities are collected then you will potentially get a lot of false positives but I don't think there is any way you can miss anything that is relevant. 
Comment 3 Eclipse Webmaster CLA 2019-09-06 16:17:10 EDT
This bug hasn't had any activity in quite some time. Maybe the problem got resolved, was a duplicate of something else, or became less pressing for some reason - or maybe it's still relevant but just hasn't been looked at yet.

If you have further information on the current state of the bug, please add it. The information can be, for example, that the problem still occurs, that you still want the feature, that more information is needed, or that the bug is (for whatever reason) no longer relevant.
Comment 4 Ed Merks CLA 2020-02-20 05:48:12 EST
This issue has gone stale.