Skip to content

Commit

Permalink
add case.
Browse files Browse the repository at this point in the history
  • Loading branch information
hubgeter committed Dec 30, 2024
1 parent 9d2a2fb commit fc94210
Show file tree
Hide file tree
Showing 12 changed files with 300 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ private static GroupId checkAndGetGroupId(HttpServletRequest request) throws Ddl
GroupId groupId = new GroupId(dbId, grpId);

if (!colocateIndex.isGroupExist(groupId)) {
throw new DdlException("the group " + groupId + "isn't exist");
throw new DdlException("the group " + groupId + " isn't exist");
}
return groupId;
}
Expand All @@ -95,7 +95,7 @@ public Object colocate(HttpServletRequest request, HttpServletResponse response)
return redirectToHttps(request);
}

if (!Env.getCurrentEnv().isMaster()) {
if (!checkForwardToMaster(request)) {
return forwardToMaster(request);
}
executeWithoutPassword(request, response);
Expand All @@ -109,7 +109,7 @@ public Object group_stable(HttpServletRequest request, HttpServletResponse respo
return redirectToHttps(request);
}

if (!Env.getCurrentEnv().isMaster()) {
if (checkForwardToMaster(request)) {
return forwardToMaster(request);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public Object execute(@PathVariable(value = DB_KEY) final String dbName,
}

executeCheckPassword(request, response);
if (!Env.getCurrentEnv().isMaster()) {
if (checkForwardToMaster(request)) {
return forwardToMaster(request);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,9 @@ public class GetLoadInfoAction extends RestBaseController {
public Object execute(
@PathVariable(value = DB_KEY) final String dbName,
HttpServletRequest request, HttpServletResponse response) {
if (needRedirect(request.getScheme())) {
return redirectToHttps(request);
}
executeCheckPassword(request, response);

String fullDbName = getFullDbName(dbName);
Expand All @@ -67,7 +70,7 @@ public Object execute(
if (Strings.isNullOrEmpty(info.label)) {
return new RestBaseResult("No label selected");
}
if (!Env.getServingEnv().isMaster()) {
if (checkForwardToMaster(request)) {
return forwardToMaster(request);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,11 @@ public Object execute(@PathVariable(value = DB_KEY) final String dbName,
HttpServletRequest request, HttpServletResponse response) {
executeCheckPassword(request, response);

if (!Env.getCurrentEnv().isMaster()) {
if (needRedirect(request.getScheme())) {
return redirectToHttps(request);
}

if (!checkForwardToMaster(request)) {
return forwardToMaster(request);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ public Object multi_desc(
checkDbAuth(ConnectContext.get().getCurrentUserIdentity(), fullDbName, PrivPredicate.LOAD);

// only Master has these load info
if (!Env.getCurrentEnv().isMaster()) {
if (checkForwardToMaster(request)) {
return forwardToMaster(request);
}

Expand Down Expand Up @@ -95,7 +95,7 @@ public Object multi_list(
checkDbAuth(ConnectContext.get().getCurrentUserIdentity(), fullDbName, PrivPredicate.LOAD);

// only Master has these load info
if (!Env.getCurrentEnv().isMaster()) {
if (checkForwardToMaster(request)) {
return forwardToMaster(request);
}

Expand Down Expand Up @@ -128,7 +128,7 @@ public Object multi_start(

// Multi start request must redirect to master, because all following sub requests will be handled
// on Master
if (!Env.getCurrentEnv().isMaster()) {
if (checkForwardToMaster(request)) {
return forwardToMaster(request);
}

Expand Down Expand Up @@ -177,7 +177,7 @@ public Object multi_unload(
String fullDbName = getFullDbName(dbName);
checkDbAuth(ConnectContext.get().getCurrentUserIdentity(), fullDbName, PrivPredicate.LOAD);

if (!Env.getCurrentEnv().isMaster()) {
if (checkForwardToMaster(request)) {
return forwardToMaster(request);
}

Expand Down Expand Up @@ -209,7 +209,7 @@ public Object multi_commit(
checkDbAuth(ConnectContext.get().getCurrentUserIdentity(), fullDbName, PrivPredicate.LOAD);

// only Master has these load info
if (!Env.getCurrentEnv().isMaster()) {
if (checkForwardToMaster(request)) {
return forwardToMaster(request);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import org.apache.doris.catalog.Env;
import org.apache.doris.cluster.ClusterNamespace;
import org.apache.doris.common.Config;
import org.apache.doris.common.FeConstants;
import org.apache.doris.common.util.NetUtils;
import org.apache.doris.httpv2.controller.BaseController;
import org.apache.doris.httpv2.entity.ResponseEntityBuilder;
Expand Down Expand Up @@ -65,6 +66,7 @@ public class RestBaseController extends BaseController {
protected static final String TXN_ID_KEY = "txn_id";
protected static final String TXN_OPERATION_KEY = "txn_operation";
protected static final String SINGLE_REPLICA_KEY = "single_replica";
protected static final String FORBID_FORWARD_UT_TEST = "forbid_forward_ut_test";
private static final Logger LOG = LogManager.getLogger(RestBaseController.class);

public ActionAuthorizationInfo executeCheckPassword(HttpServletRequest request,
Expand Down Expand Up @@ -220,6 +222,18 @@ public Object forwardToMaster(HttpServletRequest request) {
}
}

public boolean checkForwardToMaster(HttpServletRequest request) {
if (FeConstants.runningUnitTest) {
String forbidForward = request.getHeader(FORBID_FORWARD_UT_TEST);
if (forbidForward != null) {
return !"true".equals(forbidForward);
}
return true;
}
return !Env.getCurrentEnv().isMaster();
}


private String getRequestBody(HttpServletRequest request) throws IOException {
BufferedReader reader = request.getReader();
return reader.lines().collect(Collectors.joining(System.lineSeparator()));
Expand All @@ -228,15 +242,26 @@ private String getRequestBody(HttpServletRequest request) throws IOException {
public Object forwardToMaster(HttpServletRequest request, @Nullable Object body) {
try {
Env env = Env.getCurrentEnv();
String redirectUrl = getRedirectUrL(request,
new TNetworkAddress(env.getMasterHost(), env.getMasterHttpPort()));
String redirectUrl = null;
if (FeConstants.runningUnitTest) {
redirectUrl =
getRedirectUrL(request, new TNetworkAddress(request.getServerName(), request.getServerPort()));
} else {
redirectUrl = getRedirectUrL(request,
new TNetworkAddress(env.getMasterHost(), env.getMasterHttpPort()));
}
String method = request.getMethod();

HttpHeaders headers = new HttpHeaders();
for (String headerName : Collections.list(request.getHeaderNames())) {
headers.add(headerName, request.getHeader(headerName));
}

if (FeConstants.runningUnitTest) {
//Add a header to avoid forward.
headers.add(FORBID_FORWARD_UT_TEST, "true");
}

HttpEntity<Object> entity = new HttpEntity<>(body, headers);

RestTemplate restTemplate = new RestTemplate();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ public Object show_proc(HttpServletRequest request, HttpServletResponse response
}

// forward to master if necessary
if (!Env.getCurrentEnv().isMaster() && isForward) {
if (checkForwardToMaster(request) && isForward) {
return forwardToMaster(request);
} else {
ProcNodeInterface procNode = null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,11 @@ public Object brokers_info(HttpServletRequest request, HttpServletResponse respo
private Object fetchNodeInfo(HttpServletRequest request, HttpServletResponse response, String procPath)
throws Exception {
try {
if (!Env.getCurrentEnv().isMaster()) {
if (needRedirect(request.getScheme())) {
return redirectToHttps(request);
}

if (checkForwardToMaster(request)) {
return forwardToMaster(request, null);
}

Expand Down Expand Up @@ -604,7 +608,11 @@ public Object setConfigBe(HttpServletRequest request, HttpServletResponse respon
public Object operateBackend(HttpServletRequest request, HttpServletResponse response, @PathVariable String action,
@RequestBody BackendReqInfo reqInfo) {
try {
if (!Env.getCurrentEnv().isMaster()) {
if (needRedirect(request.getScheme())) {
return redirectToHttps(request);
}

if (checkForwardToMaster(request)) {
return forwardToMaster(request, reqInfo);
}

Expand Down Expand Up @@ -647,7 +655,11 @@ public Object operateBackend(HttpServletRequest request, HttpServletResponse res
public Object operateFrontends(HttpServletRequest request, HttpServletResponse response,
@PathVariable String action, @RequestBody FrontendReqInfo reqInfo) {
try {
if (!Env.getCurrentEnv().isMaster()) {
if (needRedirect(request.getScheme())) {
return redirectToHttps(request);
}

if (checkForwardToMaster(request)) {
return forwardToMaster(request, reqInfo);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,11 @@ public Object clusterOverview(@RequestBody StoragePolicyVo body,
}

try {
if (!Env.getCurrentEnv().isMaster()) {
if (needRedirect(request.getScheme())) {
return redirectToHttps(request);
}

if (checkForwardToMaster(request)) {
return forwardToMaster(request, body);
}
} catch (Exception e) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,11 @@ private Object handleRequest(HttpServletRequest request, HttpServletResponse res
executeCheckPassword(request, response);
}

if (!Env.getCurrentEnv().isMaster()) {
if (needRedirect(request.getScheme())) {
return redirectToHttps(request);
}

if (checkForwardToMaster(request)) {
return forwardToMaster(request);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,11 @@ public Object clusterOverview(HttpServletRequest request, HttpServletResponse re
if (Config.enable_all_http_auth) {
executeCheckPassword(request, response);
}
if (needRedirect(request.getScheme())) {
return redirectToHttps(request);
}

if (!Env.getCurrentEnv().isMaster()) {
if (checkForwardToMaster(request)) {
return forwardToMaster(request);
}

Expand Down
Loading

0 comments on commit fc94210

Please sign in to comment.