...
- numBlacklistedTaskMangers: The number of currently blacklisted task managers (including task managers on blacklisted nodes)
- numBlacklistedNodes: The number of currently blacklisted nodes
REST API
We will add introduce following REST APIs for blacklist mechanism:
- REST API for querying blacklist information.
- REST API for adding new blacklisted items.
- REST API for removing existing blacklisted items.
Query
Add a REST API to obtain blacklist information. Each request will return all current blacklist items, which are obtained from ResourceManagerBlacklistHandler.
GET: http://{jm_rest_address:port}/blacklist
Request: {}
ResponseIn order to get blacklist information, we need to add an interface to ResourceManagerGateway:
Code Block | ||
---|---|---|
| ||
public{ interface ResourceManagerGateway { CompletableFuture<BlacklistInfo> requestBlacklist(@RpcTimeout Time timeout); // ... } |
GET: http://{jm_rest_address:port}/blacklist
Request: {}
Response:
Code Block | ||
---|---|---|
| ||
{ /** This group only contains directly blacklisted task managers */ "blacklistedTaskManagers": [ {/** This group only contains directly blacklisted task managers */ "blacklistedTaskManagers": [ { "id" : "container_XXX_000002", "timestamp" : "XXX", "action" : "MARK_BLACKLISTED" }, { "id" : "container_XXX_000003", "timestamp" : "XXX", "action" : "MARK_BLACKLISTED" }, ... ], "blacklistedNodes": [ { "id" : "node1", "timestamp" : "XXX", "action" : "MARK_BLACKLISTED" "idtaskManagers" : "container[“container_XXX_000004”, “container_XXX_000002"000005”, …] }, "timestamp" : "XXX", ... ] } |
In order to get blacklist information, we need to add an interface to ResourceManagerGateway:
Code Block | ||
---|---|---|
| ||
public interface ResourceManagerGateway { CompletableFuture<BlacklistInfo> requestBlacklist(@RpcTimeout Time timeout); // ... } |
Add
POST: http://{jm_rest_address:port}/blacklist/add
Request:
Code Block | ||
---|---|---|
| ||
{ "newBlacklistedTaskManagers": [ "action" : "MARK_BLACKLISTED" }, { "id" : "container_XXX_000003", "timestamp" : "XXX"000002", "action" : "MARK_BLACKLISTED" }, ...{ ], "blacklistedNodes": [ "id" {: "container_XXX_000003", "idaction" : "node1",MARK_BLACKLISTED" }, ... ], "timestamp" : "XXX",newBlacklistedNodes": [ { "actionid" : "MARK_BLACKLISTEDnode1", "taskManagersaction" : [“container_XXX_000004”, “container_XXX_000005”, …]"MARK_BLACKLISTED" }, ... ] } |
Response: {}
...
...
Remove
POST: http://{jm_rest_address:port}/blacklist/addremove
Request:
Code Block | ||
---|---|---|
| ||
{ "newBlacklistedTaskManagersblacklistedTaskManagersToRemove": [ { "id" : "container_XXX_000002", "action" : "MARK_BLACKLISTED" }, { "id" : "container_XXX_000003", "action" : "MARK_BLACKLISTED" }, ... ], "newBlacklistedNodesblacklistedNodesToRemove": [ { "id" : "node1", "action" : "MARK_BLACKLISTED" }, ... ] } |
...