In the last few days we got a few maintenance released for the 0.9.x release branch and some more progress on the upcoming 0.10.0 version.
Package Drone 0.9.4
Due do the fact that the system grows (which is a good thing) it also gets more complex. This caused a few issues in the 0.9.x release which indicates that it is time to re-think the release policy (a thing which is not written down). In the past there was rarely a milestone release and never actually a release branch. This worked quite well for some time, but it turns out that we passed the point of being able to make such quick releases any longer. The beginning with the 0.9.x release we now have a maintenance branch for 0.9.x releases and will provide a set of milestone releases for the next major release 0.10.0, before doing the final 0.10.0 release. This also means that releases will take longer, but possibly can have more changes in each release.
Milestone release 0.10.0-m1
This brings us to the first milestone release, 0.10.0-m1. Beside the usual minor fixes and cleanups it contains the new RPM and YUM aspects and adapters and contains a re-written locking mechnism in order to finally fix issue #97. It also tries to give MySQL a second chance. Due to the fact that MySQL actually does quite a few table locks, it is impossible to use MySQL for concurrently accessing different channels. The new locking manager will take care of this and lock the complete storage service for write operations. Of course this is not an optimal solution, therefore it is recommended to use PostgreSQL instead, which allows to access different channels in parallel.
Apache Felix Configuration Admin
Also will we try to finally fix issue #103 by switching the Configuration Admin implementation from Eclipse Equinox to Apache Felix. Oh how wonderful OSGi can be 😉 Yes, we are switching a system service from one OSGi implementation to another one.
Beside fixing this one issue which causes troubles when upgrading, the Apache Felix implementation also stores the configuration in plain property files, which can be read and edited manually. Beside that it is possible to use a storage directory outside the
data storage area of OSGi, so that it can be placed anywhere in the file system. This also allows pre-provisioning all configuration outside the OSGi container.
OSGi HTTP service
Package Drone still uses its own Jetty based OSGi setup. Jetty itself brings some very extensible OSGi functionality, but does not provide an OSGi HTTP service. Therefore it is not possible right now to add servlets using the HttpService or the HTTP whiteboard pattern, a thing which is required it we want to add a real REST interface.
The problem is that, although Eclipse Equinox provides an HttpService based on a recent version of Jetty (9.2.x), it currently contains a blocking issue, #467859. There is a fix in Eclipse Gerrit, but unfortunately this seems to break some functionality in Liferay, so the fix was rolled back. So maybe it is necessary to fork this specific module of Equinox in order to use the HttpService based approach.
See the new YUM help screen in action: