This is an automated email from the ASF dual-hosted git repository.
rexxiong pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/celeborn.git
The following commit(s) were added to refs/heads/main by this push:
new 8c65ddd01 [CELEBORN-1390] ServletContextHandler should allow null path
info to avoid redirection
8c65ddd01 is described below
commit 8c65ddd017f126ff463b995a425daeca29e04150
Author: SteNicholas <[email protected]>
AuthorDate: Wed Apr 17 15:09:04 2024 +0800
[CELEBORN-1390] ServletContextHandler should allow null path info to avoid
redirection
### What changes were proposed in this pull request?
`ServletContextHandler` allows null path info to avoid redirection via
`setAllowNullPathInfo(true)`.
### Why are the changes needed?
`ServletContextHandler` does not allow null path info which causes that
`celeborn.metrics.prometheus.path` and `celeborn.metrics.json.path` could not
access without redirection. For example:
```
celebornceleborn-test:/data/service/celeborn$ curl
http://localhost:9096/metrics/prometheus
celebornceleborn-test:/data/service/celeborn$ curl
http://localhost:9096/metrics/prometheus/
metrics_WriteDataHardSplitCount_Count{role="Worker"} 0 1713182689795
metrics_ReplicateDataWriteFailCount_Count{role="Worker"} 0 1713182689795
metrics_ReplicateDataConnectionExceptionCount_Count{role="Worker"} 0
1713182689795
metrics_FetchChunkFailCount_Count{role="Worker"} 0 1713182689795
metrics_ReplicateDataCreateConnectionFailCount_Count{role="Worker"} 0
1713182689795
metrics_WriteDataSuccessCount_Count{role="Worker"} 0 1713182689795
metrics_FetchChunkSuccessCount_Count{role="Worker"} 0 1713182689795
metrics_ReplicateDataFailCount_Count{role="Worker"} 0 1713182689795
metrics_RegionStartFailCount_Count{role="Worker"} 0 1713182689795
metrics_RegionFinishFailCount_Count{role="Worker"} 0 1713182689795
metrics_ActiveConnectionCount_Count{role="Worker"} 0 1713182689795
metrics_SlotsAllocated_Count{role="Worker"} 0 1713182689795
metrics_OpenStreamSuccessCount_Count{role="Worker"} 0 1713182689795
metrics_WriteDataFailCount_Count{role="Worker"} 0 1713182689795
metrics_ReplicateDataFailNonCriticalCauseCount_Count{role="Worker"} 0
1713182689795
metrics_ReplicateDataTimeoutCount_Count{role="Worker"} 0 1713182689795
metrics_PushDataHandshakeFailCount_Count{role="Worker"} 0 1713182689795
metrics_OpenStreamFailCount_Count{role="Worker"} 0 1713182689795
```
`ServletContextHandler` should allow null path info to avoid redirection
via `setAllowNullPathInfo(true)`. `setAllowNullPathInfo()` sets true if
`/context` is not redirected to `/context/`.
### Does this PR introduce _any_ user-facing change?
No.
### How was this patch tested?
- `ApiMasterResourceSuite`
- `ApiWorkerResourceSuite`
```
celebornceleborn-test:/data/service/celeborn$ curl
http://localhost:9096/metrics/prometheus
metrics_WriteDataHardSplitCount_Count{role="Worker"} 0 1713182689795
metrics_ReplicateDataWriteFailCount_Count{role="Worker"} 0 1713182689795
metrics_ReplicateDataConnectionExceptionCount_Count{role="Worker"} 0
1713182689795
metrics_FetchChunkFailCount_Count{role="Worker"} 0 1713182689795
metrics_ReplicateDataCreateConnectionFailCount_Count{role="Worker"} 0
1713182689795
metrics_WriteDataSuccessCount_Count{role="Worker"} 0 1713182689795
metrics_FetchChunkSuccessCount_Count{role="Worker"} 0 1713182689795
metrics_ReplicateDataFailCount_Count{role="Worker"} 0 1713182689795
metrics_RegionStartFailCount_Count{role="Worker"} 0 1713182689795
metrics_RegionFinishFailCount_Count{role="Worker"} 0 1713182689795
metrics_ActiveConnectionCount_Count{role="Worker"} 0 1713182689795
metrics_SlotsAllocated_Count{role="Worker"} 0 1713182689795
metrics_OpenStreamSuccessCount_Count{role="Worker"} 0 1713182689795
metrics_WriteDataFailCount_Count{role="Worker"} 0 1713182689795
metrics_ReplicateDataFailNonCriticalCauseCount_Count{role="Worker"} 0
1713182689795
metrics_ReplicateDataTimeoutCount_Count{role="Worker"} 0 1713182689795
metrics_PushDataHandshakeFailCount_Count{role="Worker"} 0 1713182689795
metrics_OpenStreamFailCount_Count{role="Worker"} 0 1713182689795
celebornceleborn-test:/data/service/celeborn$ curl
http://localhost:9096/metrics/prometheus/
metrics_WriteDataHardSplitCount_Count{role="Worker"} 0 1713182689795
metrics_ReplicateDataWriteFailCount_Count{role="Worker"} 0 1713182689795
metrics_ReplicateDataConnectionExceptionCount_Count{role="Worker"} 0
1713182689795
metrics_FetchChunkFailCount_Count{role="Worker"} 0 1713182689795
metrics_ReplicateDataCreateConnectionFailCount_Count{role="Worker"} 0
1713182689795
metrics_WriteDataSuccessCount_Count{role="Worker"} 0 1713182689795
metrics_FetchChunkSuccessCount_Count{role="Worker"} 0 1713182689795
metrics_ReplicateDataFailCount_Count{role="Worker"} 0 1713182689795
metrics_RegionStartFailCount_Count{role="Worker"} 0 1713182689795
metrics_RegionFinishFailCount_Count{role="Worker"} 0 1713182689795
metrics_ActiveConnectionCount_Count{role="Worker"} 0 1713182689795
metrics_SlotsAllocated_Count{role="Worker"} 0 1713182689795
metrics_OpenStreamSuccessCount_Count{role="Worker"} 0 1713182689795
metrics_WriteDataFailCount_Count{role="Worker"} 0 1713182689795
metrics_ReplicateDataFailNonCriticalCauseCount_Count{role="Worker"} 0
1713182689795
metrics_ReplicateDataTimeoutCount_Count{role="Worker"} 0 1713182689795
metrics_PushDataHandshakeFailCount_Count{role="Worker"} 0 1713182689795
metrics_OpenStreamFailCount_Count{role="Worker"} 0 1713182689795
Closes #2464 from SteNicholas/CELEBORN-1390.
Authored-by: SteNicholas <[email protected]>
Signed-off-by: Shuang <[email protected]>
---
.../celeborn/server/common/http/HttpUtils.scala | 20 ++++++++++++--------
1 file changed, 12 insertions(+), 8 deletions(-)
diff --git
a/service/src/main/scala/org/apache/celeborn/server/common/http/HttpUtils.scala
b/service/src/main/scala/org/apache/celeborn/server/common/http/HttpUtils.scala
index b9b6a3ec2..521edae1c 100644
---
a/service/src/main/scala/org/apache/celeborn/server/common/http/HttpUtils.scala
+++
b/service/src/main/scala/org/apache/celeborn/server/common/http/HttpUtils.scala
@@ -75,7 +75,6 @@ private[celeborn] object HttpUtils extends Logging {
def createStaticHandler(
resourceBase: String,
contextPath: String): ServletContextHandler = {
- val contextHandler = new ServletContextHandler()
val holder = new ServletHolder(classOf[DefaultServlet])
Option(Thread.currentThread().getContextClassLoader.getResource(resourceBase))
match {
case Some(res) =>
@@ -83,17 +82,12 @@ private[celeborn] object HttpUtils extends Logging {
case None =>
throw new CelebornException("Could not find resource path for Web UI:
" + resourceBase)
}
- contextHandler.setContextPath(contextPath)
- contextHandler.addServlet(holder, "/")
- contextHandler
+ createContextHandler(contextPath, holder)
}
def createServletHandler(contextPath: String, servlet: HttpServlet):
ServletContextHandler = {
- val handler = new ServletContextHandler()
val holder = new ServletHolder(servlet)
- handler.setContextPath(contextPath)
- handler.addServlet(holder, "/")
- handler
+ createContextHandler(contextPath, holder)
}
def createRedirectHandler(src: String, dest: String): ServletContextHandler
= {
@@ -125,4 +119,14 @@ private[celeborn] object HttpUtils extends Logging {
createServletHandler(src, redirectedServlet)
}
+
+ def createContextHandler(
+ contextPath: String,
+ servletHolder: ServletHolder): ServletContextHandler = {
+ val contextHandler = new ServletContextHandler()
+ contextHandler.setContextPath(contextPath)
+ contextHandler.addServlet(servletHolder, "/")
+ contextHandler.setAllowNullPathInfo(true)
+ contextHandler
+ }
}