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
6 changes: 6 additions & 0 deletions temporalio/lib/temporalio/worker.rb
Original file line number Diff line number Diff line change
Expand Up @@ -514,6 +514,12 @@ def _initialize_from_options
raise ArgumentError, 'Must have at least one activity or workflow'
end

if !@options.deployment_options.use_worker_versioning &&
@options.deployment_options.default_versioning_behavior != VersioningBehavior::UNSPECIFIED
raise ArgumentError,
'default_versioning_behavior must be UNSPECIFIED when use_worker_versioning is false'
end

should_enforce_versioning_behavior =
@options.deployment_options.use_worker_versioning &&
@options.deployment_options.default_versioning_behavior == VersioningBehavior::UNSPECIFIED
Expand Down
51 changes: 51 additions & 0 deletions temporalio/test/worker_workflow_versioning_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -480,6 +480,57 @@ def test_default_build_id
end
end

def test_deployment_options_without_versioning
build_id = 'my-custom-build-id-1.0'
worker = Temporalio::Worker.new(
client: env.client,
task_queue: "tq-#{SecureRandom.uuid}",
workflows: [NoVersioningAnnotationWorkflow],
deployment_options: Temporalio::Worker::DeploymentOptions.new(
version: Temporalio::WorkerDeploymentVersion.new(
deployment_name: "deployment-#{SecureRandom.uuid}",
build_id: build_id
),
use_worker_versioning: false
)
)

worker.run do
handle = env.client.start_workflow(
NoVersioningAnnotationWorkflow,
id: "no-versioning-build-id-#{SecureRandom.uuid}",
task_queue: worker.task_queue
)
handle.result

events = handle.fetch_history.events
has_build_id = events.any? do |event|
event.workflow_task_completed_event_attributes &&
event.workflow_task_completed_event_attributes.worker_version&.build_id == build_id
end
assert has_build_id, 'Expected custom build ID to appear in workflow history'
end
end

def test_rejects_versioning_behavior_when_versioning_off
err = assert_raises(ArgumentError) do
Temporalio::Worker.new(
client: env.client,
task_queue: "tq-#{SecureRandom.uuid}",
workflows: [NoVersioningAnnotationWorkflow],
deployment_options: Temporalio::Worker::DeploymentOptions.new(
version: Temporalio::WorkerDeploymentVersion.new(
deployment_name: "deployment-#{SecureRandom.uuid}",
build_id: '1.0'
),
use_worker_versioning: false,
default_versioning_behavior: Temporalio::VersioningBehavior::AUTO_UPGRADE
)
)
end
assert_includes err.message, 'default_versioning_behavior must be UNSPECIFIED'
end

def wait_until_worker_deployment_visible(client, version)
assert_eventually do
res = client.workflow_service.describe_worker_deployment(
Expand Down
Loading