Commit graph

2488 commits

Author SHA1 Message Date
SangBin Cho
6649f078e5
[Internal Observability] Move debug_state.txt to the log dir + support gcs_server debug state (#20722)
Moving debug_state.txt to the log directory. This will help us finding debug_state.txt from the dashboard. See below.
Add debug_state_gcs.txt. This will display GCS' debug state. GCS will also dump debug state to the file every 10 seconds
For periodic printing of debug state, I made it happen every 1 minute. This is because every 10 seconds usually is very spammy.
2021-11-28 20:42:37 -08:00
Philipp Moritz
15a51b7c65
Use thread local random number generator (#20708) 2021-11-27 15:44:44 -08:00
Qing Wang
116bda8f05
[Core] Remove duplicated implementations of concurrency group executor. (#20467)
## Why are these changes needed?
ThreadPoolManager and FiberStateManager have the same functionality and logic. This PR aims to remove the duplicate implementations of them.

Add a ConcurrencyGroupExecutor class to do that logic. `ConcurrencyGroupExecutor<FiberState>` is used as FiberStateManager, `ConcurrencyGroupExecutor<BoundedExecutor>` is used as ThreadPoolManager.
2021-11-27 12:57:40 +08:00
Kai Yang
722428a657
[Core] Fix worker pool crash due to incorrect pending_exit_idle_workers_ usage (#20180)
## Why are these changes needed?

When the Java multi-worker feature is on and if workers respond `Exit` requests from the worker pool with delays (even slower than the interval of `TryKillingIdleWorkers`), the worker pool may send additional `Exit` requests to workers before receiving replies of previous ones. This leads to a `RAY_CHECK` failure from here

60df705b4e/src/ray/raylet/worker_pool.cc (L984)

due to executing two reply callbacks in a row.

This PR fixes the bug by ensuring the worker pool only sends new `Exit` requests to a worker if there are no inflight `Exit` requests to any worker of the worker process.
2021-11-26 13:50:07 +08:00
SangBin Cho
31f378e45a
[Part 2] Improve RayActorDiedError: Store why the actor is dead to the actor table. (#20528)
This PR includes the precise reason why actor is dead to `ActorTable`. The `death cause` stored in the table will be propagated to core worker through pubsub, so that core worker can eventually raise a good error message with metadata.
2021-11-25 04:39:02 -08:00
Guyang Song
454b7bd125
Revert "Revert "[core] add runtime env info to task spec debug string (#20668)" (#20697)
## Why are these changes needed?
- fix compiling error and revert the revert.
2021-11-24 23:03:10 -08:00
Qing Wang
cd2b83a259
[Core][ConcurrencyGroup] Fix blocking task in default group block tasks in other group. (#20525)
Why are these changes needed?
If max concurrency is 1 in default group, a blocking task executing in default group will block the following tasks in different group. See reproduction script in #20475

The issue is due to tasks executing in the default concurrent group run in the main task execution thread, and tasks in other concurrent groups will be blocked if the main task execution thread is blocked.

This PR only changes concurrent actor behavior that default group will not block other groups.

Related issue number
Fix #20475
2021-11-25 14:24:17 +08:00
SangBin Cho
d725457c9f
[Part 3] Improve ActorDiedError message: Passing error info (#20701)
<!-- Please add a reviewer to the assignee section when you create a PR. If you don't have the access to it, we will shortly find a reviewer and assign them to your PR. -->

## Why are these changes needed?

In this PR, instead of passing specific "creation_task_exception", we pass RayErrorInfo. This will allow us to pass any type of error metadata to MarkTaskReturnObjectFailed. 

This PR is basically refactoring. 

## Related issue number

https://github.com/ray-project/ray/issues/20534

## Checks

- [ ] I've run `scripts/format.sh` to lint the changes in this PR.
- [ ] I've included any doc changes needed for https://docs.ray.io/en/master/.
- [ ] I've made sure the tests are passing. Note that there might be a few flaky tests, see the recent failures at https://flakey-tests.ray.io/
- Testing Strategy
   - [ ] Unit tests
   - [ ] Release tests
   - [ ] This PR is not tested :(
2021-11-24 19:29:20 -08:00
qicosmos
c6e347c06f
Clean exported symbols (#20608)
* linkopts shared

* try to remove some symbols

* revert PyInit

* remove opencensus

* add suffix

* try to remove JNI

* _JNI_On*
2021-11-24 18:23:01 -08:00
Gagandeep Singh
f22a24aca4
Replace time based seed generation with absl::BitGen and absl::Uniform (#20696) 2021-11-24 14:36:35 -08:00
Guyang Song
53630ee03b
Revert "Revert "[runtime env] redefine runtime env to protobuf"" and fix windows compiling (#20692)
- Fix windows compiling and revert https://github.com/ray-project/ray/pull/20641
- Seems the pr https://github.com/ray-project/ray/pull/20670 can solve the windows compiling issue.
2021-11-24 09:01:01 -08:00
SangBin Cho
e310f6c76f
[Part 1] Improve RayActorDeadError: Refactoring (#20458)
This is the first step to improve `RayActorError` which doesn't provide any information to the user.

In the first step, we re-define ambiguous / confusing APIs and code path. 

1. Change the name of APIs that expose too less information
- MarkPendingTaskFailed -> MarkPendingTaskObjectFailed (API too general compared to what it does)
- PendingTaskFailed  -> FailOrRetryPendingTask (API name doesn't make much sense compared to its behavior).

2. Change the name of arguments that expose too much impl detail
- immediately_mark_object_fail -> mark_task_object_failed (no need to specify "immediately")

3. Move msgpack serialization to a util function instead of embedding it to the task manager function.
2021-11-24 05:11:33 -08:00
Matti Picus
08655ab812
[Windows] only report metric reporting failure once (#20426) 2021-11-23 17:35:58 -08:00
Yi Cheng
40db73c2ff
[gcs] Fix internal kv as the bottleneck when worker starts (#20662)
## Why are these changes needed?

Before the commit (e54d3117a4) all traffics go to redis which is a dedicated service.

After moving to gcs, internal kv are competing with gcs traffic which make it a bottleneck sometimes.

Before this PR, `many_actor` tests are failing, the reason is that when a lot of actors starts, gcs is really heavy loads, and then worker starts timeout because it failed to get internal kv requests executed in short time.
When worker failed, it'll starts a new worker even the original one is pending, and in the end there will be a lot workers.

There are several things here need to fix and this is the quick fix for this issues which also convert it back to the status when we are using redis.

## Related issue number

Closes #20602
2021-11-23 15:13:07 -08:00
SangBin Cho
720bca8a1c
Revert "[core] add runtime env info to task spec debug string (#20631)" (#20668)
This reverts commit e9132ed7ca.

<!-- Thank you for your contribution! Please review https://github.com/ray-project/ray/blob/master/CONTRIBUTING.rst before opening a pull request. -->

<!-- Please add a reviewer to the assignee section when you create a PR. If you don't have the access to it, we will shortly find a reviewer and assign them to your PR. -->

## Why are these changes needed?

Seems to break Windows build. 

```
(07:46:25) ERROR: BUILD.bazel:406:11: Compiling src/ray/common/task/task_spec.cc failed: (Exit 2): cl.exe failed: error executing command
```

<img width="487" alt="Screen Shot 2021-11-23 at 3 09 18 AM" src="https://user-images.githubusercontent.com/18510752/143013973-f157724c-4951-49a9-80c6-158d41aa4295.png">


## Related issue number

<!-- For example: "Closes #1234" -->

## Checks

- [ ] I've run `scripts/format.sh` to lint the changes in this PR.
- [ ] I've included any doc changes needed for https://docs.ray.io/en/master/.
- [ ] I've made sure the tests are passing. Note that there might be a few flaky tests, see the recent failures at https://flakey-tests.ray.io/
- Testing Strategy
   - [ ] Unit tests
   - [ ] Release tests
   - [ ] This PR is not tested :(
2021-11-23 03:09:39 -08:00
Guyang Song
e9132ed7ca
[core] add runtime env info to task spec debug string (#20631) 2021-11-23 14:10:56 +08:00
Guyang Song
191be85057
[script][format] check copyright for .proto files (#20632)
## Why are these changes needed?
- I found that we also have a copyright header in .proto files. Add it to the copyright formatter.
2021-11-23 12:26:30 +08:00
Alex Wu
9388d28233
Revert "[runtime env] redefine runtime env to protobuf" (#20641)
Reverts #19511

Breaks windows compilation
2021-11-22 13:11:30 -08:00
Chen Shen
dc726ab6ba
[Core][Refactor CoreWorker 2/n] split CoreWorkerProcess from CoreWorker #19677
Move CoreWorkerProcess from CoreWorker into separate files. This PR depends on #19675. The follow up PR is #19678
2021-11-22 11:06:35 -08:00
Stephanie Wang
88136fa495
[core] Timeout object fetches that take too long (#20516)
Remerging #19789 with some fixes for Dask-on-Ray 1TB sort:

- Fixes a bug where the timer was not getting reset correctly
- Increased timeout to 10min just to be safe
- Changed the error to a unique exception ObjectFetchTimedOutError to improve debugging. 

This exception should usually indicate a system-level bug.
2021-11-20 16:43:56 -08:00
Guyang Song
ad56b9b432
[runtime env] redefine runtime env to protobuf (#19511) 2021-11-20 16:54:42 +08:00
Alex Wu
4cc225e9d4
Revert "Revert "[core] Nested task support via task depth + backpressure" (#20438)" (#20443)
This PR reverts the previous revert with the following minor changes.

Worker capping is off by default.
The cap feature flag is on the for the tests that explicitely require it.
2021-11-19 15:22:35 -08:00
Chen Shen
77a8723bba
[Core][actor out-of-order execution 6/n] plumbing work to make it work e2e (#20177)
This PR is the last PR that enables out of order execution. Previous PR: #20176

In this PR specifically, we added an execute_out_of_order option to .options call, which creates the actor with both out_of_order_submit_queue and out_of_order_scheduling queue.

this PR also added @simon-mo original case for testing.
2021-11-19 11:05:18 -08:00
Chen Shen
f0e8d66a85
[Core][Refactor CoreWorker 1/n] move CoreWorkerOptions to its own file #19675
Why are these changes needed?
This is a serial of PRs to make CoreWorkerProcess thread-safe and CoreWorker Code easy to read. [#19675 #19677 #19678 #19679]

Move CoreWorkerOptions out of core_worker.h; makes the code easier to read.

Next PR: #19677
2021-11-19 09:24:30 -08:00
Chen Shen
2012b469f6
fix gcs client hang (#20531) 2021-11-18 07:28:15 -08:00
Larry
454db6902c
[Java] Add timeout parameter for Ray.get() API (#20282)
Why are these changes needed?

Add timeout(ms) param for Java ray.get. The API changes have been updated to doc ([Ray Core Walkthrough]->[Fetching Results]).

eg:
ObjectRef<Integer> objRef = Ray.put(1);
objRef.get(1000) 
Ray.get(Ray.task(MyRayApp::slowFunction).remote(), 3000)

Related issue number
#20247
2021-11-17 11:02:17 +08:00
Eric Liang
12a4489e30
Revert "[core] Nested task support via task depth + backpressure" (#20438)
Reverts ray-project/ray#17887

This causing several tests to be flaky (test_multinode_failures, test_virtual_actor, test_component_failures_2).
2021-11-16 11:14:45 -08:00
Chen Shen
33c1ee0e86
[Core][actor out-of-order execution 5/n] implement out-of-order scheduling queue #20176
This PR belongs to the stack that enables out of order execution. Previous PR: #20160, Next PR: #20177

In this PR specifically, we implemented a simple out_of_order_scheduling queue which queues the task for execution as soon as the dependency is ready.
2021-11-16 10:53:51 -08:00
Chen Shen
f02b53a810
[Core][actor out-of-order execution 3/n] Introducing out-of-order actor submit queue (#20150)
Why are these changes needed?
This is the third PR in the stack that supports out or order execution for threaded/async actors. Previous PR #20149 Next PR #20160
At a high level, threaded actor/async actor already don't guarantee execution order, and the current "sequential" order implementation has caused some confusion and inconvenience. Please refer to #19822 for detailed discussion.

In this PR, we implemented the out-of-order of queue that supports out of order execution. Conceptually it's very simple: it sends the requests as soon as the dependency is resolved.
2021-11-16 10:48:49 -08:00
SangBin Cho
137aec04c0
[Core] Better logs job message failure (#20363)
<!-- Please add a reviewer to the assignee section when you create a PR. If you don't have the access to it, we will shortly find a reviewer and assign them to your PR. -->

## Why are these changes needed?

There's one user who has an issue that one of raylets cannot schedule tasks anymore because `num_worker_not_started_by_job_config_not_exist ` > 0.

This PR adds better log messages to figure out if the root cause is the job information is not properly propagated from GCS to raylet through Redis pubsub. 

## Related issue number

<!-- For example: "Closes #1234" -->

## Checks

- [ ] I've run `scripts/format.sh` to lint the changes in this PR.
- [ ] I've included any doc changes needed for https://docs.ray.io/en/master/.
- [ ] I've made sure the tests are passing. Note that there might be a few flaky tests, see the recent failures at https://flakey-tests.ray.io/
- Testing Strategy
   - [ ] Unit tests
   - [ ] Release tests
   - [ ] This PR is not tested :(
2021-11-16 04:20:49 -08:00
Stephanie Wang
31eb385426
Revert "Revert "Revert "[core] Fail objects when pull/reconstruction hangs (#19789)" (#19904)" (#20120)" (#20406)
This reverts commit 0f57a9a105.
2021-11-15 20:36:22 -08:00
Alex Wu
75f421a3fd
[core] Nested task support via task depth + backpressure (#17887)
* needs depth

* depth

* .

* .

* .

* lint

* .

* lint

* fix tests

* .

* .

* .

* .

* cleanup

* .

* tests

* .

* more tests

* fix rest(?) of tests

* cleanup

* .

* .

* .

* .

* lint

* fix test basic

* fix ref counting?

* cleanup

* lint

* .

* pass dataset pipeline test

* .

* stephanie's comments + fix tests

* cleanup

* cleanup

* minor cleanup, then fix merge conflict

* lint

* cast

* feature flag

* lint

* lint

* refactor

* needs cleanup

* should pass

* lint

* .

* .

* .

* work?

* .

* works?

* lint

* work?

* .

* fix cpp tests

* .

* .

* split test

* fix windows?

* fix windows?

* fix test + check

* .

* all passing

* tests

* lint

* cleanup

* .

* most stephanie ocmments

* lint

* remove timer

* .

* allowed - capacity

* .

* everything except barrier

* addd guard

* works

* lint

* works?

* debug string

* last comment?

* short comments

* most comments

* lint

* done?

* done?

* .

* .

* .

* .

* done?

* done?

* update

* lint

* fix last test

* .

* .

* .

* .

* .

* .

* debug

* .

* .

* .

* .

* fix type

* .

* .

* cleanup

Co-authored-by: Alex Wu <alex@anyscale.com>
2021-11-15 17:39:50 -08:00
Lixin Wei
85dbda8cf1
[Core] Fix Crash in Debug Log (#20322)
* fix crash in debug log

* fix

* fix

* fix
2021-11-16 00:45:00 +09:00
Lixin Wei
b7e35acf14
[RuntimeEnv] Raise RuntimeEnvSetupError when Actor Creation Failed due to It (#19888)
* ray_pkg passed

* fix

* fix typo

* fix test

* fix test

* fix test

* fix

* draft

* compile OK

* lint

* fix

* lint

* fix ci

* Update src/ray/gcs/gcs_server/gcs_actor_manager.cc

Co-authored-by: SangBin Cho <rkooo567@gmail.com>

* remove comment

* rename

* resolve conflict

* use unique ownership

* use DestroyActor instead of ReconstructActor

* fix sigment fault

* fix crash in debug log

* Revert "fix crash in debug log"

This reverts commit 8f0e3d37f062b664d8d0e07c6c1a9a715b8ba1ee.

Co-authored-by: SangBin Cho <rkooo567@gmail.com>
2021-11-15 07:43:35 -08:00
Qing Wang
1172195571
[Java] Remove global named actor and global pg (#20135)
This PR removes global named actor and global PGs.

I believe these APIs are not used widely in OSS.
CPP part is not included in this PR.
@kfstorm @clay4444 @raulchen Please take a look if this change is reasonable.


IMPORTANT NOTE: This is a Java API change and will lead backward incompatibility in Java global named actor and global PG usage.

CPP part is not included in this PR.
INCLUDES:

 Remove setGlobalName() and getGlobalActor() APIs.
 Remove getGlobalPlacementGroup() and setGlobalPG
 Add getActor(name, namespace) API
 Add getPlacementGroup(name, namespace) API
 Update doc pages.
2021-11-15 16:28:53 +08:00
SangBin Cho
477b6265d9
[Core] Fix get_actor consistency on ray.kill (#20178)
* Improve race condition on ray.kill

* Fix a bug.

* Fix a bug

* fix core worker test

* done
2021-11-14 23:29:47 -08:00
Jiajun Yao
61778a952d
Only grant or reject spillback lease request (#20050) 2021-11-14 21:34:28 -08:00
SangBin Cho
475e4dbf76
[Core] Fix pg stats not imported (#20288)
* Fix pg stats not imported

* Fix metrics are not exported to the test
2021-11-14 19:05:57 -08:00
Chen Shen
6777a31751
[Core][actor out-of-order execution 2/n] create abstraction for the queuing logic on the client/actor submission. (#20149)
This second PR in the stack that supports out or order execution for threaded/async actors. Previous PR #20148 Next PR #20150
At a high level, threaded actor/async actor already don't guarantee execution order, and the current "sequential" order implementation has caused some confusion and inconvenience. Please refer to #19822 for detailed discussion.

This PR we further separate out the logic for ordering actor requests on the client side. In the next PR, we will implement a different type of queue that supports out of order execution.
2021-11-14 18:50:54 -08:00
Stephanie Wang
0f57a9a105
Revert "Revert "[core] Fail objects when pull/reconstruction hangs (#19789)" (#19904)" (#20120)
* Revert "Revert "[core] Fail objects when pull/reconstruction hangs (#19789)" (#19904)"

This reverts commit 630a8cacb3.

* debug

* fix/

* lint

* x

* fix

* x

* test

* x
2021-11-14 14:24:02 -08:00
Chen Shen
e49251d82e
[Core][actor out-of-order execution 4/n] refactor the actor receiver code
This is part of stack that enable out-of-order execution for actors. Previous PR #20150 Next PR #20176

Refactor the actor receiver code, by separating classes into their own header/cc files. specifically:
scheduling_queue.h for ScheduleQueue interface;
actor_scheduling_util.h for InBountRequest/DependencyWaiter/DependencyWaiterImpl
actor_scheduling_queue.h for ActorScheudlingQueue (the sequential execution queue)
normal_scheduling_queue.h for NormalSchedulingQueue (the task execution queue)
fiber_state_manager.h for FiberStateManager
thread_pool_manager.h for PoolManager and BoundedExecutor
2021-11-14 14:01:33 -08:00
Jiajun Yao
f8b738d029
[scheduler] Add scheduling debug log (#20302) 2021-11-12 18:48:05 -08:00
architkulkarni
138ec75246
[runtime env] Revert reference counting for per-actor URIs (#20281) 2021-11-12 11:09:38 -08:00
Chen Shen
a617cb8813
[Core][actor out-of-order execution 1/n] Move CoreWorkerDirectActorTaskSubmitter into a separate file
This is the stack of PRs that supports out or order execution for threaded/async actors. Next PR #20149
At a high level, threaded actor/async actor already don't guarantee execution order, and the current "sequential" order implementation has caused some confusion and inconvenience. Please refer to #19822 for detailed discussion.

The major changes of this stack is

introduce OutOfOrderActorSubmitQueue ([Core][actor out-of-order execution 3/n] Introducing out-of-order actor submit queue #20150)
Specifically, we have a per-client task submit queue, which guarantees the sequential order of task submission. In [Core][actor out-of-order execution 3/n] Introducing out-of-order actor submit queue #20150 we introduce OutOfOrderActorSubmitQueue, which relaxes the guarantee; it send the task over the network as soon as its dependency is resolved.
-- there are 2 PRs ([Core][actor out-of-order execution 1/n] Move CoreWorkerDirectActorTaskSubmitter into a separate file #20148 and [Core][actor out-of-order execution 2/n] create abstraction for the queuing logic on the client/actor submission. #20149) precedes this PR, which refactor the actor submission logic to make the abstraction possible.

OutOfOrderActorSchedullingQueue ([Core][actor out-of-order execution 5/n] implement out-of-order scheduling queue #20176)
Similarly, we also have a per-client task scheduling queue on the actor to ensure tasks are executed according to the submission order (sequence_no). OutOfOrderActorSchedullingQueue relaxes the guarantee by enqueuing the task as soon as all their dependencies are resolved.
-- there is one PR ([Core][actor out-of-order execution 4/n] refactor the actor receiver code #20160) precedes this PR, which refactor the actor scheduling logic to make it the code easier to read; however this one is optional.

plumbing PR ([Core][actor out-of-order execution 6/n] plumbing work to make it work e2e #20177)
This PR enables the out of order execution by introducing options(execute_out_of_order=True); and create actor client/server components according to the configuration.

There are something the PR hasn't touched upon is the restart/retry guarantees, which might need some discussion.

This PR we separate client from server code for Actor task submission. This makes the follow up change easier.
2021-11-12 09:28:58 -08:00
SangBin Cho
7132f91789
[Core] Reduce the frequency of retry messages (#20175)
* Reduce the frequency of retry messages

* done
2021-11-11 23:52:37 -08:00
Qing Wang
5d773e75e6
Fix idle worker leak issue if it received a SIGTERM when DrainAndShutdown. (#19877)
This PR fixes the issue that worker might be leaked if task finished with some errors.
See #19639 for more details.
2021-11-12 09:26:46 +08:00
mwtian
0330852baf
[Core][Pubsub] Implement Python GCS publisher and subscriber (#20111)
## Why are these changes needed?
This change adds Python publisher and subscriber in `gcs_utils.py`, and GRPC handler on GCS for publishing iva GCS. Error info is migrated to use the GCS-based pubsub, if feature flag `RAY_gcs_grpc_based_pubsub=true`.

Also, add a `--gcs-address` flag to some Python processes. It is not set anywhere yet, but will be set aftering Redis-less bootstrapping work.

Unit tests are added for the Python publisher and subscriber. Migrated error info publishers and subscribers are tested with existing unit tests, e.g. tests calling `ray._private.test_utils.get_error_message()` to ensure error info is published.

GCS based pubsub has gaps in handling deadline, cancelled requests and GCS restarts. So 3 more unit tests are disabled in the `HA GCS` mode. They will be addressed in a separate change.

## Related issue number
2021-11-11 14:59:57 -08:00
liuyang-my
efca009258
[Serve] Make Java Replica Extendable (#19463) 2021-11-10 15:05:37 -08:00
architkulkarni
923131ba37
[runtime env] Enable reference counting for URIs for actors (#20165) 2021-11-10 10:52:03 -08:00
DK.Pino
2c41936a39
[Placement Group] [Test] Fix pg.ready hang forever when gcs restarting (#20063)
* fixed

* lint

* fix comment

* revert previous fix code
2021-11-10 00:53:42 -08:00