You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ozone.apache.org by "Siyao Meng (Jira)" <ji...@apache.org> on 2026/10/19 00:58:00 UTC
[jira] [Updated] (HDDS-17115) Add readiness gate for service servlets and shared startup progress page
[ https://issues.apache.org/jira/browse/HDDS-17115?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Siyao Meng updated HDDS-17115:
------------------------------
Description:
* Add {{BaseHttpServer#addServiceServlet}} and {{setServiceReady()}}. Until the service is ready, those servlets return 503 with Retry-After, and the real servlet is not created or initialized, so it never sees partially constructed service state.
* Add {{StartupProgress.Step#setDone}} for progress read from existing counters (applied Raft index, safe mode rule counts).
* Move the datanode Startup Progress page (HDDS-17107) into the shared web assets so OM and SCM can reuse it.
h3. Implementation notes
The gate is a wrapper servlet, not a filter: Jetty initializes a servlet before the filters in front of it run, so a filter could not keep the real servlet from initializing early. The wrapper creates the real servlet on the first request after {{setServiceReady()}}. Authentication filters still run first, so unauthenticated requests are rejected as before.
h3. Dependencies
*Depends on HDDS-17107.* HDDS-17115.001.diff applies on top of the HDDS-17107 change (https://github.com/apache/ozone/pull/11611), not on plain master. This change on its own only adds the gate; HDDS-17116 (SCM) and HDDS-17117 (OM) use it.
Testing: TestBaseHttpServer (new serviceServletAnswers503UntilReady), TestStartupProgress (new setDone); manual check of the datanode overview banner and Startup Progress page with Playwright.
was:
* Add {{BaseHttpServer#addServiceServlet}} and {{setServiceReady()}}. A filter mapped to those servlets returns 503 with Retry-After until the service is ready, so the servlets are not initialized against partially constructed service state.
* Add {{StartupProgress.Step#setDone}} and a per-step baseline for the remaining time estimate, for progress read from existing counters (applied Raft index, safe mode rule counts).
* Move the datanode Startup Progress page (HDDS-17107) into the shared web assets so OM and SCM can reuse it.
> Add readiness gate for service servlets and shared startup progress page
> ------------------------------------------------------------------------
>
> Key: HDDS-17115
> URL: https://issues.apache.org/jira/browse/HDDS-17115
> Project: Apache Ozone
> Issue Type: Sub-task
> Components: server-framework
> Reporter: Siyao Meng
> Priority: Major
> Attachments: HDDS-17115.001.diff
>
>
> * Add {{BaseHttpServer#addServiceServlet}} and {{setServiceReady()}}. Until the service is ready, those servlets return 503 with Retry-After, and the real servlet is not created or initialized, so it never sees partially constructed service state.
> * Add {{StartupProgress.Step#setDone}} for progress read from existing counters (applied Raft index, safe mode rule counts).
> * Move the datanode Startup Progress page (HDDS-17107) into the shared web assets so OM and SCM can reuse it.
> h3. Implementation notes
> The gate is a wrapper servlet, not a filter: Jetty initializes a servlet before the filters in front of it run, so a filter could not keep the real servlet from initializing early. The wrapper creates the real servlet on the first request after {{setServiceReady()}}. Authentication filters still run first, so unauthenticated requests are rejected as before.
> h3. Dependencies
> *Depends on HDDS-17107.* HDDS-17115.001.diff applies on top of the HDDS-17107 change (https://github.com/apache/ozone/pull/11611), not on plain master. This change on its own only adds the gate; HDDS-17116 (SCM) and HDDS-17117 (OM) use it.
> Testing: TestBaseHttpServer (new serviceServletAnswers503UntilReady), TestStartupProgress (new setDone); manual check of the datanode overview banner and Startup Progress page with Playwright.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For additional commands, e-mail: issues-help@ozone.apache.org