Skip to content

Commit 24f431c

Browse files
committed
feat: changed restrictions on execution node results
1 parent 6eef996 commit 24f431c

12 files changed

Lines changed: 94 additions & 22 deletions

File tree

app/graphql/types/execution_parameter_result_type.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ class ExecutionParameterResultType < Types::BaseObject
99
null: false,
1010
description: 'Position of this parameter result in the node result'
1111
field :value, GraphQL::Types::JSON,
12-
null: false,
12+
null: true,
1313
description: 'Value returned for this parameter'
1414

1515
id_field ExecutionParameterResult

app/grpc/concerns/grpc_stream_handler.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ def self.listen!
6464
queues&.each do |queue|
6565
queue << decoded_data
6666
rescue StandardError => e
67-
logger.error(message: 'Error while yielding data', error: e.message)
67+
logger.error(message: 'Error while yielding data', error: e.message, backtrace: e.backtrace)
6868
end
6969
end
7070
end

app/grpc/execution_handler.rb

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,17 +25,18 @@ def test(requests, call)
2525
ApplicationRecord.connection_pool.with_connection do
2626
case request.data
2727
when :logon
28-
logger.info(message: 'Execution runtime sent logon', runtime_id: current_runtime_id)
28+
logger.info(message: 'Execution runtime sent logon')
2929
when :response
3030
handle_execution_result(request.response, current_runtime_id)
3131
end
3232
end
3333
end
3434
rescue StandardError => e
35-
logger.error(message: 'Error reading execution stream', error: e.message, runtime_id: current_runtime_id)
35+
logger.error(message: 'Error reading execution stream', error: e.message,
36+
backtrace: e.backtrace)
3637
outbound_queue << :end if outbound_queue
3738
ensure
38-
logger.info(message: 'Execution runtime request stream closed', runtime_id: current_runtime_id)
39+
logger.info(message: 'Execution runtime request stream closed')
3940
end
4041

4142
enumerator
@@ -81,7 +82,7 @@ def handle_execution_result(execution_result, runtime_id)
8182
runtime_id: runtime_id,
8283
execution_identifier: execution_result.execution_identifier,
8384
error: response.message,
84-
details: response.payload
85+
details: response.payload.errors.full_messages
8586
)
8687
end
8788
end

app/models/execution_node_result.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ def only_one_execution_target_present
2323
end
2424

2525
def only_one_result_present
26-
return if [!success.nil?, !error.nil?].count(true) == 1
26+
return if [!success.nil?, !error.nil?].count(true) <= 1
2727

28-
errors.add(:base, 'Only one of success or error must be present')
28+
errors.add(:base, 'Only one of success or error can be present')
2929
end
3030
end

app/models/execution_parameter_result.rb

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,4 @@ class ExecutionParameterResult < ApplicationRecord
44
belongs_to :execution_node_result, inverse_of: :parameter_results
55

66
validates :position, presence: true, numericality: { only_integer: true }
7-
validate :value_must_be_present
8-
9-
private
10-
11-
def value_must_be_present
12-
errors.add(:value, "can't be blank") if value.nil?
13-
end
147
end

app/models/execution_result.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ class ExecutionResult < ApplicationRecord
1818
private
1919

2020
def only_one_result_present
21-
return if [!success.nil?, !error.nil?].count(true) == 1
21+
return if [!success.nil?, !error.nil?].count(true) <= 1
2222

23-
errors.add(:base, 'Only one of success or error must be present')
23+
errors.add(:base, 'Only one of success or error can be present')
2424
end
2525
end

app/services/namespaces/projects/flows/persist_execution_result_service.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ def build_parameter_results(node_record, node_result)
6868
node_result.parameter_results.each_with_index do |parameter_result, index|
6969
node_record.parameter_results.build(
7070
position: index,
71-
value: parameter_result.value.to_ruby(true)
71+
value: parameter_result.value&.to_ruby(true)
7272
)
7373
end
7474
end
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# frozen_string_literal: true
2+
3+
class AllowNullExecutionResultValues < Code0::ZeroTrack::Database::Migration[1.0]
4+
def change
5+
change_column_null :execution_parameter_results, :value, true
6+
7+
remove_check_constraint :execution_results,
8+
name: check_constraint_name(:execution_results, :result, :at_most_one)
9+
add_check_constraint :execution_results,
10+
'num_nonnulls(success, error) <= 1',
11+
name: check_constraint_name(:execution_results, :result, :at_most_one)
12+
13+
remove_check_constraint :execution_node_results,
14+
name: check_constraint_name(:execution_node_results, :result, :at_most_one)
15+
add_check_constraint :execution_node_results,
16+
'num_nonnulls(success, error) <= 1',
17+
name: check_constraint_name(:execution_node_results, :result, :at_most_one)
18+
end
19+
end
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
2003cd41f9ad43f76b488c0043c3c6b38102fb97a54c7d2de01837bff2d4c36d

db/structure.sql

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ CREATE TABLE execution_node_results (
194194
created_at timestamp with time zone NOT NULL,
195195
updated_at timestamp with time zone NOT NULL,
196196
function_definition_id bigint,
197-
CONSTRAINT check_26548a5903 CHECK ((num_nonnulls(success, error) = 1))
197+
CONSTRAINT check_26548a5903 CHECK ((num_nonnulls(success, error) <= 1))
198198
);
199199

200200
CREATE SEQUENCE execution_node_results_id_seq
@@ -210,7 +210,7 @@ CREATE TABLE execution_parameter_results (
210210
id bigint NOT NULL,
211211
execution_node_result_id bigint NOT NULL,
212212
"position" integer NOT NULL,
213-
value jsonb NOT NULL,
213+
value jsonb,
214214
created_at timestamp with time zone NOT NULL,
215215
updated_at timestamp with time zone NOT NULL
216216
);
@@ -236,7 +236,7 @@ CREATE TABLE execution_results (
236236
created_at timestamp with time zone NOT NULL,
237237
updated_at timestamp with time zone NOT NULL,
238238
CONSTRAINT check_1e7a71dfb7 CHECK ((char_length(execution_identifier) <= 200)),
239-
CONSTRAINT check_5bf29caaec CHECK ((num_nonnulls(success, error) = 1))
239+
CONSTRAINT check_5bf29caaec CHECK ((num_nonnulls(success, error) <= 1))
240240
);
241241

242242
CREATE SEQUENCE execution_results_id_seq

0 commit comments

Comments
 (0)