Hi Richard,

Thank you for your quick response, as usual.

I hope you are right.  I am going to keep that refreshPackages call in
there after any uninstall and monitor it for awhile.  When I try to test
the prodecure myself, it doesn't seem to matter whether I call
refreshPackages or not after an uninstall, the bundle's cache is gone.
Since I cannot recreate the problem where multiple bundle caches are not
cleaned up I don't know whether this will help when it happens again.

Thanks,
Matt

-----Original Message-----
From: Richard S. Hall [mailto:[email protected]] 
Sent: Wednesday, July 07, 2010 3:20 PM
To: [email protected]
Subject: Re: bundle cache version directories



On 7/7/10 6:12 PM, Matt Tennant wrote:
> I was wrong about what org.osgi.framework.storage.clean=onFirstInit was
> doing.  It turns out that it is deleting the entire bundle cache
directory
> and starting from scratch.  I thought it was simply removing unused
files
> and directories, which is less useful to me.  I guess I was doing some
> wishful thinking.
>
> So I guess I should ask a new question.  Is there support for what I
> thought that option was doing?  Basically, I want the caches for bundles
> that are still in use to survive, but anything else, especially caches
for
> uninstalled bundles, to get removed.

A refresh operation will do that.

If you are not seeing this behavior, then either you are doing something 
wrong or you uncovered a bug.

The correct procedure is to uninstall some bundles, call 
refreshPackages(), after which the uninstalled bundles should be removed 
from the cache.

-> richard

> Some background: I cannot just nuke the bundle cache directory because
> some bundles have been previously installed from remote URLs, and I
cannot
> repeat that operation every time the framework starts up.  Bundles
> previously installed this way must be preserved.  Also, a few times we
> have seen bundle cache directories get extremely bloated with caches for
> bundles that are no longer installed.  On an embedded device this is
> catastrophic.  Perhaps PackageAdmin.refreshPackages will solve this
> problem, but it's hard to test for sure because the problem has not been
> easily repeated.  I have a workaround the looks for these directories
> manually, but the workaround is very Felix-specific and I try to avoid
> that sort of thing.
>
> Thanks for any help,
> Matt
>
> -----Original Message-----
> From: Matt Tennant [mailto:[email protected]]
> Sent: Wednesday, July 07, 2010 2:02 PM
> To: [email protected]
> Subject: RE: bundle cache version directories
>
> Hi all,
>
> I have a follow up question from this thread I started some time ago.
> Since then, I have been trying out the following property and value:
> org.osgi.framework.storage.clean=onFirstInit
>
> Which appears to work well, and removes extraneous directories and files
> from my bundle cache directory shortly after startup.  Note that it
> doesn't matter whether these directories and files were originally
created
> by Felix.  If they are in the bundle cache directory, they are removed.
>
> I also tried calling refreshPackages(null) on the PackageAdmin service
> object at runtime.  When I do this, the message "FrameworkEvent PACKAGES
> REFRESHED" is logged.  It may be doing something, but the behavior is
not
> the same as with the org.osgi.framework.storage.clean property.
> Extraneous directories and files are not removed.
>
> I was expecting the behavior to be the same between the two approaches.
> Can somebody please explain the distinction?  Is there runtime access to
> the behavior that org.osgi.framework.storage.clean exhibits?
>
> In case there is some confusion, I am not worrying about precisely the
> same problem as in the original thread, but instead solving a problem
> where occasionally old bundle caches are present for bundles that are no
> longer in use.
>
> Thank you,
> Matt
>
> -----Original Message-----
> From: Richard S. Hall [mailto:[email protected]]
> Sent: Thursday, June 03, 2010 12:00 PM
> To: [email protected]
> Subject: Re: bundle cache version directories
>
> On 6/3/10 14:01, Matt Tennant wrote:
>> That was a useful read, thank you.  It leaves me with just one
question:
>> what triggers a framework refresh?  (other than a startup/shutdown)
>>
> Explicitly calling PackageAdmin.refreshPackages(), which is done by
> getting the PackageAdmin service or the Felix shell provides a "refresh"
> command.
>
> ->  richard
>
>>    From this point onward I will make a note of whether I ever see
> multiple
>> version directories at a point in time when I should not.
>>
>> Thanks!
>> Matt
>>
>> -----Original Message-----
>> From: Richard S. Hall [mailto:[email protected]]
>> Sent: Thursday, June 03, 2010 5:50 AM
>> To: [email protected]
>> Subject: Re: bundle cache version directories
>>
>> On 6/2/10 19:20, Matt Tennant wrote:
>>
>>> Hi all,
>>>
>>>
>>>
>>> I have a question about the "versionX.X" directories inside the Felix
>>> bundle cache.  I am using Felix 2.0.0, and I often see something like
>>>
>> the
>>
>>> following in my bundle cache directory:
>>>
>>>
>>>
>>>
>>>
>>>> ls -l
>>>>
>>>>
>>> bundle0
>>>
>>> bundle1
>>>
>>> ...
>>>
>>>
>>>
>>>
>>>
>>>> cd bundle0
>>>>
>>>>
>>>
>>>> ls -l
>>>>
>>>>
>>> version0.1
>>>
>>> version0.0
>>>
>>> bundle.location
>>>
>>> bundle.startlevel
>>>
>>> bundle.lastmodified
>>>
>>> bundle.id
>>>
>>> bundle.state
>>>
>>>
>>>
>>>
>>>
>>>> ls -l version0.0
>>>>
>>>>
>>> bundle.jar
>>>
>>>
>>>
>>>> ls -l version0.1
>>>>
>>>>
>>> bundle.jar
>>>
>>>
>>>
>>> What I mean to be pointing out here are the two "bundle.jar" files in
>>>
>> two
>>
>>> different "versionX.X" directories in the cache area for one bundle.
>>>
>> What
>>
>>> is the reason that I might get more than one of these?  How can I
avoid
>>> that?  I have limited space on the device our product runs on, and
even
>>> the size of these jar files can make a difference.
>>>
>>>
>>>
>>> Note that I am using the autodeploy feature with actions
>>> "install,start,update".  Sometimes the original bundle jars in the
>>> autodeploy directory change from one run to the next.
>>>
>>>
>> You might want to read:
>>
>>
> http://felix.apache.org/site/apache-felix-framework-bundle-cache.html
>> Typically, what you are seeing is the result of doing updates. However,
>> typically the extra JAR files should be deleted after a refresh.
>>
>> Starting with "install,start,update" causes the update, but generally
>> i'd assume you'd autorefresh during startup so you wouldn't see
>> additional JAR files. Perhaps you could verify that refreshing is
>> deleting the JAR files. If so, you could verify that they are
>> automatically getting deleted on startup.
>>
>> By and large, after your framework starts I'd expect there to be no
>> additional JAR files and after it stops I'd expect there to be no
>> additional JAR files too. At run time, it just depends on whether
you've
>> updated and not refreshed yet.
>>
>> ->   richard
>>
>>
>>> Thanks,
>>>
>>> Matt
>>>
>>>
>>>
>>>
>>>
>>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [email protected]
>> For additional commands, e-mail: [email protected]
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [email protected]
>> For additional commands, e-mail: [email protected]
>>
>>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to