Hi Stefan,

Thanks for setting this up, very helpful.

On Thu, 2022-03-10 at 16:33 +0000, Stefan Seifert wrote:
> during release process of Sling 12 we discovered SLING-11189 [1]
> which happens only on certain windows environments, but is there a
> blocker as Sling-Initial-Content from bundles like composum (may
> affect other apps as well) are corrupted during extraction, actually
> breaking the application. the root cause is a race condition on sling
> startup where the content reader implementations are registered after
> the whiteboard for handling them is registered, and after the first
> bundles are actually processed.
> 
> to solve this we have multiple approaches, i want to do a quick vote
> on these options to unblock the release:

Any of a-z would actually work for me. I would prefer we don't lose the
benefit of declarative services, if at all possible.

One constraint I would like us to keep is to not log additional
WARN/ERROR entries, so b) would likely need to be combined with a) into
c), or be adjusted.

FWIW, this is how this is how a similar problem is approached in Oak
[5].

Thanks,
Robert
> 
> a) apply only PR #12 [2] which simply defines a mandatory dependency
> between the whiteboard and the 4 built-in readers via DS. the list of
> mandatory readers is hardcoded in the code.
> 
> b) apply only PR #13 [3] which introduces a new directive
> "requireImportProviders" allowing bundles to actually define which
> import providers they depend on, and if those are not there the
> importing of the initial content is delayed until they become
> available. if the directive is missing a default list is assumed
> which is configurable via OSGi (and defaults to the 4 built-in
> readers). the current implementation has the small drawback that it
> prints out some error messages in case the bundle processing is
> delayed, even if it's only for a few milliseconds due to sling
> startup.
> 
> c) combine PR #12 [2] and PR #13 [3] to avoid the error messages for
> the built-in readers.
> 
> d) look for other solutions, e.g. implementing a) "the other way
> around" by having the whiteboard register the reader implementations
> itself, which probably means moving away from DS for those reader
> service implementations.
> 
> z) take more time for discussing the options a)-d) and go with
> workaround from [4] for Sling 12 which fixes this issue via
> configuration only for Sling Starter, not in the content loader
> bundle itself.
> 
> please cast your votes on this options.
> 
> stefan
> 
> [1] https://issues.apache.org/jira/browse/SLING-11189
> [2]
> https://github.com/apache/sling-org-apache-sling-jcr-contentloader/pull/12
> [3]
> https://github.com/apache/sling-org-apache-sling-jcr-contentloader/pull/13
> [4] https://github.com/apache/sling-org-apache-sling-starter/pull/59

[5]:
https://github.com/apache/jackrabbit-oak/blob/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/internal/SecurityProviderRegistration.java

Reply via email to