Currently Sling Installer JCR Provider would listen for observation event and would perform a rescan every 500 msec upon receiving any observation event.
This at times cause issue when large number of bundles get updated in repository say via installation of bug fixing content package. Further if same content package also updates the repository bundle then it causes issues as repository bundle might get updated midway while content package is still being deployed
Based on Felix Meschberger suggestion this can be done via introducing a signalling mechanism between component which installs package and JCR Installer. It would work something like this
- JCR Installer would check if there is any node under /system/sling/installer/jcr/pauseInstallation as a signal to pause installation.
- Package installer would create a child node under the above path before installing the package and remove it post installation
This should also address the issue in cluster deployment