@@ -254,9 +254,8 @@ NodeResources LocalResourceManager::ToNodeResources() const {
254254 node_resources.available = local_resources_.available .ToNodeResourceSet ();
255255 node_resources.total = local_resources_.total .ToNodeResourceSet ();
256256 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 ();
260259 return node_resources;
261260}
262261
@@ -330,8 +329,7 @@ void LocalResourceManager::PopulateResourceViewSyncMessage(
330329 }
331330
332331 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 ());
335333
336334 for (const auto &iter : last_idle_times_) {
337335 if (iter.second == absl::nullopt ) {
@@ -383,7 +381,8 @@ std::optional<syncer::RaySyncMessage> LocalResourceManager::CreateSyncMessage(
383381void LocalResourceManager::OnResourceOrStateChanged () {
384382 if (IsLocalNodeDraining () && IsLocalNodeIdle ()) {
385383 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));
387386 }
388387
389388 ++version_;
@@ -393,6 +392,22 @@ void LocalResourceManager::OnResourceOrStateChanged() {
393392 resource_change_subscriber_ (ToNodeResources ());
394393}
395394
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+
396411bool LocalResourceManager::ResourcesExist (scheduling::ResourceID resource_id) const {
397412 return local_resources_.total .Has (resource_id);
398413}
@@ -445,11 +460,8 @@ void LocalResourceManager::RecordMetrics() const {
445460}
446461
447462void 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);
453465 OnResourceOrStateChanged ();
454466}
455467
0 commit comments