Hi Jörg,

there is the option "autoDisableFilter" [1] in the ServiceUnavailableFilter - if true the filter automatically unregisters itself upon first non-503 result. Once unregistered it listens to FrameworkEvent.STARTLEVEL_CHANGED events to reregister once needed (the shutdown case). During normal operations (that includes deployments that might cause the selected "systemalive" checks to be temporarily unavailable) the filter is not active (which is also good from a performance perspective).

So really, all that would be needed to replace oas-startupfilter + -disabler and oas-starter-startup is the simple config [2] in the oas-starter provisioning model.

-Georg

[1] https://github.com/apache/felix/blob/d5245ba3ba306b57b83c4d5c6cfe499d955b0acb/healthcheck/core/src/main/java/org/apache/felix/hc/core/impl/filter/ServiceUnavailableFilter.java#L98

[2]

   org.apache.felix.hc.core.impl.filter.ServiceUnavailableFilter
    tags=["systemalive]
osgi.http.whiteboard.context.select="(&(osgi.http.whiteboard.context.name\=*)(!(osgi.http.whiteboard.context.name\=org.osgi.service.http)))"
    osgi.http.whiteboard.filter.regex=".*"
    autoDisableFilter=B"true"


On 2019-04-07 19:49, Jörg Hoh wrote:
Hi Georg,

Merging the 2 implementations oas-startupfilter + -disabler and
oas-starter-startup makes fully sense to me, although I am bit hesitant by
replacing the basic approach.

these 2 have a rather static assumption, when the application is up, and their sole purpose is to indicate that. And once the system is up, it's up
and this state remains unchanged until the startupfilterDisabler is
deactivated. A healthcheck based implementation can changed its mind based on many factors, you already mentioned the fact that key services should be
available. If these services go down during runtime, the status of this
check changes.

If I understand you correctly, then the semantic of the startup itself
might not change, but it's more likely, that the unavailability of such a
key service would cause the Filter to kick again, changing
runtime-behavior; currently it does not.

Is this intended?

Jörg


Am Sa., 6. Apr. 2019 um 00:24 Uhr schrieb Georg Henzler <[email protected]
:

Hi all,

we have currently two mechanisms in Sling to wait for startup:

* sling-org-apache-sling-startupfilter +
sling-org-apache-sling-startupfilter-disabler
* sling-org-apache-sling-starter-startup (only used for the starter
application AFAIK)

Now that systemready in Felix is fully migrated to Felix Health Checks I
would like to rely on ServiceUnavailableFilter [1] instead. The
advantage is that this filter can be configured in a declarative fashion
(what is required to be alive can be configured, e.g. for a customer
project it's easy to wait for additional custom services) and 503 is
also correctly sent upon shutdown.

Is this approach something everyone is ok with?

-Georg

[1]

https://github.com/apache/felix/blob/trunk/healthcheck/core/src/main/java/org/apache/felix/hc/core/impl/filter/ServiceUnavailableFilter.java

Reply via email to