Skip to content

I20200104-0625

@jhonnen jhonnen tagged this 18 Dec 11:47
During TargetDefinition.resolve, P2TargetUtils resolves all
IUBundleContainers in a single pass. When IUBundleContainer::resolve is
called after that, the container is already resolved.

Calling P2TargetUtils::synchronize again would then pointlessly
re-resolve this container. Even worse, because the P2TargetUtils
instance is shared across all IUBundleContainers, it would re-resolve
also all other containers.

In effect, given a target with N IUBundleContainers, each would be
resolved 2N+1 times (2x by resolveBundles/Features of every container
plus the initial single-pass).

The P2TargetUtils::synchronize call is only guarded by a resolved check
and not removed completely for the case where only a single container is
resolved instead of its parent TargetDefinition.


Change-Id: Ib3f3d6f24595250f1986c19777132632dabd802d
Signed-off-by: Julian Honnen <julian.honnen@vector.com>
Assets 2
Loading