Hello,

I suffer from a problem I found using FileInstall 2.0.0 on Felix 2.0.0

When I use my GUI to delete a Jar file in the fileinstall-watched directory, fileinstall tries 2 times nearly at the same time (milliseconds - to seconds) to uninstall the bundle.
This happens always and I always get to same errors:

10-20 10:28:26.325: INFO/System.out(4989): Uninstalled /sdcard/ FelixOSGiBundles/de.mnsoft.mapservice.layer1.qypeimpl_1.0.0.jar

10-20 10:28:30.425: INFO/System.out(4989): ERROR: org.apache.felix.framework.cache.BundleArchive: Unable to record state - java.io.FileNotFoundException: /data/data/de.mnsoft.felixhostapp/ files/felix/cache/bundle20/bundle.state 10-20 10:28:30.435: INFO/System.out(4989): ERROR: Error writing persistent state to bundle archive. (java.io.FileNotFoundException: / data/data/de.mnsoft.felixhostapp/files/felix/cache/bundle20/ bundle.state)

10-20 10:28:30.435: WARN/System.err(4989): java.io.FileNotFoundException: /data/data/de.mnsoft.felixhostapp/files/ felix/cache/bundle20/bundle.state 10-20 10:28:30.435: WARN/System.err(4989): at org.apache.harmony.luni.platform.OSFileSystem.open(OSFileSystem.java: 231) 10-20 10:28:30.435: WARN/System.err(4989): at java.io.FileOutputStream.<init>(FileOutputStream.java:96) 10-20 10:28:30.435: WARN/System.err(4989): at java.io.FileOutputStream.<init>(FileOutputStream.java:69) 10-20 10:28:30.435: WARN/System.err(4989): at org .apache .felix .framework.util.SecureAction.getFileOutputStream(SecureAction.java:440) 10-20 10:28:30.435: WARN/System.err(4989): at org .apache .felix .framework.cache.BundleArchive.setPersistentState(BundleArchive.java: 361) 10-20 10:28:30.445: WARN/System.err(4989): at org .apache .felix .framework.BundleImpl.setPersistentStateUninstalled(BundleImpl.java:760) 10-20 10:28:30.445: WARN/System.err(4989): at org.apache.felix.framework.Felix.uninstallBundle(Felix.java:2197) 10-20 10:28:30.445: WARN/System.err(4989): at org.apache.felix.framework.BundleImpl.uninstall(BundleImpl.java:950) 10-20 10:28:30.445: WARN/System.err(4989): at org .apache .felix .fileinstall.internal.DirectoryWatcher.uninstall(DirectoryWatcher.java: 724) 10-20 10:28:30.445: WARN/System.err(4989): at org .apache .felix .fileinstall.internal.DirectoryWatcher.uninstall(DirectoryWatcher.java: 600) 10-20 10:28:30.445: WARN/System.err(4989): at org .apache .felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java: 285)

10-20 10:28:30.445: INFO/System.out(4989): ERROR: org.apache.felix.framework.cache.BundleArchive: Unable to record last modification time - java.io.FileNotFoundException: /data/data/ de.mnsoft.felixhostapp/files/felix/cache/bundle20/bundle.lastmodified

10-20 10:28:30.455: INFO/System.out(4989): ERROR: Error writing last modification time to bundle archive. (java.io.FileNotFoundException: / data/data/de.mnsoft.felixhostapp/files/felix/cache/bundle20/ bundle.lastmodified) 10-20 10:28:30.455: WARN/System.err(4989): java.io.FileNotFoundException: /data/data/de.mnsoft.felixhostapp/files/ felix/cache/bundle20/bundle.lastmodified 10-20 10:28:30.455: WARN/System.err(4989): at org.apache.harmony.luni.platform.OSFileSystem.open(OSFileSystem.java: 231) 10-20 10:28:30.455: WARN/System.err(4989): at java.io.FileOutputStream.<init>(FileOutputStream.java:96) 10-20 10:28:30.455: WARN/System.err(4989): at java.io.FileOutputStream.<init>(FileOutputStream.java:69) 10-20 10:28:30.455: WARN/System.err(4989): at org .apache .felix .framework.util.SecureAction.getFileOutputStream(SecureAction.java:440) 10-20 10:28:30.455: WARN/System.err(4989): at org .apache .felix .framework.cache.BundleArchive.setLastModified(BundleArchive.java:532) 10-20 10:28:30.465: WARN/System.err(4989): at org.apache.felix.framework.BundleImpl.setLastModified(BundleImpl.java: 486) 10-20 10:28:30.465: WARN/System.err(4989): at org.apache.felix.framework.Felix.uninstallBundle(Felix.java:2219) 10-20 10:28:30.465: WARN/System.err(4989): at org.apache.felix.framework.BundleImpl.uninstall(BundleImpl.java:950) 10-20 10:28:30.465: WARN/System.err(4989): at org .apache .felix .fileinstall.internal.DirectoryWatcher.uninstall(DirectoryWatcher.java: 724) 10-20 10:28:30.465: WARN/System.err(4989): at org .apache .felix .fileinstall.internal.DirectoryWatcher.uninstall(DirectoryWatcher.java: 600) 10-20 10:28:30.475: WARN/System.err(4989): at org .apache .felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java: 285)

10-20 10:28:30.485: INFO/System.out(4989): Uninstalled /sdcard/ FelixOSGiBundles/de.mnsoft.mapservice.layer1.qypeimpl_1.0.0.jar



It seems that the first "pass" removes the directory in cache directory, and the second "pass" tries to write into the gone directory.(which causes error)

BUT: the bundle is uninstalled (and deleted from watched dir)


When I try to reinstall the same bundle (e.g. copy the jar file again into watched dir) I also get errors:

10-20 10:40:46.735: INFO/System.out(4989): ERROR: org.apache.felix.framework.cache.JarRevision: Unable to create revision directory. 10-20 10:40:46.735: INFO/System.out(4989): ERROR: Unable to update the bundle. (java.io.IOException: Unable to create archive directory.) 10-20 10:40:46.735: WARN/System.err(4989): java.io.IOException: Unable to create archive directory. 10-20 10:40:46.735: WARN/System.err(4989): at org .apache.felix.framework.cache.JarRevision.initialize(JarRevision.java: 141) 10-20 10:40:46.745: WARN/System.err(4989): at org.apache.felix.framework.cache.JarRevision.<init>(JarRevision.java:79) 10-20 10:40:46.745: WARN/System.err(4989): at org .apache .felix .framework .cache.BundleArchive.createRevisionFromLocation(BundleArchive.java:998) 10-20 10:40:46.745: WARN/System.err(4989): at org .apache.felix.framework.cache.BundleArchive.revise(BundleArchive.java: 629) 10-20 10:40:46.745: WARN/System.err(4989): at org.apache.felix.framework.BundleImpl.revise(BundleImpl.java:1043) 10-20 10:40:46.745: WARN/System.err(4989): at org.apache.felix.framework.Felix.updateBundle(Felix.java:1835) 10-20 10:40:46.745: WARN/System.err(4989): at org.apache.felix.framework.BundleImpl.update(BundleImpl.java:908) 10-20 10:40:47.105: DEBUG/dalvikvm(4989): GC freed 45351 objects / 2138144 bytes in 359ms 10-20 10:40:47.105: WARN/System.err(4989): at org .apache .felix .fileinstall.internal.DirectoryWatcher.update(DirectoryWatcher.java:762) 10-20 10:40:47.105: WARN/System.err(4989): at org .apache .felix .fileinstall.internal.DirectoryWatcher.update(DirectoryWatcher.java:621) 10-20 10:40:47.105: WARN/System.err(4989): at org .apache .felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java: 286)

10-20 10:40:47.125: INFO/System.out(4989): Failed to update artifact / sdcard/FelixOSGiBundles/ de.mnsoft.mapservice.layer3.qypeimpl_1.0.0.jar: org.osgi.framework.BundleException: Update of bundle de.mnsoft.mapservice.layer3.qypeimpl [24] failed. 10-20 10:40:47.145: INFO/System.out(4989): org.osgi.framework.BundleException: Update of bundle de.mnsoft.mapservice.layer3.qypeimpl [24] failed. 10-20 10:40:47.145: INFO/System.out(4989): at org.apache.felix.framework.Felix.updateBundle(Felix.java:1966) 10-20 10:40:47.145: INFO/System.out(4989): at org.apache.felix.framework.BundleImpl.update(BundleImpl.java:908) 10-20 10:40:47.155: INFO/System.out(4989): at org .apache .felix .fileinstall.internal.DirectoryWatcher.update(DirectoryWatcher.java:762) 10-20 10:40:47.155: INFO/System.out(4989): at org .apache .felix .fileinstall.internal.DirectoryWatcher.update(DirectoryWatcher.java:621) 10-20 10:40:47.155: INFO/System.out(4989): at org .apache .felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java: 286) 10-20 10:40:47.155: INFO/System.out(4989): Caused by: java.io.IOException: Unable to create archive directory. 10-20 10:40:47.155: INFO/System.out(4989): at org .apache.felix.framework.cache.JarRevision.initialize(JarRevision.java: 141) 10-20 10:40:47.155: INFO/System.out(4989): at org.apache.felix.framework.cache.JarRevision.<init>(JarRevision.java:79) 10-20 10:40:47.155: INFO/System.out(4989): at org .apache .felix .framework .cache.BundleArchive.createRevisionFromLocation(BundleArchive.java:998) 10-20 10:40:47.165: INFO/System.out(4989): at org .apache.felix.framework.cache.BundleArchive.revise(BundleArchive.java: 629) 10-20 10:40:47.165: INFO/System.out(4989): at org.apache.felix.framework.BundleImpl.revise(BundleImpl.java:1043) 10-20 10:40:47.165: INFO/System.out(4989): at org.apache.felix.framework.Felix.updateBundle(Felix.java:1835)
10-20 10:40:47.165: INFO/System.out(4989):     ... 4 more


Then he installs the bundle new which then works. I don't know if this behavior is wanted by the author. I have got a simular "double execution problem" with an Bundle- installing and starting activator which is loaded ate framework startup (using "felix.systembundle.activators") If I avoid the double start in my Loader-Activator the Bundles aren't installed. If I allow it, *sometimes* I receive error about that he could not read the jar file.

For me all this sounds like threading problems. Usually there are only millisoconds or max. 3-4 seconds between this strange double-calls.



Does someone know abaout this behavior or knows how to avoid that it occurs?



regards
Matthias

Reply via email to