Skip to content

[core] (4/n) [Removing GCS Centralized Scheduling] Removing LocalLeaseManager from GCS#60121

Merged
edoakes merged 23 commits intomasterfrom
irabbani/remove-centralized-actor-scheduling-4
Jan 15, 2026
Merged

[core] (4/n) [Removing GCS Centralized Scheduling] Removing LocalLeaseManager from GCS#60121
edoakes merged 23 commits intomasterfrom
irabbani/remove-centralized-actor-scheduling-4

Conversation

@israbbani
Copy link
Contributor

@israbbani israbbani commented Jan 13, 2026

This PR stacks on #60019.

This is $/N in a series of PRs to remove Centralized Actor Scheduling by the GCS (introduced in #15943). The feature is off by default and no longer in use or supported.

In this PR, I've removed the GCS's dependency on the LocalLeaseManager. I've also moved LocalLeaseManager to the raylet/scheduling package and made it's visibility private to the package. Also deleted the NoopLocalLeaseManager.

The LocalLeaseManager is used by the ClusterLeaseManager to see if a task can scheduled locally by a Raylet. The GCS used only the Noop implementation.

Signed-off-by: irabbani <irabbani@anyscale.com>
Signed-off-by: irabbani <irabbani@anyscale.com>
Signed-off-by: irabbani <irabbani@anyscale.com>
…ub.com:ray-project/ray into irabbani/remove-centralized-actor-scheduling-1
Signed-off-by: irabbani <irabbani@anyscale.com>
…abbani/remove-centralized-actor-scheduling-2
Signed-off-by: irabbani <irabbani@anyscale.com>
Signed-off-by: irabbani <irabbani@anyscale.com>
…from the GCS (#60019)

This PR stacks on #60008.

This is 3/N in a series of PRs to remove Centralized Actor Scheduling by
the GCS (introduced in #15943).
The feature is off by default and no longer in use or supported.

In this PR, I remove GC requests published globally from the GCS to all
Raylets through the RaySyncer. This feature was introduced as part of
Centralized Scheduling through GCS in
#28663.

The implementation used to check to see if there were pending leases for
two consecutive intervals (of 10s) each from the ClusterLeaseManager in
the GCS. If so, the GCS would trigger GlobalGC. Therefore, with GCS
Centralized Scheduling disabled, the GCS would never send GlobalGC
requests. It's safe to delete now.

I've also moved the Throttler from util to the raylet package and made
it's visibility private.

---------

Signed-off-by: irabbani <irabbani@anyscale.com>
Signed-off-by: irabbani <irabbani@anyscale.com>
Signed-off-by: irabbani <irabbani@anyscale.com>
Removes the GCS's dependency on LocalLeaseManager.
Moves the LocalLeaseManager into the raylet/scheduling package.
The LocalLeaseManager is now private to the raylet.

Signed-off-by: irabbani <irabbani@anyscale.com>
@israbbani israbbani added core Issues that should be addressed in Ray Core go add ONLY when ready to merge, run all tests labels Jan 13, 2026
Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request is a significant refactoring that removes the GCS Centralized Actor Scheduling feature, which is a great step towards simplifying the codebase and removing unused functionality. The changes are extensive, touching C++, Python, and build files, but they appear to be consistent and correct. The removal of ClusterLeaseManager from GCS and the simplification of GcsActorScheduler are key parts of this change. The related tests have also been cleaned up, and some files have been reorganized for better structure. Overall, this is a solid improvement to the project's maintainability. I've found one minor issue regarding a stale comment that should be addressed.

@israbbani israbbani changed the base branch from master to irabbani/remove-centralized-actor-scheduling-2 January 13, 2026 23:28
…aseManager from GCS. (#60008)

This PR stacks on #59979. 

This is 2/N and 3/N (#60019) in a series of PRs to remove Centralized
Actor Scheduling by the GCS (introduced in #15943). The feature is off
by default and no longer in use or supported.

In this PR, 

1. I remove use of the ClusterLeaseManager (from the Raylet's scheduler)
in the GCS.
2. I remove GC requests published globally from the GCS to all Raylets
through the RaySyncer. This feature was introduced as part of
Centralized Scheduling through GCS in
#28663.
3. I've moded the Throttler from util to the raylet package and made
it's visibility private.

The GC implementation used to check to see if there were pending leases
for two consecutive intervals (of 10s) each from the ClusterLeaseManager
in the GCS. If so, the GCS would trigger GlobalGC. Therefore, with GCS
Centralized Scheduling disabled, the GCS would never send GlobalGC
requests. It's safe to delete now.

---------

Signed-off-by: irabbani <irabbani@anyscale.com>
Base automatically changed from irabbani/remove-centralized-actor-scheduling-2 to irabbani/remove-centralized-actor-scheduling-1 January 14, 2026 00:17
…ng-1

Signed-off-by: Ibrahim Rabbani <irabbani@anyscale.com>
…abbani/remove-centralized-actor-scheduling-4

Signed-off-by: Ibrahim Rabbani <irabbani@anyscale.com>
…abbani/remove-centralized-actor-scheduling-4
Signed-off-by: irabbani <irabbani@anyscale.com>
@israbbani israbbani marked this pull request as ready for review January 15, 2026 17:31
@israbbani israbbani requested a review from a team as a code owner January 15, 2026 17:31
Base automatically changed from irabbani/remove-centralized-actor-scheduling-1 to master January 15, 2026 19:39
…ng-4

Signed-off-by: Ibrahim Rabbani <irabbani@anyscale.com>
Signed-off-by: irabbani <irabbani@anyscale.com>
Copy link
Collaborator

@edoakes edoakes left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

delicioso

@edoakes edoakes enabled auto-merge (squash) January 15, 2026 21:44
@edoakes edoakes merged commit 31f11ad into master Jan 15, 2026
7 checks passed
@edoakes edoakes deleted the irabbani/remove-centralized-actor-scheduling-4 branch January 15, 2026 22:56
edoakes pushed a commit that referenced this pull request Jan 16, 2026
It seems the windows build started breaking in between commits bfa6f0b
and 9ce0cd0 due to the compile command for gcs_server_lib being too
long. The only PR that went in that would've caused this is #59979 which
used local_lease_manager instead of possibly using
local_lease_manager_interface in the dependency list. However, #60121
was merged shortly after that removes this dependency entirely. I'm not
sure if something else is potentially being drawn in transitively and if
that contributes to the compile command used in windows?

It does seem like we're on the knife's edge for the windows command line
length limit 32768. A better long term fix would be to obviously revist
the bazel file for these massives libs and try to prune them down/move
them to smaller subtargets with interfaces and so on, but that's
probably going to take a while so as a cheat in the bazel guide:
https://bazel.build/configure/windows they mention that the flag
"compiler_param_file" can bypass this so I added this and hoping it
works.

---------

Signed-off-by: joshlee <joshlee@anyscale.com>
edoakes pushed a commit that referenced this pull request Jan 17, 2026
… into a separate module (#60188)

This PR stacks on #60121.

This is 5/N in a series of PRs to remove Centralized Actor Scheduling by
the GCS (introduced in #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>
limarkdcunha pushed a commit to limarkdcunha/ray that referenced this pull request Jan 18, 2026
…roject#60213)

It seems the windows build started breaking in between commits bfa6f0b
and 9ce0cd0 due to the compile command for gcs_server_lib being too
long. The only PR that went in that would've caused this is ray-project#59979 which
used local_lease_manager instead of possibly using
local_lease_manager_interface in the dependency list. However, ray-project#60121
was merged shortly after that removes this dependency entirely. I'm not
sure if something else is potentially being drawn in transitively and if
that contributes to the compile command used in windows?

It does seem like we're on the knife's edge for the windows command line
length limit 32768. A better long term fix would be to obviously revist
the bazel file for these massives libs and try to prune them down/move
them to smaller subtargets with interfaces and so on, but that's
probably going to take a while so as a cheat in the bazel guide:
https://bazel.build/configure/windows they mention that the flag
"compiler_param_file" can bypass this so I added this and hoping it
works.

---------

Signed-off-by: joshlee <joshlee@anyscale.com>
Signed-off-by: Limark Dcunha <limarkdcunha@gmail.com>
limarkdcunha pushed a commit to limarkdcunha/ray that referenced this pull request Jan 18, 2026
… 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: Limark Dcunha <limarkdcunha@gmail.com>
jeffery4011 pushed a commit to jeffery4011/ray that referenced this pull request Jan 20, 2026
…eManager from GCS (ray-project#60121)

This PR stacks on ray-project#60019.

This is 3/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, I've removed the GCS's dependency on the LocalLeaseManager.
I've also moved LocalLeaseManager to the raylet/scheduling package and
made it's visibility private to the package. Also deleted the
NoopLocalLeaseManager.

The LocalLeaseManager is used by the ClusterLeaseManager to see if a
task can scheduled locally by a Raylet. The GCS used only the Noop
implementation.

---------

Signed-off-by: irabbani <irabbani@anyscale.com>
Signed-off-by: Ibrahim Rabbani <irabbani@anyscale.com>
Signed-off-by: jeffery4011 <jefferyshen1015@gmail.com>
jinbum-kim pushed a commit to jinbum-kim/ray that referenced this pull request Jan 29, 2026
…roject#60213)

It seems the windows build started breaking in between commits bfa6f0b
and 9ce0cd0 due to the compile command for gcs_server_lib being too
long. The only PR that went in that would've caused this is ray-project#59979 which
used local_lease_manager instead of possibly using
local_lease_manager_interface in the dependency list. However, ray-project#60121
was merged shortly after that removes this dependency entirely. I'm not
sure if something else is potentially being drawn in transitively and if
that contributes to the compile command used in windows?

It does seem like we're on the knife's edge for the windows command line
length limit 32768. A better long term fix would be to obviously revist
the bazel file for these massives libs and try to prune them down/move
them to smaller subtargets with interfaces and so on, but that's
probably going to take a while so as a cheat in the bazel guide:
https://bazel.build/configure/windows they mention that the flag
"compiler_param_file" can bypass this so I added this and hoping it
works.

---------

Signed-off-by: joshlee <joshlee@anyscale.com>
Signed-off-by: jinbum-kim <jinbum9958@gmail.com>
jinbum-kim pushed a commit to jinbum-kim/ray that referenced this pull request Jan 29, 2026
… 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: jinbum-kim <jinbum9958@gmail.com>
ryanaoleary pushed a commit to ryanaoleary/ray that referenced this pull request Feb 3, 2026
…eManager from GCS (ray-project#60121)

This PR stacks on ray-project#60019.

This is 3/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, I've removed the GCS's dependency on the LocalLeaseManager.
I've also moved LocalLeaseManager to the raylet/scheduling package and
made it's visibility private to the package. Also deleted the
NoopLocalLeaseManager.

The LocalLeaseManager is used by the ClusterLeaseManager to see if a
task can scheduled locally by a Raylet. The GCS used only the Noop
implementation.

---------

Signed-off-by: irabbani <irabbani@anyscale.com>
Signed-off-by: Ibrahim Rabbani <irabbani@anyscale.com>
ryanaoleary pushed a commit to ryanaoleary/ray that referenced this pull request Feb 3, 2026
…roject#60213)

It seems the windows build started breaking in between commits bfa6f0b
and 9ce0cd0 due to the compile command for gcs_server_lib being too
long. The only PR that went in that would've caused this is ray-project#59979 which
used local_lease_manager instead of possibly using
local_lease_manager_interface in the dependency list. However, ray-project#60121
was merged shortly after that removes this dependency entirely. I'm not
sure if something else is potentially being drawn in transitively and if
that contributes to the compile command used in windows?

It does seem like we're on the knife's edge for the windows command line
length limit 32768. A better long term fix would be to obviously revist
the bazel file for these massives libs and try to prune them down/move
them to smaller subtargets with interfaces and so on, but that's
probably going to take a while so as a cheat in the bazel guide:
https://bazel.build/configure/windows they mention that the flag
"compiler_param_file" can bypass this so I added this and hoping it
works.

---------

Signed-off-by: joshlee <joshlee@anyscale.com>
ryanaoleary pushed a commit to ryanaoleary/ray that referenced this pull request Feb 3, 2026
… 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>
peterxcli pushed a commit to peterxcli/ray that referenced this pull request Feb 25, 2026
…eManager from GCS (ray-project#60121)

This PR stacks on ray-project#60019.

This is 3/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, I've removed the GCS's dependency on the LocalLeaseManager.
I've also moved LocalLeaseManager to the raylet/scheduling package and
made it's visibility private to the package. Also deleted the
NoopLocalLeaseManager.

The LocalLeaseManager is used by the ClusterLeaseManager to see if a
task can scheduled locally by a Raylet. The GCS used only the Noop
implementation.

---------

Signed-off-by: irabbani <irabbani@anyscale.com>
Signed-off-by: Ibrahim Rabbani <irabbani@anyscale.com>
Signed-off-by: peterxcli <peterxcli@gmail.com>
peterxcli pushed a commit to peterxcli/ray that referenced this pull request Feb 25, 2026
…roject#60213)

It seems the windows build started breaking in between commits bfa6f0b
and 9ce0cd0 due to the compile command for gcs_server_lib being too
long. The only PR that went in that would've caused this is ray-project#59979 which
used local_lease_manager instead of possibly using
local_lease_manager_interface in the dependency list. However, ray-project#60121
was merged shortly after that removes this dependency entirely. I'm not
sure if something else is potentially being drawn in transitively and if
that contributes to the compile command used in windows?

It does seem like we're on the knife's edge for the windows command line
length limit 32768. A better long term fix would be to obviously revist
the bazel file for these massives libs and try to prune them down/move
them to smaller subtargets with interfaces and so on, but that's
probably going to take a while so as a cheat in the bazel guide:
https://bazel.build/configure/windows they mention that the flag
"compiler_param_file" can bypass this so I added this and hoping it
works.

---------

Signed-off-by: joshlee <joshlee@anyscale.com>
Signed-off-by: peterxcli <peterxcli@gmail.com>
peterxcli pushed a commit to peterxcli/ray that referenced this pull request Feb 25, 2026
… 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>
peterxcli pushed a commit to peterxcli/ray that referenced this pull request Feb 25, 2026
…eManager from GCS (ray-project#60121)

This PR stacks on ray-project#60019.

This is 3/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, I've removed the GCS's dependency on the LocalLeaseManager.
I've also moved LocalLeaseManager to the raylet/scheduling package and
made it's visibility private to the package. Also deleted the
NoopLocalLeaseManager.

The LocalLeaseManager is used by the ClusterLeaseManager to see if a
task can scheduled locally by a Raylet. The GCS used only the Noop
implementation.

---------

Signed-off-by: irabbani <irabbani@anyscale.com>
Signed-off-by: Ibrahim Rabbani <irabbani@anyscale.com>
Signed-off-by: peterxcli <peterxcli@gmail.com>
peterxcli pushed a commit to peterxcli/ray that referenced this pull request Feb 25, 2026
…roject#60213)

It seems the windows build started breaking in between commits bfa6f0b
and 9ce0cd0 due to the compile command for gcs_server_lib being too
long. The only PR that went in that would've caused this is ray-project#59979 which
used local_lease_manager instead of possibly using
local_lease_manager_interface in the dependency list. However, ray-project#60121
was merged shortly after that removes this dependency entirely. I'm not
sure if something else is potentially being drawn in transitively and if
that contributes to the compile command used in windows?

It does seem like we're on the knife's edge for the windows command line
length limit 32768. A better long term fix would be to obviously revist
the bazel file for these massives libs and try to prune them down/move
them to smaller subtargets with interfaces and so on, but that's
probably going to take a while so as a cheat in the bazel guide:
https://bazel.build/configure/windows they mention that the flag
"compiler_param_file" can bypass this so I added this and hoping it
works.

---------

Signed-off-by: joshlee <joshlee@anyscale.com>
Signed-off-by: peterxcli <peterxcli@gmail.com>
peterxcli pushed a commit to peterxcli/ray that referenced this pull request Feb 25, 2026
… 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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

core Issues that should be addressed in Ray Core go add ONLY when ready to merge, run all tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants