I wanted to say something like you explained that you don't do: I
expected that Felix will do something like this:
If I have a bundle A that is exporting a package P that is used by
bundle B, when I uninstall the bundle A, package P will still be
available. But when I uninstall bundle B the package P will no longer
be available (usage count becomes 0).

I also tried the following: In the context of the example above:
uninstall first bundle B, refresh bundle A, uninstall bundle A,
install again bundle B. But still bundle B gets resolved. Is that
expected?

-> ps
START LEVEL 6
   ID   State         Level  Name
[   0] [Active     ] [    0] System Bundle (1.0.4)
[   1] [Active     ] [    5] Apache Felix Bundle Repository (1.1.0.SNAPSHOT)
[   2] [Active     ] [    1] osgi.compendium (4.0.1)
[   3] [Active     ] [    1] OPS4J Pax Url - classpath: (0.3.2.SNAPSHOT)
[   4] [Active     ] [    1] OPS4J Pax Url - mvn: (0.3.2.SNAPSHOT)
[   5] [Active     ] [    1] OPS4J Pax Url - war:, war-i: (0.3.2.SNAPSHOT)
[   6] [Active     ] [    1] OPS4J Pax Url - wrap: (0.3.2.SNAPSHOT)
[   7] [Active     ] [    1] Apache Felix Shell Service (1.0.1)
[   8] [Active     ] [    1] Apache Felix Shell TUI (1.0.1)
-> uninstall 1
-> ps
START LEVEL 6
   ID   State         Level  Name
[   0] [Active     ] [    0] System Bundle (1.0.4)
[   2] [Active     ] [    1] osgi.compendium (4.0.1)
[   3] [Active     ] [    1] OPS4J Pax Url - classpath: (0.3.2.SNAPSHOT)
[   4] [Active     ] [    1] OPS4J Pax Url - mvn: (0.3.2.SNAPSHOT)
[   5] [Active     ] [    1] OPS4J Pax Url - war:, war-i: (0.3.2.SNAPSHOT)
[   6] [Active     ] [    1] OPS4J Pax Url - wrap: (0.3.2.SNAPSHOT)
[   7] [Active     ] [    1] Apache Felix Shell Service (1.0.1)
[   8] [Active     ] [    1] Apache Felix Shell TUI (1.0.1)
-> refresh 2
-> ps
START LEVEL 6
   ID   State         Level  Name
[   0] [Active     ] [    0] System Bundle (1.0.4)
[   2] [Active     ] [    1] osgi.compendium (4.0.1)
[   3] [Active     ] [    1] OPS4J Pax Url - classpath: (0.3.2.SNAPSHOT)
[   4] [Active     ] [    1] OPS4J Pax Url - mvn: (0.3.2.SNAPSHOT)
[   5] [Active     ] [    1] OPS4J Pax Url - war:, war-i: (0.3.2.SNAPSHOT)
[   6] [Active     ] [    1] OPS4J Pax Url - wrap: (0.3.2.SNAPSHOT)
[   7] [Active     ] [    1] Apache Felix Shell Service (1.0.1)
[   8] [Active     ] [    1] Apache Felix Shell TUI (1.0.1)
-> uninstall 2
-> ps
START LEVEL 6
   ID   State         Level  Name
[   0] [Active     ] [    0] System Bundle (1.0.4)
[   3] [Active     ] [    1] OPS4J Pax Url - classpath: (0.3.2.SNAPSHOT)
[   4] [Active     ] [    1] OPS4J Pax Url - mvn: (0.3.2.SNAPSHOT)
[   5] [Active     ] [    1] OPS4J Pax Url - war:, war-i: (0.3.2.SNAPSHOT)
[   6] [Active     ] [    1] OPS4J Pax Url - wrap: (0.3.2.SNAPSHOT)
[   7] [Active     ] [    1] Apache Felix Shell Service (1.0.1)
[   8] [Active     ] [    1] Apache Felix Shell TUI (1.0.1)
-> install mvn:org.apache.felix/org.apache.felix.bundlerepository/1.1.0-SNAPSHOT
Bundle ID: 9
-> ps
START LEVEL 6
   ID   State         Level  Name
[   0] [Active     ] [    0] System Bundle (1.0.4)
[   3] [Active     ] [    1] OPS4J Pax Url - classpath: (0.3.2.SNAPSHOT)
[   4] [Active     ] [    1] OPS4J Pax Url - mvn: (0.3.2.SNAPSHOT)
[   5] [Active     ] [    1] OPS4J Pax Url - war:, war-i: (0.3.2.SNAPSHOT)
[   6] [Active     ] [    1] OPS4J Pax Url - wrap: (0.3.2.SNAPSHOT)
[   7] [Active     ] [    1] Apache Felix Shell Service (1.0.1)
[   8] [Active     ] [    1] Apache Felix Shell TUI (1.0.1)
[   9] [Installed  ] [    5] Apache Felix Bundle Repository (1.1.0.SNAPSHOT)
-> start 9
-> ps
START LEVEL 6
   ID   State         Level  Name
[   0] [Active     ] [    0] System Bundle (1.0.4)
[   3] [Active     ] [    1] OPS4J Pax Url - classpath: (0.3.2.SNAPSHOT)
[   4] [Active     ] [    1] OPS4J Pax Url - mvn: (0.3.2.SNAPSHOT)
[   5] [Active     ] [    1] OPS4J Pax Url - war:, war-i: (0.3.2.SNAPSHOT)
[   6] [Active     ] [    1] OPS4J Pax Url - wrap: (0.3.2.SNAPSHOT)
[   7] [Active     ] [    1] Apache Felix Shell Service (1.0.1)
[   8] [Active     ] [    1] Apache Felix Shell TUI (1.0.1)
[   9] [Active     ] [    5] Apache Felix Bundle Repository (1.1.0.SNAPSHOT)


On Mon, Jul 28, 2008 at 9:50 PM, Richard S. Hall <[EMAIL PROTECTED]> wrote:
> Alin Dreghiciu wrote:
>>
>> You are right. The citation was from 4.0.1. I looked into 4.1.0 and
>> there this statement is gone and has been replaced by "If none of the
>> old exports are used, then the old exports must be removed. Otherwise,
>> all old exports must remain available for existing bundles and future
>> resolves until the refreshPackages method is called or the Framework
>> is restarted."
>>
>> But even in this situation when I uninstall the obr bundle I would say
>> that we are in the first situation "If none of the old exports are
>> used, then the old exports must be removed.", And I do not think that
>> ths should be related to the order I uninstall the bundles. It sounds
>> like if the usage count for an exported package of an uninstalled
>> bundle reaches 0 the exported package must be removed. Do you think is
>> something more about the subject on 4.2?
>>
>
> I don't think there is more on the subject, but I don't totally understand
> what you are saying.
>
> We only check the usage count once when we uninstall the bundle. If it is
> used, then we don't automatically refresh the uninstalled bundle. We don't
> then monitor subsequent refreshes of other bundles and how they impact the
> usage count of already uninstalled so that we can automatically refresh the
> previously uninstalled bundles when their usage count dynamically goes to
> zero. The spec doesn't mandates such behavior, although I think it would be
> allowable.
>
> -> richard
>
>> On Mon, Jul 28, 2008 at 9:23 PM, Richard S. Hall <[EMAIL PROTECTED]>
>> wrote:
>>
>>>
>>> From my interpretation of the spec, a bundle is only refreshed if it is
>>> pending removal. In this case OBR, is not pending removal.
>>>
>>> For your example 2, I am pretty sure that this has been changed and that
>>> you
>>> are free to use uninstalled packages to resolve new dependencies. I am
>>> not
>>> sure if this was added in 4.1 or will be added in 4.2, but I am fairly
>>> certain it was changed.
>>>
>>> -> richard
>>>
>>> Alin Dreghiciu wrote:
>>>
>>>>
>>>> Indeed the complete refresh worked as can be seen bellow on <Example
>>>> 1>. But that still does not comply to the specs in my view as on doing
>>>> refresh on a bundle the framework should re-resolve the bundle. At
>>>> least that is what I got from the specs, but the specs are not very
>>>> clear about this. Maybe I should post a clarification issue with OSGi
>>>> Alliance. And equinox/kf does that but they may be wrong interpreting
>>>> the specs.
>>>>
>>>> In <Example 2> you can find a different case with even uninstalling
>>>> the obr bundle and then install it again. The obr bundle still gets
>>>> resolved. And about this the specs are clear (section 4.3.8):
>>>> "Packages of uninstalled bundles must not be used by newly installed
>>>> bundles..."
>>>>
>>>> <Example 1>
>>>> -------------------
>>>> -> ps
>>>> START LEVEL 6
>>>>  ID   State         Level  Name
>>>> [   0] [Active     ] [    0] System Bundle (1.0.4)
>>>> [   1] [Active     ] [    5] Apache Felix Bundle Repository
>>>> (1.1.0.SNAPSHOT)
>>>> [   2] [Active     ] [    1] osgi.compendium (4.0.1)
>>>> [   3] [Active     ] [    1] Apache Felix Shell Service (1.0.1)
>>>> [   4] [Active     ] [    1] Apache Felix Shell TUI (1.0.1)
>>>> -> headers 1
>>>>
>>>> Apache Felix Bundle Repository (1)
>>>> ----------------------------------
>>>> Tool = Bnd-0.0.238
>>>> Bundle-Activator = org.apache.felix.bundlerepository.Activator
>>>> Created-By = Apache Maven Bundle Plugin
>>>> Bnd-LastModified = 1217270914325
>>>> Export-Service = org.osgi.service.obr.RepositoryAdmin
>>>> Built-By = alindreghiciu
>>>> Private-Package =
>>>>
>>>>
>>>> org.apache.felix.bundlerepository,org.apache.felix.bundlerepository.metadataparser,org.apache.felix.bundlerepository.metadataparser.kxmlsax,org.kxml2.io,org.kxml2.kdom,org.kxml2.wap,org.kxml2.wap.syncml,org.kxml2.wap.wml,org.kxml2.wap.wv,org.xmlpull.v1
>>>> Export-Package =
>>>> org.osgi.service.obr;uses:="org.osgi.framework";version="1.0"
>>>> Bundle-Version = 1.1.0.SNAPSHOT
>>>> Bundle-License = http://www.apache.org/licenses/LICENSE-2.0.txt
>>>> Build-Jdk = 1.5.0_13
>>>> Bundle-Source =
>>>>
>>>>
>>>> http://oscar-osgi.sf.net/obr2/org.apache.felix.bundlerepository/org.apache.felix.bundlerepository-1.1.0-SNAPSHOT-src.jar
>>>> Manifest-Version = 1.0
>>>> Bundle-Vendor = The Apache Software Foundation
>>>> Bundle-ManifestVersion = 2
>>>> Bundle-Url =
>>>>
>>>> http://oscar-osgi.sf.net/obr2/org.apache.felix.bundlerepository/org.apache.felix.bundlerepository-1.1.0-SNAPSHOT.jar
>>>> DynamicImport-Package = org.apache.felix.shell
>>>> Bundle-DocURL =
>>>> http://oscar-osgi.sf.net/obr2/org.apache.felix.bundlerepository/
>>>> Import-Package =
>>>>
>>>>
>>>> org.osgi.framework;version="1.3",org.osgi.service.log;version="1.3.0",org.osgi.service.obr;version="1.0"
>>>> Bundle-Name = Apache Felix Bundle Repository
>>>> Ignore-Package = org.xml.sax,javax.xml.parsers
>>>> Bundle-Description = Bundle repository service.
>>>> Bundle-SymbolicName = org.apache.felix.bundlerepository
>>>> -> uninstall 2
>>>> -> ps
>>>> START LEVEL 6
>>>>  ID   State         Level  Name
>>>> [   0] [Active     ] [    0] System Bundle (1.0.4)
>>>> [   1] [Active     ] [    5] Apache Felix Bundle Repository
>>>> (1.1.0.SNAPSHOT)
>>>> [   3] [Active     ] [    1] Apache Felix Shell Service (1.0.1)
>>>> [   4] [Active     ] [    1] Apache Felix Shell TUI (1.0.1)
>>>> -> refresh 1
>>>> -> ps
>>>> START LEVEL 6
>>>>  ID   State         Level  Name
>>>> [   0] [Active     ] [    0] System Bundle (1.0.4)
>>>> [   1] [Active     ] [    5] Apache Felix Bundle Repository
>>>> (1.1.0.SNAPSHOT)
>>>> [   3] [Active     ] [    1] Apache Felix Shell Service (1.0.1)
>>>> [   4] [Active     ] [    1] Apache Felix Shell TUI (1.0.1)
>>>> -> refresh
>>>> -> ps
>>>> START LEVEL 6
>>>>  ID   State         Level  Name
>>>> [   0] [Active     ] [    0] System Bundle (1.0.4)
>>>> [   1] [Installed  ] [    5] Apache Felix Bundle Repository
>>>> (1.1.0.SNAPSHOT)
>>>> [   3] [Active     ] [    1] Apache Felix Shell Service (1.0.1)
>>>> [   4] [Active     ] [    1] Apache Felix Shell TUI (1.0.1)
>>>> -> start 1
>>>> org.osgi.framework.BundleException: Unresolved package in bundle 1:
>>>> package; (&(package=org.osgi.service.log)(version>=1.3.0))->
>>>>
>>>> <Example 2>
>>>> -------------------
>>>> -> ps
>>>> START LEVEL 6
>>>>  ID   State         Level  Name
>>>> [   0] [Active     ] [    0] System Bundle (1.0.4)
>>>> [   1] [Active     ] [    5] Apache Felix Bundle Repository
>>>> (1.1.0.SNAPSHOT)
>>>> [   2] [Active     ] [    1] osgi.compendium (4.0.1)
>>>> [   3] [Active     ] [    1] OPS4J Pax Url - classpath: (0.3.2.SNAPSHOT)
>>>> [   4] [Active     ] [    1] OPS4J Pax Url - mvn: (0.3.2.SNAPSHOT)
>>>> [   5] [Active     ] [    1] OPS4J Pax Url - war:, war-i:
>>>> (0.3.2.SNAPSHOT)
>>>> [   6] [Active     ] [    1] OPS4J Pax Url - wrap: (0.3.2.SNAPSHOT)
>>>> [   7] [Active     ] [    1] Apache Felix Shell Service (1.0.1)
>>>> [   8] [Active     ] [    1] Apache Felix Shell TUI (1.0.1)
>>>> -> uninstall 2
>>>> -> uninstall 1
>>>> -> ps
>>>> START LEVEL 6
>>>>  ID   State         Level  Name
>>>> [   0] [Active     ] [    0] System Bundle (1.0.4)
>>>> [   3] [Active     ] [    1] OPS4J Pax Url - classpath: (0.3.2.SNAPSHOT)
>>>> [   4] [Active     ] [    1] OPS4J Pax Url - mvn: (0.3.2.SNAPSHOT)
>>>> [   5] [Active     ] [    1] OPS4J Pax Url - war:, war-i:
>>>> (0.3.2.SNAPSHOT)
>>>> [   6] [Active     ] [    1] OPS4J Pax Url - wrap: (0.3.2.SNAPSHOT)
>>>> [   7] [Active     ] [    1] Apache Felix Shell Service (1.0.1)
>>>> [   8] [Active     ] [    1] Apache Felix Shell TUI (1.0.1)
>>>> -> install
>>>> mvn:org.apache.felix/org.apache.felix.bundlerepository/1.1.0-SNAPSHOT
>>>> Bundle ID: 9
>>>> -> ps
>>>> START LEVEL 6
>>>>  ID   State         Level  Name
>>>> [   0] [Active     ] [    0] System Bundle (1.0.4)
>>>> [   3] [Active     ] [    1] OPS4J Pax Url - classpath: (0.3.2.SNAPSHOT)
>>>> [   4] [Active     ] [    1] OPS4J Pax Url - mvn: (0.3.2.SNAPSHOT)
>>>> [   5] [Active     ] [    1] OPS4J Pax Url - war:, war-i:
>>>> (0.3.2.SNAPSHOT)
>>>> [   6] [Active     ] [    1] OPS4J Pax Url - wrap: (0.3.2.SNAPSHOT)
>>>> [   7] [Active     ] [    1] Apache Felix Shell Service (1.0.1)
>>>> [   8] [Active     ] [    1] Apache Felix Shell TUI (1.0.1)
>>>> [   9] [Installed  ] [    5] Apache Felix Bundle Repository
>>>> (1.1.0.SNAPSHOT)
>>>> -> start 9
>>>> -> ps
>>>> START LEVEL 6
>>>>  ID   State         Level  Name
>>>> [   0] [Active     ] [    0] System Bundle (1.0.4)
>>>> [   3] [Active     ] [    1] OPS4J Pax Url - classpath: (0.3.2.SNAPSHOT)
>>>> [   4] [Active     ] [    1] OPS4J Pax Url - mvn: (0.3.2.SNAPSHOT)
>>>> [   5] [Active     ] [    1] OPS4J Pax Url - war:, war-i:
>>>> (0.3.2.SNAPSHOT)
>>>> [   6] [Active     ] [    1] OPS4J Pax Url - wrap: (0.3.2.SNAPSHOT)
>>>> [   7] [Active     ] [    1] Apache Felix Shell Service (1.0.1)
>>>> [   8] [Active     ] [    1] Apache Felix Shell TUI (1.0.1)
>>>> [   9] [Active     ] [    5] Apache Felix Bundle Repository
>>>> (1.1.0.SNAPSHOT)
>>>> ->
>>>>
>>>>
>>>> On Mon, Jul 28, 2008 at 7:43 PM, Karl Pauls <[EMAIL PROTECTED]> wrote:
>>>>
>>>>
>>>>>
>>>>> I think the issue is that you did only refresh the obr bundle. The
>>>>> other
>>>>> bundle is still around and can be used until the framework is
>>>>> refreshed.
>>>>> Can
>>>>> you try whether doing a complete refresh makes a difference?
>>>>>
>>>>> regards,
>>>>>
>>>>> Karl
>>>>>
>>>>> Von meinem iPhone gesendet
>>>>>
>>>>> Am 28.07.2008 um 18:58 schrieb "Alin Dreghiciu" <[EMAIL PROTECTED]>:
>>>>>
>>>>>
>>>>>
>>>>>>
>>>>>> Hi guys,
>>>>>>
>>>>>> While working on FELIX-482 I had the following (interesting)
>>>>>> situation:
>>>>>>
>>>>>> 1. I had obr bundle importing org.osgi.service.log package (not
>>>>>> optional
>>>>>> import)
>>>>>> 2. On a new felix instance I installed the the osgi compendium bundle
>>>>>> that exports the log package
>>>>>> 3. Installed obr bundle. The obr bundle gets resolved and could be
>>>>>> started (as expected till now)
>>>>>> 4. Uninstalled the cosgi compendium bundle
>>>>>> 5. Refreshed packages for obr bundle. But the obr bundle was still
>>>>>> resolved and could be started. This is the part I did not expect.
>>>>>>
>>>>>> Is this a known bug? Out of curiosity I did the same on equinox/kf and
>>>>>> as expected on step 5 the obr bundle could not be resolved.
>>>>>>
>>>>>> --
>>>>>> Alin Dreghiciu
>>>>>> http://www.ops4j.org - New Energy for OSS Communities - Open
>>>>>> Participation Software.
>>>>>> http://www.qi4j.org - New Energy for Java - Domain Driven Development.
>>>>>> http://malaysia.jayway.net - New Energy for Projects - Great People
>>>>>> working on Great Projects at Great Places
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>
>>
>>
>>
>



-- 
Alin Dreghiciu
http://www.ops4j.org - New Energy for OSS Communities - Open
Participation Software.
http://www.qi4j.org - New Energy for Java - Domain Driven Development.
http://malaysia.jayway.net - New Energy for Projects - Great People
working on Great Projects at Great Places

Reply via email to