Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. numBlacklistedTaskMangers: The number of currently blacklisted task managers (including task managers on blacklisted nodes)
  2. numBlacklistedNodes: The number of currently blacklisted nodes

REST API

We will add introduce following REST APIs for blacklist mechanism:

  1. REST API for querying blacklist information.
  2. REST API for adding new blacklisted items.
  3. 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
titleResourceManagerGatewayResponse
public{
 interface ResourceManagerGateway {
   CompletableFuture<BlacklistInfo> requestBlacklist(@RpcTimeout Time timeout);
   // ...
}

GET: http://{jm_rest_address:port}/blacklist

Request: {}

Response:

Code Block
titleResponse
{
  /** 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
titleResourceManagerGateway
public interface ResourceManagerGateway {
   CompletableFuture<BlacklistInfo> requestBlacklist(@RpcTimeout Time timeout);
   // ...
}

Add

POST: http://{jm_rest_address:port}/blacklist/add

Request:

Code Block
titleRequest
{
  "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
titleRequest
{
  "newBlacklistedTaskManagersblacklistedTaskManagersToRemove": [
      {
          "id" : "container_XXX_000002",
          "action" : "MARK_BLACKLISTED"
      },
      {
          "id" : "container_XXX_000003",
          "action" : "MARK_BLACKLISTED"
      }, 
      ...
  ],
  "newBlacklistedNodesblacklistedNodesToRemove": [
      {
          "id" : "node1",
          "action" : "MARK_BLACKLISTED"
      },
      ...
  ]
}

...