Community
Participate
Working Groups
With the new code base many of the trace options for org.eclipse.osgi are either missing or no longer make sense. We need to do an overall review of the trace options, clean up any that are no longer used (from the .options file) and implement ones that still make sense.
Probably not for M3.
implement debug/bundleTime trace option: http://git.eclipse.org/c/equinox/rt.equinox.framework.git/commit/?id=cb819b33e6508a855297d4f69051701465014201 Add access to DebugOptions service from ModuleContainerAdaptor: http://git.eclipse.org/c/equinox/rt.equinox.framework.git/commit/?id=533922fd66895d1261b0c9f7b97bfac2a2bc40c1 implement debug/startlevel trace option: http://git.eclipse.org/c/equinox/rt.equinox.framework.git/commit/?id=1799a0278506d5fd5bf0e17f9e02b3c61cb9c062 implement monditor/activation trace option: http://git.eclipse.org/c/equinox/rt.equinox.framework.git/commit/?id=2eef54b2d72bb35bb6f7718c3a691980c68f21d6 properly document debug/location option: http://git.eclipse.org/c/equinox/rt.equinox.framework.git/commit/?id=e0277da6b404476293d2a002ff17e91fcbbaee76 implement debug/cachedmanifest trace option: http://git.eclipse.org/c/equinox/rt.equinox.framework.git/commit/?id=347b72dc6d4f40b241a6cfea2d11be53e653caa9 remove some unnecessary flags: http://git.eclipse.org/c/equinox/rt.equinox.framework.git/commit/?id=28c40b451f7e5562f93b0bbdd60d8de2ab27a0a3 Still have much more review to do: - Need to clean up the .options file when we are done - Need resolver trace options - Need package admin trace options? (maybe this just is included in resolver?) - Review options for profile tracing - Likely remove any options for monitor and tracing of classes/resoruces - move trace options for old plugin converter to org.eclipse.osgi.compatibility.plugins - move trace options for platformadmin to org.eclipse.osgi.compatibility.state
Assigning to John for more work. Please focus on the options to trace resolving first as they are the most important.
*** Bug 421604 has been marked as a duplicate of this bug. ***
Review patch in bug 421604.
With regard to the resolver trace options, the following list is from the current .options file. # Turns on debugging for the resolver org.eclipse.osgi/resolver/debug = false # Prints out wiring information after the resolver has completed the resolve process org.eclipse.osgi/resolver/wiring = false # Prints out Import-Package information org.eclipse.osgi/resolver/imports = false # Prints out Require-Bundle information org.eclipse.osgi/resolver/requires = false # Prints out debug information form the "uses" clause org.eclipse.osgi/resolver/uses = false # Prints out cycle information org.eclipse.osgi/resolver/cycles = false # Prints out Eclipse-GenericRequire information org.eclipse.osgi/resolver/generics = false From bug 421604, we also have the following. # In combination with org.eclipse.osgi/resolver/uses, prints out # information about encountered conflicts for each attempt. org.eclipse.osgi/resolver/conflicts = false Other candidates include the following. # Prints out information about all matching capabilities found # for requirements. org.eclipse.osgi/resolver/providers
I started remote topic branch jross/420067 under rt.equinox.framework. I've done an initial implementation of the org.eclipse.osgi/resolver/providers trace option [2]. Specifying org.eclipse.osgi/resolver/providers = true within the .options file will enable trace output describing what's happening between the resolve context and resolver when finding providers. A list of the current output follows. (1) The requirement for which providers are being found. (2) Capabilities filtered because their effective directive was not equal to "resolve". (3) Capabilities filtered by resolver hooks via the filterMatches method. (4) Capabilities filtered because their resource was no resolved. (5) Capabilities filtered because the requirer did not have permission. (6) Capabilities filtered because the provider did not have permission. (7) Capabilities filtered because they were disabled. (8) Capabilities filtered because they were substituted. (9) The list of capabilities being returned to the resolver after filtering. I tried to format the output so that it's easily readable using line separators and tabs. The risk, of course, is that while it might look good in the console output, it could look horrible when System.out is routed to some third-party logging mechanism. [1] http://git.eclipse.org/c/equinox/rt.equinox.framework.git/log/?h=jross/420067 [2] http://git.eclipse.org/c/equinox/rt.equinox.framework.git/commit/?h=jross/420067&id=2046b15cb2782c9e2c88db37d5afc841439eb2b9
I added support for a new resolver trace option. Setting org.eclipse.osgi/resolver/hooks = true will print out everything filtered by resolver hooks. Information is printed out separately for each method: filterMatches, filterResolvable, and filterSingletonCollisions. The filterMatches information is now printed for both DEBUG_PROVIDERS and DEBUG_HOOKS. http://git.eclipse.org/c/equinox/rt.equinox.framework.git/commit/?h=jross/420067&id=635eecaa7f6a449a4725139750cefd55719e279e
Another resolver trace option added. Setting org.eclipse.osgi/resolver/uses = true will print out information about uses constraint violations. http://git.eclipse.org/c/equinox/rt.equinox.framework.git/commit/?h=jross/420067&id=84ca40c1f02946057f490f1f192a9c541c32e2e4
(In reply to John Ross from comment #9) > Another resolver trace option added. > > Setting org.eclipse.osgi/resolver/uses = true will print out information > about uses constraint violations. > > http://git.eclipse.org/c/equinox/rt.equinox.framework.git/commit/?h=jross/ > 420067&id=84ca40c1f02946057f490f1f192a9c541c32e2e4 Here's a sample message. RESOLVER: Uses constraint violation Resource osgi.identity; osgi.identity="uses4"; type="osgi.bundle"; version:Version="0.0.0" Error Uses constraint violation. Unable to resolve resource uses4 [osgi.identity; osgi.identity="uses4"; type="osgi.bundle"; version:Version="0.0.0"] because it is exposed to package 'q' from resources uses3 [osgi.identity; osgi.identity="uses3"; type="osgi.bundle"; version:Version="0.0.0"] and uses2 [osgi.identity; osgi.identity="uses2"; type="osgi.bundle"; version:Version="0.0.0"] via two dependency chains. Chain 1: uses4 [osgi.identity; osgi.identity="uses4"; type="osgi.bundle"; version:Version="0.0.0"] import: (&(osgi.wiring.package=q)(version>=2.0.0)) | export: osgi.wiring.package: q uses3 [osgi.identity; osgi.identity="uses3"; type="osgi.bundle"; version:Version="0.0.0"] Chain 2: uses4 [osgi.identity; osgi.identity="uses4"; type="osgi.bundle"; version:Version="0.0.0"] import: (osgi.wiring.package=p) | export: osgi.wiring.package=p; uses:=q uses1 [osgi.identity; osgi.identity="uses1"; type="osgi.bundle"; version:Version="0.0.0"] import: (&(osgi.wiring.package=q)(&(version>=1.0.0)(version<=1.0.0))) | export: osgi.wiring.package: q uses2 [osgi.identity; osgi.identity="uses2"; type="osgi.bundle"; version:Version="0.0.0"]
Michael, Is the sample message in comment 10 regarding uses constraint violations an acceptable substitute for bug 421604 in kepler?
Hi John, Yes, this looks great! :) Just to clarify, this information will be logged also for initial conflicts, right?
(In reply to Michael Adada from comment #12) > Hi John, > Yes, this looks great! :) > Just to clarify, this information will be logged also for initial conflicts, > right? Correct. Violations are printed out as they happen throughout the resolution process.
Added support for the org.eclipse.osgi/resolver/wiring resolver trace option. Setting org.eclipse.osgi/resolver/wiring = true will print out the wiring information for all bundles that were resolved as part of the resolution. http://git.eclipse.org/c/equinox/rt.equinox.framework.git/commit/?h=jross/420067&id=95827f8e17935a2aa4349eb1087d52e726b246f7
Added support for the org.eclipse.osgi/resolver/report resolver trace option. Setting org.eclipse.osgi/resolver/report = true will print out the resolution report information. http://git.eclipse.org/c/equinox/rt.equinox.framework.git/commit/?h=jross/420067&id=bd64dbe9635db929753a6dfb375effc171622f78
I pushed the changes to master with two additional changes: 1) the debug boolean option fields need to be non-static to allow multiple framework instances to be configured with different trace options: http://git.eclipse.org/c/equinox/rt.equinox.framework.git/commit/?id=38ce3e64440c1f5b4d2414987af381845829f78d 2) Handle an NPE when the wires object is null for printWirings. This can happen if all the mandator triggers got disabled: http://git.eclipse.org/c/equinox/rt.equinox.framework.git/commit/?id=c287ef5b61a6fb158f319411cf3752ffb7c5c108
*** Bug 292774 has been marked as a duplicate of this bug. ***