Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,7 @@ def initialize(details)
continued_run_id: ProtoUtils.string_or(@init_job.continued_from_execution_run_id),
cron_schedule: ProtoUtils.string_or(@init_job.cron_schedule),
execution_timeout: ProtoUtils.duration_to_seconds(@init_job.workflow_execution_timeout),
first_execution_run_id: @init_job.first_execution_run_id,
headers: ProtoUtils.headers_from_proto_map(@init_job.headers, @payload_converter) || {},
last_failure: if @init_job.continued_failure
@failure_converter.from_failure(@init_job.continued_failure, @payload_converter)
Expand Down
3 changes: 3 additions & 0 deletions temporalio/lib/temporalio/workflow/info.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ module Workflow
:continued_run_id,
:cron_schedule,
:execution_timeout,
:first_execution_run_id,
:headers,
:last_failure,
:last_result,
Expand Down Expand Up @@ -35,6 +36,8 @@ module Workflow
# @return [String, nil] Cron schedule if applicable.
# @!attribute execution_timeout
# @return [Float, nil] Execution timeout for the workflow.
# @!attribute first_execution_run_id
# @return [String] The very first run ID the workflow ever had, following continuation chains.
# @!attribute headers
# @return [Hash<String, Api::Common::V1::Payload>] Headers.
# @!attribute last_failure
Expand Down
2 changes: 2 additions & 0 deletions temporalio/sig/temporalio/workflow/info.rbs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ module Temporalio
attr_reader continued_run_id: String?
attr_reader cron_schedule: String?
attr_reader execution_timeout: Float?
attr_reader first_execution_run_id: String
attr_reader headers: Hash[String, untyped]
attr_reader last_failure: Exception?
attr_reader last_result: Object?
Expand All @@ -26,6 +27,7 @@ module Temporalio
continued_run_id: String?,
cron_schedule: String?,
execution_timeout: Float?,
first_execution_run_id: String,
headers: Hash[String, untyped],
last_failure: Exception?,
last_result: Object?,
Expand Down
5 changes: 5 additions & 0 deletions temporalio/test/worker_workflow_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
require 'gc_utils'
require 'net/http'
require 'temporalio/client'
require 'temporalio/error'
require 'temporalio/testing'
require 'temporalio/worker'
require 'temporalio/workflow'
Expand Down Expand Up @@ -542,6 +543,10 @@ def execute(past_run_ids)
return past_run_ids if past_run_ids.size == 5

past_run_ids << Temporalio::Workflow.info.continued_run_id if Temporalio::Workflow.info.continued_run_id
if !past_run_ids.empty? && Temporalio::Workflow.info.first_execution_run_id != past_run_ids.first
raise Temporalio::Error::ApplicationError.new('wrong first_execution_run_id', non_retryable: true)
end

raise Temporalio::Workflow::ContinueAsNewError.new(
past_run_ids,
memo: { past_run_id_count: past_run_ids.size },
Expand Down
Loading