@@ -4,6 +4,7 @@ module Runtimes
44 module Grpc
55 class RuntimeStatusUpdateService
66 include Sagittarius ::Database ::Transactional
7+ include Code0 ::ZeroTrack ::Loggable
78
89 attr_reader :runtime , :status_info
910
@@ -24,45 +25,37 @@ def execute
2425 )
2526 end
2627
27- db_status = RuntimeStatus . find_or_initialize_by ( runtime : current_runtime ,
28+ db_status = RuntimeStatus . find_or_initialize_by ( runtime : runtime ,
2829 identifier : status_info . identifier )
2930
30- db_status . last_heartbeat = Time . zone . at ( status_info . last_heartbeat . seconds )
31+ db_status . last_heartbeat = Time . zone . at ( status_info . timestamp . to_i )
3132 db_status . status_type = if status_info . is_a? ( Tucana ::Shared ::AdapterRuntimeStatus )
3233 :adapter
3334 else
3435 :execution
3536 end
36- db_status . feature_set = status_info . feature_set . to_a
37+ db_status . features = status_info . features . to_a
3738
38- case status_info . status
39- when Tucana ::Shared ::Status ::NOT_RESPONDING
40- db_status . status = :not_responding
41- when Tucana ::Shared ::Status ::NOT_READY
42- db_status . status = :not_ready
43- when Tucana ::Shared ::Status ::RUNNING
44- db_status . status = :running
45- when Tucana ::Shared ::Status ::STOPPED
46- db_status . status = :stopped
47- else
48- logger . error ( "Unknown status received: #{ status_info . status } " )
49- t . rollback_and_return ServiceResponse . error (
50- message : 'Unknown status received' ,
51- error_code : :invalid_runtime_status ,
52- details : { status : status_info . status }
53- )
54- end
39+ db_status . status = status_info . status . downcase
5540
5641 db_configs = db_status . runtime_status_configurations . first ( status_info . configurations . size )
5742
5843 status_info . configurations . each_with_index do |config , index |
5944 db_configs [ index ] ||= db_status . runtime_status_configurations . build
6045
6146 db_configs [ index ] . endpoint = config . endpoint
47+
48+ next if db_configs [ index ] . save
49+
50+ t . rollback_and_return! ServiceResponse . error (
51+ message : 'Failed to save runtime status configuration' ,
52+ error_code : :invalid_runtime_status_configuration ,
53+ details : db_configs . errors
54+ )
6255 end
6356
6457 unless db_status . save
65- t . rollback_and_return ServiceResponse . error (
58+ t . rollback_and_return! ServiceResponse . error (
6659 message : 'Failed to save runtime status' ,
6760 error_code : :invalid_runtime_status ,
6861 details : db_status . errors
0 commit comments