In theory, fileinstall is supposed to compute a checksum of the files and
thus be able to detect real changes.
So at a first glance, it does not really seem a desired behavior, but given
we use a listener, things may be a little more subtle.

On Tue, Oct 2, 2012 at 5:47 PM, Gareth <gareth.o.coll...@gmail.com> wrote:

> Hello,
>
> I have some questions about FileInstall/Blueprint in apache karaf 2.2.9.
>
> I created for myself a custom karaf installation that by default puts a
> blueprint file into the deploy directory which is available on first
> startup.
>
> Unfortunately I found a small race condition with doing this. Sometimes, on
> first startup, fileinstall will try to process the file before blueprint is
> initialized so I see the following error:
>
> 2012-10-01 18:39:44,386 | ERROR | []:[] | pw-133-61/deploy |
> BlueprintDeploymentListener      | rint.BlueprintDeploymentListener   65 |
> 12 - org.apache.karaf.deployer.blueprint - 2.2.8 | Unable to build
> blueprint
> application bundle
> java.net.MalformedURLException: unknown protocol: blueprint
>         at java.net.URL.<init>(URL.java:395)[:1.6.0_29]
>         at java.net.URL.<init>(URL.java:283)[:1.6.0_29]
>         at java.net.URL.<init>(URL.java:306)[:1.6.0_29]
>         at
>
> org.apache.karaf.deployer.blueprint.BlueprintDeploymentListener.transform(BlueprintDeploymentListener.java:63)[12:org.apache.karaf.deployer.blueprint:2.2.8]
>         at
>
> org.apache.felix.fileinstall.internal.DirectoryWatcher.transformArtifact(DirectoryWatcher.java:548)[6:org.apache.felix.fileinstall:3.2.4]
>         at
>
> org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:467)[6:org.apache.felix.fileinstall:3.2.4]
>         at
>
> org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:291)[6:org.apache.felix.fileinstall:3.2.4]
>
> To get around this issue in the past (apache karaf 2.2.5), I had setup
> fileinstall to delay checking the deploy directory:
>
> felix.fileinstall.poll    = 30000
> felix.fileinstall.start.level = 80
> felix.fileinstall.noInitialDelay = true
>
> Whilst this works fine on karaf 2.2.5, when I update to karaf 2.2.9 this
> causes me problems on karaf restarts. This configuration now causes my
> bundle to be started then stopped/started again on the first check of the
> deploy directory (fileinstall refreshes the bundle even though there has
> been no change). I suspect this new behaviour is caused by the following
> change in felix fileinstall 3.2.2:
>
>     * [FELIX-3398] - Track new versions of artifact listener and optionally
> update all bundles when a new version is detected
>
> Given all this information, I have the following questions:
>
> (1) Am I doing anything wrong here? Is it bad form for me to put a file in
> the deploy directory before first karaf startup? I am putting it in the
> deploy directory rather than creating a bundle so I can mess with the
> blueprint file if needed. I put it in the deploy directory on initial start
> as this application is static - I am not going to be updating bundles after
> initial install.
>
> (2) Is it a bug for felix fileinstall to refresh the bundle even though
> nothing has changed...or should I just be accepting that it will always do
> this? I ask because, as my application is static and initializes a lot of
> resources, I hadn't planned to worry too much about clean start/stop/start
> (I only run this app in OSGi as it shares a lot of code with my real OSGi
> work).
>
> Any suggestions would be greatly appreciated.
>
> thanks in advance,
> Gareth
>
>
>
>
>
>
>
>
> --
> View this message in context:
> http://karaf.922171.n3.nabble.com/Startup-Race-Conditions-For-FileInstall-Blueprint-tp4026233.html
> Sent from the Karaf - User mailing list archive at Nabble.com.
>



-- 
------------------------
Guillaume Nodet
------------------------
Blog: http://gnodet.blogspot.com/
------------------------
FuseSource, Integration everywhere
http://fusesource.com

Reply via email to