@@ -254,9 +254,8 @@ NodeResources LocalResourceManager::ToNodeResources() const {
254
254
node_resources.available = local_resources_.available .ToNodeResourceSet ();
255
255
node_resources.total = local_resources_.total .ToNodeResourceSet ();
256
256
node_resources.labels = local_resources_.labels ;
257
- node_resources.is_draining = is_local_node_draining_;
258
- node_resources.draining_deadline_timestamp_ms =
259
- local_node_draining_deadline_timestamp_ms_;
257
+ node_resources.is_draining = IsLocalNodeDraining ();
258
+ node_resources.draining_deadline_timestamp_ms = GetDrainingDeadline ();
260
259
return node_resources;
261
260
}
262
261
@@ -330,8 +329,7 @@ void LocalResourceManager::PopulateResourceViewSyncMessage(
330
329
}
331
330
332
331
resource_view_sync_message.set_is_draining (IsLocalNodeDraining ());
333
- resource_view_sync_message.set_draining_deadline_timestamp_ms (
334
- local_node_draining_deadline_timestamp_ms_);
332
+ resource_view_sync_message.set_draining_deadline_timestamp_ms (GetDrainingDeadline ());
335
333
336
334
for (const auto &iter : last_idle_times_) {
337
335
if (iter.second == absl::nullopt ) {
@@ -383,7 +381,8 @@ std::optional<syncer::RaySyncMessage> LocalResourceManager::CreateSyncMessage(
383
381
void LocalResourceManager::OnResourceOrStateChanged () {
384
382
if (IsLocalNodeDraining () && IsLocalNodeIdle ()) {
385
383
RAY_LOG (INFO) << " The node is drained, continue to shut down raylet..." ;
386
- shutdown_raylet_gracefully_ (node_death_info_);
384
+ rpc::NodeDeathInfo node_death_info = DeathInfoFromDrainRequest ();
385
+ shutdown_raylet_gracefully_ (std::move (node_death_info));
387
386
}
388
387
389
388
++version_;
@@ -393,6 +392,22 @@ void LocalResourceManager::OnResourceOrStateChanged() {
393
392
resource_change_subscriber_ (ToNodeResources ());
394
393
}
395
394
395
+ rpc::NodeDeathInfo LocalResourceManager::DeathInfoFromDrainRequest () {
396
+ rpc::NodeDeathInfo death_info;
397
+ RAY_CHECK (drain_request_.has_value ());
398
+ if (drain_request_->reason () ==
399
+ rpc::autoscaler::DrainNodeReason::DRAIN_NODE_REASON_IDLE_TERMINATION) {
400
+ death_info.set_reason (rpc::NodeDeathInfo::AUTOSCALER_DRAIN_IDLE);
401
+ death_info.set_reason_message (drain_request_->reason_message ());
402
+ } else {
403
+ RAY_CHECK_EQ (drain_request_->reason (),
404
+ rpc::autoscaler::DrainNodeReason::DRAIN_NODE_REASON_PREEMPTION);
405
+ death_info.set_reason (rpc::NodeDeathInfo::AUTOSCALER_DRAIN_PREEMPTED);
406
+ death_info.set_reason_message (drain_request_->reason_message ());
407
+ }
408
+ return death_info;
409
+ }
410
+
396
411
bool LocalResourceManager::ResourcesExist (scheduling::ResourceID resource_id) const {
397
412
return local_resources_.total .Has (resource_id);
398
413
}
@@ -445,11 +460,8 @@ void LocalResourceManager::RecordMetrics() const {
445
460
}
446
461
447
462
void LocalResourceManager::SetLocalNodeDraining (
448
- int64_t draining_deadline_timestamp_ms, const rpc::NodeDeathInfo &node_death_info) {
449
- RAY_CHECK_GE (draining_deadline_timestamp_ms, 0 );
450
- is_local_node_draining_ = true ;
451
- local_node_draining_deadline_timestamp_ms_ = draining_deadline_timestamp_ms;
452
- node_death_info_ = node_death_info;
463
+ const rpc::DrainRayletRequest &drain_request) {
464
+ drain_request_ = std::make_optional (drain_request);
453
465
OnResourceOrStateChanged ();
454
466
}
455
467
0 commit comments