Skip to content

Commit 97b612d

Browse files
israbbaniaslonnie
authored andcommitted
[core] (5/n) [Removing GCS Centralized Scheduling] Moving gcs_actor_* into a separate module (ray-project#60188)
This PR stacks on ray-project#60121. This is 5/N in a series of PRs to remove Centralized Actor Scheduling by the GCS (introduced in ray-project#15943). The feature is off by default and no longer in use or supported. In this PR, - Moving the gcs_actor_* files into a separate bazel module `/ray/gcs/actor/` - Moves the LocalLeaseManager into `/ray/raylet/scheduling` with its friends - Enabling cpplint Pure refactoring. No logic changes. --------- Signed-off-by: irabbani <irabbani@anyscale.com> Signed-off-by: Ibrahim Rabbani <irabbani@anyscale.com> Co-authored-by: Lonnie Liu <95255098+aslonnie@users.noreply.github.com> Signed-off-by: peterxcli <peterxcli@gmail.com>
1 parent ccac6a8 commit 97b612d

20 files changed

+707
-198
lines changed

.pre-commit-config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ repos:
6969
hooks:
7070
- id: cpplint
7171
args: ["--filter=-whitespace/braces,-whitespace/line_length,-build/c++11,-build/c++14,-build/c++17,-readability/braces,-whitespace/indent_namespace,-runtime/int,-runtime/references,-build/include_order"]
72-
files: ^src/ray/(common/cgroup2|common/scheduling|common/ray_syncer|common/test|util|raylet_client|internal|scheduling|pubsub|object_manager|rpc(?:/.*)?|raylet|core_worker|ipc)/.*\.(h|cc)$
72+
files: ^src/ray/(gcs/actor|common/cgroup2|common/scheduling|common/ray_syncer|common/test|util|raylet_client|internal|scheduling|pubsub|object_manager|rpc(?:/.*)?|raylet|core_worker|ipc)/.*\.(h|cc)$
7373
exclude: |
7474
(?x)^(
7575
src/ray/raylet/scheduling/.*\.(h|cc)$ |

src/mock/ray/gcs/gcs_actor_manager.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright The Ray Authors.
1+
// Copyright 2025 The Ray Authors.
22
//
33
// Licensed under the Apache License, Version 2.0 (the "License");
44
// you may not use this file except in compliance with the License.
@@ -16,7 +16,7 @@
1616

1717
#include <gmock/gmock.h>
1818

19-
#include "ray/gcs/gcs_actor_manager.h"
19+
#include "ray/gcs/actor/gcs_actor_manager.h"
2020
#include "ray/observability/fake_metric.h"
2121
#include "ray/observability/fake_ray_event_recorder.h"
2222

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
// Copyright The Ray Authors.
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
15+
#pragma once
16+
17+
#include <gmock/gmock.h>
18+
19+
#include "ray/gcs/actor/gcs_actor_scheduler.h"
20+
21+
namespace ray {
22+
namespace gcs {
23+
24+
class MockGcsActorSchedulerInterface : public GcsActorSchedulerInterface {
25+
public:
26+
MOCK_METHOD(void, Schedule, (std::shared_ptr<GcsActor> actor), (override));
27+
MOCK_METHOD(void, Reschedule, (std::shared_ptr<GcsActor> actor), (override));
28+
MOCK_METHOD(std::vector<ActorID>, CancelOnNode, (const NodeID &node_id), (override));
29+
MOCK_METHOD(void,
30+
CancelOnLeasing,
31+
(const NodeID &node_id, const ActorID &actor_id, const LeaseID &lease_id),
32+
(override));
33+
MOCK_METHOD(ActorID,
34+
CancelOnWorker,
35+
(const NodeID &node_id, const WorkerID &worker_id),
36+
(override));
37+
MOCK_METHOD(
38+
void,
39+
ReleaseUnusedActorWorkers,
40+
((const absl::flat_hash_map<NodeID, std::vector<WorkerID>> &node_to_workers)),
41+
(override));
42+
};
43+
44+
} // namespace gcs
45+
} // namespace ray
46+
47+
namespace ray {
48+
namespace gcs {
49+
50+
class MockGcsActorScheduler : public GcsActorScheduler {
51+
public:
52+
MockGcsActorScheduler(instrumented_io_context &io_context,
53+
GcsActorTable &gcs_actor_table,
54+
const GcsNodeManager &gcs_node_manager)
55+
: GcsActorScheduler(
56+
io_context,
57+
gcs_actor_table,
58+
gcs_node_manager,
59+
nullptr,
60+
[](std::shared_ptr<GcsActor>,
61+
rpc::RequestWorkerLeaseReply::SchedulingFailureType,
62+
const std::string &) {},
63+
[](std::shared_ptr<GcsActor>, const rpc::PushTaskReply &) {},
64+
nullptr) {}
65+
66+
MOCK_METHOD(void, Schedule, (std::shared_ptr<GcsActor> actor), (override));
67+
MOCK_METHOD(void, Reschedule, (std::shared_ptr<GcsActor> actor), (override));
68+
MOCK_METHOD(std::vector<ActorID>, CancelOnNode, (const NodeID &node_id), (override));
69+
MOCK_METHOD(void,
70+
CancelOnLeasing,
71+
(const NodeID &node_id, const ActorID &actor_id, const LeaseID &lease_id),
72+
(override));
73+
MOCK_METHOD(ActorID,
74+
CancelOnWorker,
75+
(const NodeID &node_id, const WorkerID &worker_id),
76+
(override));
77+
MOCK_METHOD(
78+
void,
79+
ReleaseUnusedActorWorkers,
80+
((const absl::flat_hash_map<NodeID, std::vector<WorkerID>> &node_to_workers)),
81+
(override));
82+
MOCK_METHOD(void,
83+
HandleWorkerLeaseReply,
84+
(std::shared_ptr<GcsActor> actor,
85+
std::shared_ptr<rpc::GcsNodeInfo> node,
86+
const Status &status,
87+
const rpc::RequestWorkerLeaseReply &reply),
88+
(override));
89+
MOCK_METHOD(void,
90+
RetryLeasingWorkerFromNode,
91+
(std::shared_ptr<GcsActor> actor, std::shared_ptr<rpc::GcsNodeInfo> node),
92+
(override));
93+
MOCK_METHOD(void,
94+
RetryCreatingActorOnWorker,
95+
(std::shared_ptr<GcsActor> actor, std::shared_ptr<GcsLeasedWorker> worker),
96+
(override));
97+
};
98+
99+
} // namespace gcs
100+
} // namespace ray

src/ray/gcs/BUILD.bazel

Lines changed: 5 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -332,7 +332,7 @@ ray_cc_library(
332332
hdrs = [
333333
"grpc_service_interfaces.h",
334334
],
335-
visibility = ["//visibility:private"],
335+
visibility = [":__subpackages__"],
336336
deps = [
337337
"//src/ray/common:status",
338338
"//src/ray/protobuf:autoscaler_cc_grpc",
@@ -363,96 +363,6 @@ ray_cc_library(
363363
],
364364
)
365365

366-
ray_cc_library(
367-
name = "gcs_actor",
368-
srcs = [
369-
"gcs_actor.cc",
370-
],
371-
hdrs = [
372-
"gcs_actor.h",
373-
],
374-
deps = [
375-
"//src/ray/common:id",
376-
"//src/ray/common:lease",
377-
"//src/ray/common:task_common",
378-
"//src/ray/common/scheduling:cluster_resource_data",
379-
"//src/ray/common/scheduling:label_selector",
380-
"//src/ray/observability:ray_actor_definition_event",
381-
"//src/ray/observability:ray_actor_lifecycle_event",
382-
"//src/ray/observability:ray_event_recorder_interface",
383-
"//src/ray/protobuf:core_worker_cc_proto",
384-
"//src/ray/protobuf:export_event_cc_proto",
385-
"//src/ray/protobuf:gcs_service_cc_proto",
386-
"//src/ray/util:counter_map",
387-
"//src/ray/util:event",
388-
"//src/ray/util:logging",
389-
],
390-
)
391-
392-
ray_cc_library(
393-
name = "gcs_actor_scheduler",
394-
srcs = [
395-
"gcs_actor_scheduler.cc",
396-
],
397-
hdrs = [
398-
"gcs_actor_scheduler.h",
399-
],
400-
deps = [
401-
":gcs_actor",
402-
":gcs_node_manager",
403-
":gcs_table_storage",
404-
"//src/ray/common:asio",
405-
"//src/ray/common:id",
406-
"//src/ray/common:ray_config",
407-
"//src/ray/core_worker_rpc_client:core_worker_client_pool",
408-
"//src/ray/raylet_rpc_client:raylet_client_interface",
409-
"//src/ray/raylet_rpc_client:raylet_client_pool",
410-
"//src/ray/util:logging",
411-
"//src/ray/util:time",
412-
"@com_google_absl//absl/container:flat_hash_map",
413-
"@com_google_absl//absl/container:flat_hash_set",
414-
"@com_google_googletest//:gtest",
415-
],
416-
)
417-
418-
ray_cc_library(
419-
name = "gcs_actor_manager",
420-
srcs = [
421-
"gcs_actor_manager.cc",
422-
],
423-
hdrs = [
424-
"gcs_actor_manager.h",
425-
],
426-
deps = [
427-
":gcs_actor",
428-
":gcs_actor_scheduler",
429-
":gcs_function_manager",
430-
":gcs_init_data",
431-
":gcs_table_storage",
432-
":gcs_usage_stats_client",
433-
":grpc_service_interfaces",
434-
"//src/ray/common:asio",
435-
"//src/ray/common:id",
436-
"//src/ray/common:protobuf_utils",
437-
"//src/ray/common:ray_config",
438-
"//src/ray/common:task_common",
439-
"//src/ray/core_worker_rpc_client:core_worker_client_interface",
440-
"//src/ray/core_worker_rpc_client:core_worker_client_pool",
441-
"//src/ray/observability:ray_event_recorder_interface",
442-
"//src/ray/protobuf:gcs_service_cc_proto",
443-
"//src/ray/pubsub:gcs_publisher",
444-
"//src/ray/stats:stats_lib",
445-
"//src/ray/util:container_util",
446-
"//src/ray/util:counter_map",
447-
"//src/ray/util:logging",
448-
"//src/ray/util:thread_checker",
449-
"//src/ray/util:time",
450-
"@com_google_absl//absl/container:flat_hash_map",
451-
"@com_google_absl//absl/container:flat_hash_set",
452-
"@com_google_googletest//:gtest",
453-
],
454-
)
455-
456366
ray_cc_library(
457367
name = "gcs_autoscaler_state_manager",
458368
srcs = [
@@ -462,7 +372,6 @@ ray_cc_library(
462372
"gcs_autoscaler_state_manager.h",
463373
],
464374
deps = [
465-
":gcs_actor_manager",
466375
":gcs_init_data",
467376
":gcs_kv_manager",
468377
":gcs_node_manager",
@@ -473,6 +382,7 @@ ray_cc_library(
473382
"//src/ray/common:id",
474383
"//src/ray/common:protobuf_utils",
475384
"//src/ray/common:ray_config",
385+
"//src/ray/gcs/actor:gcs_actor_manager",
476386
"//src/ray/protobuf:gcs_cc_proto",
477387
"//src/ray/pubsub:gcs_publisher",
478388
"//src/ray/util:logging",
@@ -497,9 +407,9 @@ ray_cc_library(
497407
"//conditions:default": [],
498408
}),
499409
deps = [
500-
":gcs_actor",
501-
":gcs_actor_manager",
502-
":gcs_actor_scheduler",
410+
"//src/ray/gcs/actor:gcs_actor",
411+
"//src/ray/gcs/actor:gcs_actor_manager",
412+
"//src/ray/gcs/actor:gcs_actor_scheduler",
503413
":gcs_autoscaler_state_manager",
504414
":gcs_function_manager",
505415
":gcs_health_check_manager",

src/ray/gcs/actor/BUILD.bazel

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
load("//bazel:ray.bzl", "ray_cc_library")
2+
3+
ray_cc_library(
4+
name = "gcs_actor",
5+
srcs = [
6+
"gcs_actor.cc",
7+
],
8+
hdrs = [
9+
"gcs_actor.h",
10+
],
11+
deps = [
12+
"//src/ray/common:id",
13+
"//src/ray/common:lease",
14+
"//src/ray/common:task_common",
15+
"//src/ray/common/scheduling:cluster_resource_data",
16+
"//src/ray/common/scheduling:label_selector",
17+
"//src/ray/observability:ray_actor_definition_event",
18+
"//src/ray/observability:ray_actor_lifecycle_event",
19+
"//src/ray/observability:ray_event_recorder_interface",
20+
"//src/ray/protobuf:core_worker_cc_proto",
21+
"//src/ray/protobuf:export_event_cc_proto",
22+
"//src/ray/protobuf:gcs_service_cc_proto",
23+
"//src/ray/util:counter_map",
24+
"//src/ray/util:event",
25+
"//src/ray/util:logging",
26+
],
27+
)
28+
29+
ray_cc_library(
30+
name = "gcs_actor_scheduler",
31+
srcs = [
32+
"gcs_actor_scheduler.cc",
33+
],
34+
hdrs = [
35+
"gcs_actor_scheduler.h",
36+
],
37+
deps = [
38+
":gcs_actor",
39+
"//src/ray/common:asio",
40+
"//src/ray/common:id",
41+
"//src/ray/common:ray_config",
42+
"//src/ray/core_worker_rpc_client:core_worker_client_pool",
43+
"//src/ray/gcs:gcs_node_manager",
44+
"//src/ray/gcs:gcs_table_storage",
45+
"//src/ray/raylet_rpc_client:raylet_client_interface",
46+
"//src/ray/raylet_rpc_client:raylet_client_pool",
47+
"//src/ray/util:logging",
48+
"//src/ray/util:time",
49+
"@com_google_absl//absl/container:flat_hash_map",
50+
"@com_google_absl//absl/container:flat_hash_set",
51+
"@com_google_googletest//:gtest",
52+
],
53+
)
54+
55+
ray_cc_library(
56+
name = "gcs_actor_manager",
57+
srcs = [
58+
"gcs_actor_manager.cc",
59+
],
60+
hdrs = [
61+
"gcs_actor_manager.h",
62+
],
63+
deps = [
64+
":gcs_actor",
65+
":gcs_actor_scheduler",
66+
"//src/ray/common:asio",
67+
"//src/ray/common:id",
68+
"//src/ray/common:protobuf_utils",
69+
"//src/ray/common:ray_config",
70+
"//src/ray/common:task_common",
71+
"//src/ray/core_worker_rpc_client:core_worker_client_interface",
72+
"//src/ray/core_worker_rpc_client:core_worker_client_pool",
73+
"//src/ray/gcs:gcs_function_manager",
74+
"//src/ray/gcs:gcs_init_data",
75+
"//src/ray/gcs:gcs_table_storage",
76+
"//src/ray/gcs:gcs_usage_stats_client",
77+
"//src/ray/gcs:grpc_service_interfaces",
78+
"//src/ray/observability:ray_event_recorder_interface",
79+
"//src/ray/protobuf:gcs_service_cc_proto",
80+
"//src/ray/pubsub:gcs_publisher",
81+
"//src/ray/stats:stats_lib",
82+
"//src/ray/util:container_util",
83+
"//src/ray/util:counter_map",
84+
"//src/ray/util:logging",
85+
"//src/ray/util:thread_checker",
86+
"//src/ray/util:time",
87+
"@com_google_absl//absl/container:flat_hash_map",
88+
"@com_google_absl//absl/container:flat_hash_set",
89+
"@com_google_googletest//:gtest",
90+
],
91+
)
Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,17 @@
1212
// See the License for the specific language governing permissions and
1313
// limitations under the License.
1414

15-
#include "ray/gcs/gcs_actor.h"
15+
#include "ray/gcs/actor/gcs_actor.h"
1616

1717
#include <memory>
1818
#include <string>
19+
#include <utility>
20+
#include <vector>
1921

2022
#include "ray/observability/ray_actor_definition_event.h"
2123
#include "ray/observability/ray_actor_lifecycle_event.h"
24+
#include "ray/observability/ray_event_interface.h"
2225
#include "ray/util/logging.h"
23-
#include "src/ray/protobuf/public/events_actor_lifecycle_event.pb.h"
24-
#include "src/ray/protobuf/public/events_base_event.pb.h"
2526

2627
namespace ray {
2728
namespace gcs {

0 commit comments

Comments
 (0)