It would also be beneficial to know if it's possible to avoid caching
feature files.

It's quite common for someone to change the configuration section of a
feature file in the deploy directory and restart only to have their changes
ignored because the feature file has been cached.  Having a startup flag
that says "don't cache features" that the bundle deployer would honor would
be most helpful.


-c

On Wed, Jul 7, 2010 at 6:12 PM, Matt Tennant <[email protected]> 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.
>
> 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]
>
>

Reply via email to