This is an automated email from the ASF dual-hosted git repository.
morningman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-doris.git
The following commit(s) were added to refs/heads/master by this push:
new b3cb1e2 [bug] Fix the bug that http redirects to master cannot be
authenticated, and redirect several http interfaces to master. (#6557)
b3cb1e2 is described below
commit b3cb1e271dab8109784c0d92b187776efb71f8af
Author: luozenglin <[email protected]>
AuthorDate: Mon Sep 6 11:00:39 2021 +0800
[bug] Fix the bug that http redirects to master cannot be authenticated,
and redirect several http interfaces to master. (#6557)
Redirect the following http requests to master:
/rest/v2/api/cluster_overview
/rest/v2/manager/node/frontends
/rest/v2/manager/node/backends
/rest/v2/manager/node/brokers
---
.../apache/doris/httpv2/rest/RestBaseController.java | 11 +++++++----
.../apache/doris/httpv2/rest/manager/NodeAction.java | 19 ++++++++++++-------
.../apache/doris/httpv2/restv2/StatisticAction.java | 6 +++++-
3 files changed, 24 insertions(+), 12 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/httpv2/rest/RestBaseController.java
b/fe/fe-core/src/main/java/org/apache/doris/httpv2/rest/RestBaseController.java
index f634c1f..db24c6b 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/httpv2/rest/RestBaseController.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/httpv2/rest/RestBaseController.java
@@ -66,14 +66,18 @@ public class RestBaseController extends BaseController {
return authInfo;
}
-
public RedirectView redirectTo(HttpServletRequest request, TNetworkAddress
addr) {
URI urlObj = null;
URI resultUriObj = null;
String urlStr = request.getRequestURI();
+ String userInfo = null;
+ if (!Strings.isNullOrEmpty(request.getHeader("Authorization"))) {
+ ActionAuthorizationInfo authInfo = getAuthorizationInfo(request);
+ userInfo = authInfo.fullUserName + ":" + authInfo.password;
+ }
try {
urlObj = new URI(urlStr);
- resultUriObj = new URI("http", null, addr.getHostname(),
+ resultUriObj = new URI("http", userInfo, addr.getHostname(),
addr.getPort(), urlObj.getPath(), "", null);
} catch (Exception e) {
throw new RuntimeException(e);
@@ -94,8 +98,7 @@ public class RestBaseController extends BaseController {
if (catalog.isMaster()) {
return null;
}
- RedirectView redirectView = redirectTo(request, new
TNetworkAddress(catalog.getMasterIp(), catalog.getMasterHttpPort()));
- return redirectView;
+ return redirectTo(request, new TNetworkAddress(catalog.getMasterIp(),
catalog.getMasterHttpPort()));
}
public void getFile(HttpServletRequest request, HttpServletResponse
response, Object obj, String fileName)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/httpv2/rest/manager/NodeAction.java
b/fe/fe-core/src/main/java/org/apache/doris/httpv2/rest/manager/NodeAction.java
index 123cd8d..fa05289 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/httpv2/rest/manager/NodeAction.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/httpv2/rest/manager/NodeAction.java
@@ -109,7 +109,7 @@ public class NodeAction extends RestBaseController {
executeCheckPassword(request, response);
checkGlobalAuth(ConnectContext.get().getCurrentUserIdentity(),
PrivPredicate.ADMIN);
- return fetchNodeInfo("/frontends");
+ return fetchNodeInfo(request, response, "/frontends");
}
// Returns all be information, similar to 'show backends'.
@@ -118,7 +118,7 @@ public class NodeAction extends RestBaseController {
executeCheckPassword(request, response);
checkGlobalAuth(ConnectContext.get().getCurrentUserIdentity(),
PrivPredicate.ADMIN);
- return fetchNodeInfo("/backends");
+ return fetchNodeInfo(request, response, "/backends");
}
// Returns all broker information, similar to 'show broker'.
@@ -127,7 +127,7 @@ public class NodeAction extends RestBaseController {
executeCheckPassword(request, response);
checkGlobalAuth(ConnectContext.get().getCurrentUserIdentity(),
PrivPredicate.ADMIN);
- return fetchNodeInfo("/brokers");
+ return fetchNodeInfo(request, response, "/brokers");
}
// {
@@ -140,7 +140,12 @@ public class NodeAction extends RestBaseController {
// ]
// ]
// }
- private Object fetchNodeInfo(String procPath) throws AnalysisException {
+ private Object fetchNodeInfo(HttpServletRequest request,
HttpServletResponse response, String procPath)
+ throws AnalysisException {
+ if (!Catalog.getCurrentCatalog().isMaster()) {
+ return redirectToMaster(request, response);
+ }
+
try {
ProcResult procResult =
ProcService.getInstance().open(procPath).fetchResult();
List<String> columnNames =
Lists.newArrayList(procResult.getColumnNames());
@@ -202,7 +207,7 @@ public class NodeAction extends RestBaseController {
return ResponseEntityBuilder.ok(result);
}
- // Return all living fe and be nodes.
+ // Return all fe and be nodes.
// {
// "frontend": [
// "host:httpPort"
@@ -224,13 +229,13 @@ public class NodeAction extends RestBaseController {
private static List<String> getFeList() {
return Catalog.getCurrentCatalog().getFrontends(null)
- .stream().filter(Frontend::isAlive)
+ .stream()
.map(fe -> fe.getHost() + ":" + Config.http_port)
.collect(Collectors.toList());
}
private static List<String> getBeList() {
- return Catalog.getCurrentSystemInfo().getBackendIds(true)
+ return Catalog.getCurrentSystemInfo().getBackendIds(false)
.stream().map(beId -> {
Backend be =
Catalog.getCurrentSystemInfo().getBackend(beId);
return be.getHost() + ":" + be.getHttpPort();
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/httpv2/restv2/StatisticAction.java
b/fe/fe-core/src/main/java/org/apache/doris/httpv2/restv2/StatisticAction.java
index 84436f6..13a2f08 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/httpv2/restv2/StatisticAction.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/httpv2/restv2/StatisticAction.java
@@ -33,6 +33,7 @@ import com.google.common.collect.Maps;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+
import java.util.List;
import java.util.Map;
import java.util.Objects;
@@ -45,6 +46,9 @@ public class StatisticAction extends RestBaseController {
@RequestMapping(path = "/api/cluster_overview", method = RequestMethod.GET)
public Object clusterOverview(HttpServletRequest request,
HttpServletResponse response) {
+ if (!Catalog.getCurrentCatalog().isMaster()) {
+ return redirectToMaster(request, response);
+ }
Map<String, Object> resultMap = Maps.newHashMap();
Catalog catalog = Catalog.getCurrentCatalog();
SystemInfoService infoService = Catalog.getCurrentSystemInfo();
@@ -56,7 +60,7 @@ public class StatisticAction extends RestBaseController {
resultMap.put("feCount", catalog.getFrontends(null).size());
resultMap.put("remainDisk", getRemainDisk(infoService));
- return ResponseEntityBuilder.ok(resultMap);
+ return ResponseEntityBuilder.ok(resultMap);
}
private int getTblCount(Catalog catalog) {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]