diff --git a/app/actions/app_delete.rb b/app/actions/app_delete.rb index 47e4e14e6c9..b1ab2d6a448 100644 --- a/app/actions/app_delete.rb +++ b/app/actions/app_delete.rb @@ -97,7 +97,7 @@ def route_mappings_to_delete(app) def delete_buildpack_cache(app) delete_job = Jobs::V3::BuildpackCacheDelete.new(app.guid) - Jobs::Enqueuer.new(delete_job, queue: Jobs::Queues.generic).enqueue + Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue(delete_job) end def logger diff --git a/app/actions/buildpack_delete.rb b/app/actions/buildpack_delete.rb index 04110e8bb0c..04280506745 100644 --- a/app/actions/buildpack_delete.rb +++ b/app/actions/buildpack_delete.rb @@ -8,7 +8,7 @@ def delete(buildpacks) end if buildpack.key blobstore_delete = Jobs::Runtime::BlobstoreDelete.new(buildpack.key, :buildpack_blobstore) - Jobs::Enqueuer.new(blobstore_delete, queue: Jobs::Queues.generic).enqueue + Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue(blobstore_delete) end end diff --git a/app/actions/buildpack_upload.rb b/app/actions/buildpack_upload.rb index 905d00d1738..7b700a40735 100644 --- a/app/actions/buildpack_upload.rb +++ b/app/actions/buildpack_upload.rb @@ -4,7 +4,7 @@ def upload_async(message:, buildpack:, config:) logger.info("uploading buildpacks bits for buildpack #{buildpack.guid}") upload_job = Jobs::V3::BuildpackBits.new(buildpack.guid, message.bits_path, message.bits_name) - Jobs::Enqueuer.new(upload_job, queue: Jobs::Queues.local(config)).enqueue_pollable + Jobs::Enqueuer.new(queue: Jobs::Queues.local(config)).enqueue_pollable(upload_job) end private diff --git a/app/actions/droplet_copy.rb b/app/actions/droplet_copy.rb index ca604ccab7c..b396d8311f7 100644 --- a/app/actions/droplet_copy.rb +++ b/app/actions/droplet_copy.rb @@ -60,7 +60,7 @@ def copy_buildpack_droplet(new_droplet) new_droplet.buildpack_lifecycle_data(reload: true) copy_job = Jobs::V3::DropletBitsCopier.new(@source_droplet.guid, new_droplet.guid) - Jobs::Enqueuer.new(copy_job, queue: Jobs::Queues.generic).enqueue + Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue(copy_job) end end end diff --git a/app/actions/droplet_delete.rb b/app/actions/droplet_delete.rb index 7baa98f0481..21a2a65e50e 100644 --- a/app/actions/droplet_delete.rb +++ b/app/actions/droplet_delete.rb @@ -16,7 +16,7 @@ def delete(droplets) if droplet.blobstore_key blobstore_delete = Jobs::Runtime::BlobstoreDelete.new(droplet.blobstore_key, :droplet_blobstore) - Jobs::Enqueuer.new(blobstore_delete, queue: Jobs::Queues.generic).enqueue + Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue(blobstore_delete) end Repositories::DropletEventRepository.record_delete( diff --git a/app/actions/droplet_upload.rb b/app/actions/droplet_upload.rb index 06bb0d9d4ee..ba93d6f3090 100644 --- a/app/actions/droplet_upload.rb +++ b/app/actions/droplet_upload.rb @@ -20,7 +20,7 @@ def upload_async(message:, droplet:, config:, user_audit_info:) droplet.space.organization_guid ) - enqueued_job = Jobs::Enqueuer.new(upload_job, queue: Jobs::Queues.local(config)).enqueue_pollable + enqueued_job = Jobs::Enqueuer.new(queue: Jobs::Queues.local(config)).enqueue_pollable(upload_job) end enqueued_job diff --git a/app/actions/mixins/bindings_delete.rb b/app/actions/mixins/bindings_delete.rb index 87b39f4603c..26a2d1b87f0 100644 --- a/app/actions/mixins/bindings_delete.rb +++ b/app/actions/mixins/bindings_delete.rb @@ -19,7 +19,7 @@ def delete_bindings(bindings, user_audit_info:) result = binding_delete_action.delete(binding) unless result[:finished] polling_job = DeleteBindingJob.new(type, binding.guid, user_audit_info:) - Jobs::Enqueuer.new(polling_job, queue: Jobs::Queues.generic).enqueue_pollable + Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(polling_job) unbinding_operation_in_progress!(binding) end rescue StandardError => e diff --git a/app/actions/package_copy.rb b/app/actions/package_copy.rb index 7620f5b0b9b..3c58cb32486 100644 --- a/app/actions/package_copy.rb +++ b/app/actions/package_copy.rb @@ -20,12 +20,7 @@ def copy(destination_app_guid:, source_package:, user_audit_info:, record_event: package.db.transaction do package.save - if source_package.type == 'bits' - @enqueued_job = Jobs::Enqueuer.new( - Jobs::V3::PackageBitsCopier.new(source_package.guid, package.guid), - queue: Jobs::Queues.generic - ).enqueue - end + @enqueued_job = Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue(Jobs::V3::PackageBitsCopier.new(source_package.guid, package.guid)) if source_package.type == 'bits' record_audit_event(package, source_package, user_audit_info) if record_event end diff --git a/app/actions/package_delete.rb b/app/actions/package_delete.rb index fedcdec1cf3..ae46d9d330e 100644 --- a/app/actions/package_delete.rb +++ b/app/actions/package_delete.rb @@ -10,7 +10,7 @@ def delete(packages) packages.each do |package| unless package.docker? package_src_delete_job = create_package_source_deletion_job(package) - Jobs::Enqueuer.new(package_src_delete_job, queue: Jobs::Queues.generic).enqueue if package_src_delete_job + Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue(package_src_delete_job) if package_src_delete_job end package.destroy diff --git a/app/actions/package_upload.rb b/app/actions/package_upload.rb index e8feaf92d4f..aaeb6cf8ae5 100644 --- a/app/actions/package_upload.rb +++ b/app/actions/package_upload.rb @@ -14,7 +14,7 @@ def upload_async(message:, package:, config:, user_audit_info:, record_event: tr package.state = PackageModel::PENDING_STATE package.save - enqueued_job = Jobs::Enqueuer.new(upload_job, queue: Jobs::Queues.local(config)).enqueue + enqueued_job = Jobs::Enqueuer.new(queue: Jobs::Queues.local(config)).enqueue(upload_job) record_upload(package, user_audit_info) if record_event end diff --git a/app/actions/routing/route_delete.rb b/app/actions/routing/route_delete.rb index e0a9dd0f426..496fd10aa2f 100644 --- a/app/actions/routing/route_delete.rb +++ b/app/actions/routing/route_delete.rb @@ -15,8 +15,7 @@ def delete_sync(route:, recursive:) end def delete_async(route:, recursive:) - deletion_job = do_delete(recursive, route) - Jobs::Enqueuer.new(deletion_job, queue: Jobs::Queues.generic).enqueue + Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue(do_delete(recursive, route)) end def delete_unmapped_route(route:) diff --git a/app/actions/service_broker_create.rb b/app/actions/service_broker_create.rb index 93c5fb30d98..14c36e9d9c2 100644 --- a/app/actions/service_broker_create.rb +++ b/app/actions/service_broker_create.rb @@ -31,7 +31,7 @@ def create(message) service_event_repository.record_broker_event_with_request(:create, broker, message.audit_hash) synchronization_job = SynchronizeBrokerCatalogJob.new(broker.guid, user_audit_info: service_event_repository.user_audit_info) - pollable_job = Jobs::Enqueuer.new(synchronization_job, queue: Jobs::Queues.generic).enqueue_pollable + pollable_job = Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(synchronization_job) end { pollable_job: } diff --git a/app/actions/services/locks/deleter_lock.rb b/app/actions/services/locks/deleter_lock.rb index 47f47229cea..974195d01aa 100644 --- a/app/actions/services/locks/deleter_lock.rb +++ b/app/actions/services/locks/deleter_lock.rb @@ -49,8 +49,7 @@ def unlock_and_destroy! def enqueue_and_unlock!(attributes_to_update, job) service_instance.save_and_update_operation(attributes_to_update) - enqueuer = Jobs::Enqueuer.new(job, queue: Jobs::Queues.generic) - enqueuer.enqueue + Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue(job) @needs_unlock = false end diff --git a/app/actions/services/locks/updater_lock.rb b/app/actions/services/locks/updater_lock.rb index 0e3847ef63f..38417be5e11 100644 --- a/app/actions/services/locks/updater_lock.rb +++ b/app/actions/services/locks/updater_lock.rb @@ -47,8 +47,7 @@ def asynchronous_unlock! end def enqueue_unlock!(job) - enqueuer = Jobs::Enqueuer.new(job, queue: Jobs::Queues.generic) - enqueuer.enqueue + Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue(job) @needs_unlock = false end diff --git a/app/actions/services/service_instance_create.rb b/app/actions/services/service_instance_create.rb index f8c8df43d91..b87a874753e 100644 --- a/app/actions/services/service_instance_create.rb +++ b/app/actions/services/service_instance_create.rb @@ -48,8 +48,7 @@ def setup_async_job(request_attrs, service_instance) @services_event_repository.user_audit_info, request_attrs ) - enqueuer = Jobs::Enqueuer.new(job, queue: Jobs::Queues.generic) - enqueuer.enqueue + Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue(job) @services_event_repository.record_service_instance_event(:start_create, service_instance, request_attrs) end diff --git a/app/actions/space_delete.rb b/app/actions/space_delete.rb index 6e075e636d9..9158759fe59 100644 --- a/app/actions/space_delete.rb +++ b/app/actions/space_delete.rb @@ -56,7 +56,7 @@ def delete_service_instances(space_model) result = service_instance_deleter.delete unless result[:finished] polling_job = V3::DeleteServiceInstanceJob.new(service_instance.guid, @services_event_repository.user_audit_info) - Jobs::Enqueuer.new(polling_job, queue: Jobs::Queues.generic).enqueue_pollable + Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(polling_job) errors << CloudController::Errors::ApiError.new_from_details('AsyncServiceInstanceOperationInProgress', service_instance.name) end rescue StandardError => e diff --git a/app/actions/v2/services/service_binding_create.rb b/app/actions/v2/services/service_binding_create.rb index ec22ee1692e..52c60587666 100644 --- a/app/actions/v2/services/service_binding_create.rb +++ b/app/actions/v2/services/service_binding_create.rb @@ -52,8 +52,7 @@ def create(app, service_instance, message, volume_mount_services_enabled, accept binding.save_with_new_operation({ type: 'create', state: 'in progress', broker_provided_operation: binding_result[:operation] }) job = Jobs::Services::ServiceBindingStateFetch.new(binding.guid, @user_audit_info, message.audit_hash) - enqueuer = Jobs::Enqueuer.new(job, queue: Jobs::Queues.generic) - enqueuer.enqueue + Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue(job) Repositories::ServiceBindingEventRepository.record_start_create(binding, @user_audit_info, message.audit_hash, manifest_triggered: @manifest_triggered) else binding.save diff --git a/app/actions/v2/services/service_binding_delete.rb b/app/actions/v2/services/service_binding_delete.rb index 66e4514fd86..6f2c4cf5287 100644 --- a/app/actions/v2/services/service_binding_delete.rb +++ b/app/actions/v2/services/service_binding_delete.rb @@ -19,10 +19,7 @@ def foreground_delete_request(service_binding) end def background_delete_request(service_binding) - Jobs::Enqueuer.new( - Jobs::DeleteActionJob.new(ServiceBinding, service_binding.guid, self), - queue: Jobs::Queues.generic - ).enqueue + Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue(Jobs::DeleteActionJob.new(ServiceBinding, service_binding.guid, self)) end def delete(service_bindings) @@ -42,8 +39,7 @@ def delete(service_bindings) service_binding.save_with_new_operation({ type: 'delete', state: 'in progress', broker_provided_operation: broker_response[:operation] }) job = VCAP::CloudController::Jobs::Services::ServiceBindingStateFetch.new(service_binding.guid, @user_audit_info, {}) - enqueuer = Jobs::Enqueuer.new(job, queue: Jobs::Queues.generic) - enqueuer.enqueue + Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue(job) Repositories::ServiceBindingEventRepository.record_start_delete(service_binding, @user_audit_info) else service_binding.destroy diff --git a/app/actions/v3/service_broker_update.rb b/app/actions/v3/service_broker_update.rb index b337f584c05..7c92f1542f6 100644 --- a/app/actions/v3/service_broker_update.rb +++ b/app/actions/v3/service_broker_update.rb @@ -58,7 +58,7 @@ def enqueue_update previous_broker_state, user_audit_info: service_event_repository.user_audit_info ) - pollable_job = Jobs::Enqueuer.new(synchronization_job, queue: Jobs::Queues.generic).enqueue_pollable + pollable_job = Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(synchronization_job) end pollable_job diff --git a/app/actions/v3/service_instance_update_managed.rb b/app/actions/v3/service_instance_update_managed.rb index 21262d8cbdf..215d0ce926a 100644 --- a/app/actions/v3/service_instance_update_managed.rb +++ b/app/actions/v3/service_instance_update_managed.rb @@ -83,7 +83,7 @@ def enqueue_update user_audit_info: user_audit_info, audit_hash: message.audit_hash ) - pollable_job = Jobs::Enqueuer.new(update_job, queue: Jobs::Queues.generic).enqueue_pollable + pollable_job = Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(update_job) lock.asynchronous_unlock! ensure lock.unlock_and_fail! if lock.present? && lock.needs_unlock? diff --git a/app/controllers/base/model_controller.rb b/app/controllers/base/model_controller.rb index 5acc49dc561..0c26feec73a 100644 --- a/app/controllers/base/model_controller.rb +++ b/app/controllers/base/model_controller.rb @@ -82,7 +82,7 @@ def do_delete(obj) def run_or_enqueue_deletion_job(deletion_job) if async? - job = Jobs::Enqueuer.new(deletion_job, queue: Jobs::Queues.generic).enqueue + job = Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue(deletion_job) [HTTP::ACCEPTED, JobPresenter.new(job).to_json] else deletion_job.perform diff --git a/app/controllers/runtime/apps_controller.rb b/app/controllers/runtime/apps_controller.rb index d4c6e47e6ba..d3c1b5d142a 100644 --- a/app/controllers/runtime/apps_controller.rb +++ b/app/controllers/runtime/apps_controller.rb @@ -197,7 +197,7 @@ def upload_droplet(guid) BuildpackLifecycleDataModel.create(droplet:) droplet_upload_job = Jobs::V2::UploadDropletFromUser.new(droplet_path, droplet.guid) - enqueued_job = Jobs::Enqueuer.new(droplet_upload_job, queue: Jobs::Queues.local(config)).enqueue + enqueued_job = Jobs::Enqueuer.new(queue: Jobs::Queues.local(config)).enqueue(droplet_upload_job) end [HTTP::CREATED, JobPresenter.new(enqueued_job).to_json] diff --git a/app/controllers/runtime/buildpacks_cache_controller.rb b/app/controllers/runtime/buildpacks_cache_controller.rb index da3144f45d8..206b16b340a 100644 --- a/app/controllers/runtime/buildpacks_cache_controller.rb +++ b/app/controllers/runtime/buildpacks_cache_controller.rb @@ -8,7 +8,7 @@ class BuildpacksCacheController < RestController::BaseController def delete raise CloudController::Errors::ApiError.new_from_details('NotAuthorized') unless SecurityContext.roles.admin? - job = Jobs::Enqueuer.new(Jobs::Runtime::BuildpackCacheCleanup.new, queue: Jobs::Queues.generic).enqueue + job = Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue(Jobs::Runtime::BuildpackCacheCleanup.new) [HTTP::ACCEPTED, JobPresenter.new(job).to_json] end end diff --git a/app/controllers/runtime/stagings_controller.rb b/app/controllers/runtime/stagings_controller.rb index c886730d9d0..aa5400af27b 100644 --- a/app/controllers/runtime/stagings_controller.rb +++ b/app/controllers/runtime/stagings_controller.rb @@ -74,7 +74,7 @@ def upload_v3_app_buildpack_cache(stack_name, guid) check_content_digest upload_job = Jobs::V3::BuildpackCacheUpload.new(local_path: upload_path, app_guid: guid, stack_name: stack_name) - Jobs::Enqueuer.new(upload_job, queue: Jobs::Queues.local(config)).enqueue + Jobs::Enqueuer.new(queue: Jobs::Queues.local(config)).enqueue(upload_job) HTTP::OK end @@ -119,7 +119,7 @@ def upload_droplet(guid) droplet_upload_job = Jobs::V3::DropletUpload.new(upload_path, droplet.guid, skip_state_transition: true) - Jobs::Enqueuer.new(droplet_upload_job, queue: Jobs::Queues.local(config)).enqueue + Jobs::Enqueuer.new(queue: Jobs::Queues.local(config)).enqueue(droplet_upload_job) end def droplet_from_build(build, guid) diff --git a/app/controllers/services/lifecycle/service_instance_deprovisioner.rb b/app/controllers/services/lifecycle/service_instance_deprovisioner.rb index 53522020167..f61d26cb42d 100644 --- a/app/controllers/services/lifecycle/service_instance_deprovisioner.rb +++ b/app/controllers/services/lifecycle/service_instance_deprovisioner.rb @@ -16,7 +16,7 @@ def deprovision_service_instance(service_instance, accepts_incomplete, async) warnings = [] if async && !accepts_incomplete - enqueued_job = Jobs::Enqueuer.new(delete_job, queue: Jobs::Queues.generic).enqueue + enqueued_job = Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue(delete_job) else warnings = delete_job.perform end diff --git a/app/controllers/v3/admin_actions_controller.rb b/app/controllers/v3/admin_actions_controller.rb index 3f42aa9ebe5..5365472070f 100644 --- a/app/controllers/v3/admin_actions_controller.rb +++ b/app/controllers/v3/admin_actions_controller.rb @@ -4,7 +4,7 @@ class AdminActionsController < ApplicationController def clear_buildpack_cache unauthorized! unless permission_queryer.can_write_globally? - pollable_job = Jobs::Enqueuer.new(Jobs::V3::BuildpackCacheCleanup.new, queue: Jobs::Queues.generic).enqueue_pollable + pollable_job = Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(Jobs::V3::BuildpackCacheCleanup.new) head :accepted, 'Location' => url_builder.build_url(path: "/v3/jobs/#{pollable_job.guid}") end end diff --git a/app/controllers/v3/apps_controller.rb b/app/controllers/v3/apps_controller.rb index b01f1202823..76c2f32f48c 100644 --- a/app/controllers/v3/apps_controller.rb +++ b/app/controllers/v3/apps_controller.rb @@ -151,7 +151,7 @@ def destroy delete_action = AppDelete.new(user_audit_info) deletion_job = VCAP::CloudController::Jobs::DeleteActionJob.new(AppModel, app.guid, delete_action) - job = Jobs::Enqueuer.new(deletion_job, queue: Jobs::Queues.generic).enqueue_pollable do |pollable_job| + job = Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(deletion_job) do |pollable_job| DeleteAppErrorTranslatorJob.new(pollable_job) end VCAP::AppLogEmitter.emit(app.guid, "Enqueued job to delete app with guid #{app.guid}") @@ -234,7 +234,7 @@ def clear_buildpack_cache suspended! unless permission_queryer.is_space_active?(space.id) delete_job = Jobs::V3::BuildpackCacheDelete.new(app.guid) - job = Jobs::Enqueuer.new(delete_job, queue: Jobs::Queues.generic).enqueue_pollable + job = Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(delete_job) VCAP::AppLogEmitter.emit(app.guid, "Enqueued job to delete app buildpack cache with app guid #{app.guid}") diff --git a/app/controllers/v3/buildpacks_controller.rb b/app/controllers/v3/buildpacks_controller.rb index 58640eb6afe..28386823917 100644 --- a/app/controllers/v3/buildpacks_controller.rb +++ b/app/controllers/v3/buildpacks_controller.rb @@ -66,7 +66,7 @@ def destroy delete_action = BuildpackDelete.new deletion_job = VCAP::CloudController::Jobs::DeleteActionJob.new(Buildpack, buildpack.guid, delete_action) - pollable_job = Jobs::Enqueuer.new(deletion_job, queue: Jobs::Queues.generic).enqueue_pollable + pollable_job = Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(deletion_job) head :accepted, 'Location' => url_builder.build_url(path: "/v3/jobs/#{pollable_job.guid}") end diff --git a/app/controllers/v3/domains_controller.rb b/app/controllers/v3/domains_controller.rb index a42b57ef4a0..834556672fd 100644 --- a/app/controllers/v3/domains_controller.rb +++ b/app/controllers/v3/domains_controller.rb @@ -106,7 +106,7 @@ def destroy delete_action = DomainDelete.new deletion_job = VCAP::CloudController::Jobs::DeleteActionJob.new(Domain, domain.guid, delete_action) - pollable_job = Jobs::Enqueuer.new(deletion_job, queue: Jobs::Queues.generic).enqueue_pollable + pollable_job = Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(deletion_job) head :accepted, 'Location' => url_builder.build_url(path: "/v3/jobs/#{pollable_job.guid}") end diff --git a/app/controllers/v3/droplets_controller.rb b/app/controllers/v3/droplets_controller.rb index f035b085b2b..b08e10d3385 100644 --- a/app/controllers/v3/droplets_controller.rb +++ b/app/controllers/v3/droplets_controller.rb @@ -86,7 +86,7 @@ def destroy delete_action = DropletDelete.new(user_audit_info) deletion_job = VCAP::CloudController::Jobs::DeleteActionJob.new(DropletModel, droplet.guid, delete_action) - pollable_job = Jobs::Enqueuer.new(deletion_job, queue: Jobs::Queues.generic).enqueue_pollable + pollable_job = Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(deletion_job) head :accepted, 'Location' => url_builder.build_url(path: "/v3/jobs/#{pollable_job.guid}") end diff --git a/app/controllers/v3/organization_quotas_controller.rb b/app/controllers/v3/organization_quotas_controller.rb index e418bdd0777..59484c3325b 100644 --- a/app/controllers/v3/organization_quotas_controller.rb +++ b/app/controllers/v3/organization_quotas_controller.rb @@ -80,7 +80,7 @@ def destroy delete_action = OrganizationQuotaDeleteAction.new deletion_job = VCAP::CloudController::Jobs::DeleteActionJob.new(QuotaDefinition, organization_quota.guid, delete_action, 'organization_quota') - pollable_job = Jobs::Enqueuer.new(deletion_job, queue: Jobs::Queues.generic).enqueue_pollable + pollable_job = Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(deletion_job) head :accepted, 'Location' => url_builder.build_url(path: "/v3/jobs/#{pollable_job.guid}") end diff --git a/app/controllers/v3/organizations_controller.rb b/app/controllers/v3/organizations_controller.rb index edae333b8cc..f4051deddee 100644 --- a/app/controllers/v3/organizations_controller.rb +++ b/app/controllers/v3/organizations_controller.rb @@ -91,7 +91,7 @@ def destroy service_event_repository = VCAP::CloudController::Repositories::ServiceEventRepository.new(user_audit_info) delete_action = OrganizationDelete.new(SpaceDelete.new(user_audit_info, service_event_repository), user_audit_info) deletion_job = VCAP::CloudController::Jobs::DeleteActionJob.new(Organization, org.guid, delete_action) - pollable_job = Jobs::Enqueuer.new(deletion_job, queue: Jobs::Queues.generic).enqueue_pollable + pollable_job = Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(deletion_job) head :accepted, 'Location' => url_builder.build_url(path: "/v3/jobs/#{pollable_job.guid}") end diff --git a/app/controllers/v3/packages_controller.rb b/app/controllers/v3/packages_controller.rb index 10b598b50fa..feb509b99ad 100644 --- a/app/controllers/v3/packages_controller.rb +++ b/app/controllers/v3/packages_controller.rb @@ -142,7 +142,7 @@ def destroy delete_action = PackageDelete.new(user_audit_info) deletion_job = VCAP::CloudController::Jobs::DeleteActionJob.new(PackageModel, package.guid, delete_action) - job = Jobs::Enqueuer.new(deletion_job, queue: Jobs::Queues.generic).enqueue_pollable + job = Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(deletion_job) head HTTP::ACCEPTED, 'Location' => url_builder.build_url(path: "/v3/jobs/#{job.guid}") end diff --git a/app/controllers/v3/roles_controller.rb b/app/controllers/v3/roles_controller.rb index 456f7e009ec..c676e61dd9d 100644 --- a/app/controllers/v3/roles_controller.rb +++ b/app/controllers/v3/roles_controller.rb @@ -86,7 +86,7 @@ def destroy role_owner = fetch_role_owner_with_name(role) delete_action = RoleDeleteAction.new(user_audit_info, role_owner) deletion_job = VCAP::CloudController::Jobs::DeleteActionJob.new(Role, role.guid, delete_action) - pollable_job = Jobs::Enqueuer.new(deletion_job, queue: Jobs::Queues.generic).enqueue_pollable + pollable_job = Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(deletion_job) head :accepted, 'Location' => url_builder.build_url(path: "/v3/jobs/#{pollable_job.guid}") end diff --git a/app/controllers/v3/routes_controller.rb b/app/controllers/v3/routes_controller.rb index 0f0db063b0d..4d2220e761d 100644 --- a/app/controllers/v3/routes_controller.rb +++ b/app/controllers/v3/routes_controller.rb @@ -119,7 +119,7 @@ def destroy delete_action = RouteDeleteAction.new(user_audit_info) deletion_job = VCAP::CloudController::Jobs::DeleteActionJob.new(Route, route.guid, delete_action) - pollable_job = Jobs::Enqueuer.new(deletion_job, queue: Jobs::Queues.generic).enqueue_pollable + pollable_job = Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(deletion_job) head :accepted, 'Location' => url_builder.build_url(path: "/v3/jobs/#{pollable_job.guid}") end diff --git a/app/controllers/v3/security_groups_controller.rb b/app/controllers/v3/security_groups_controller.rb index 995fbba30c5..8ffce61e269 100644 --- a/app/controllers/v3/security_groups_controller.rb +++ b/app/controllers/v3/security_groups_controller.rb @@ -157,7 +157,7 @@ def destroy delete_action = SecurityGroupDeleteAction.new deletion_job = VCAP::CloudController::Jobs::DeleteActionJob.new(SecurityGroup, security_group.guid, delete_action) - pollable_job = Jobs::Enqueuer.new(deletion_job, queue: Jobs::Queues.generic).enqueue_pollable + pollable_job = Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(deletion_job) head :accepted, 'Location' => url_builder.build_url(path: "/v3/jobs/#{pollable_job.guid}") end diff --git a/app/controllers/v3/service_brokers_controller.rb b/app/controllers/v3/service_brokers_controller.rb index 70aedf09753..5a439997d6a 100644 --- a/app/controllers/v3/service_brokers_controller.rb +++ b/app/controllers/v3/service_brokers_controller.rb @@ -122,7 +122,7 @@ def destroy deletion_job = VCAP::CloudController::Jobs::DeleteActionJob.new(ServiceBroker, service_broker.guid, delete_action) service_broker.update(state: ServiceBrokerStateEnum::DELETE_IN_PROGRESS) - pollable_job = Jobs::Enqueuer.new(deletion_job, queue: Jobs::Queues.generic).enqueue_pollable + pollable_job = Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(deletion_job) head :accepted, 'Location' => url_builder.build_url(path: "/v3/jobs/#{pollable_job.guid}") end diff --git a/app/controllers/v3/service_credential_bindings_controller.rb b/app/controllers/v3/service_credential_bindings_controller.rb index b95f75e2f88..8549251f7c0 100644 --- a/app/controllers/v3/service_credential_bindings_controller.rb +++ b/app/controllers/v3/service_credential_bindings_controller.rb @@ -255,7 +255,7 @@ def enqueue_bind_job(type, binding_guid, message) audit_hash: message.audit_hash, parameters: message.parameters ) - pollable_job = Jobs::Enqueuer.new(bind_job, queue: Jobs::Queues.generic).enqueue_pollable + pollable_job = Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(bind_job) pollable_job.guid end @@ -265,7 +265,7 @@ def enqueue_unbind_job(type, binding_guid) binding_guid, user_audit_info: ) - pollable_job = Jobs::Enqueuer.new(bind_job, queue: Jobs::Queues.generic).enqueue_pollable + pollable_job = Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(bind_job) pollable_job.guid end diff --git a/app/controllers/v3/service_instances_controller.rb b/app/controllers/v3/service_instances_controller.rb index 41f50d15e7c..fa30753f0e7 100644 --- a/app/controllers/v3/service_instances_controller.rb +++ b/app/controllers/v3/service_instances_controller.rb @@ -269,7 +269,7 @@ def create_managed(message, space:) audit_hash: message.audit_hash ) - pollable_job = Jobs::Enqueuer.new(provision_job, queue: Jobs::Queues.generic).enqueue_pollable + pollable_job = Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(provision_job) head :accepted, 'Location' => url_builder.build_url(path: "/v3/jobs/#{pollable_job.guid}") end @@ -351,7 +351,7 @@ def fetch_writable_service_instance(guid) def enqueue_delete_job(service_instance) delete_job = V3::DeleteServiceInstanceJob.new(service_instance.guid, user_audit_info) - pollable_job = Jobs::Enqueuer.new(delete_job, queue: Jobs::Queues.generic).enqueue_pollable + pollable_job = Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(delete_job) pollable_job.guid end diff --git a/app/controllers/v3/service_route_bindings_controller.rb b/app/controllers/v3/service_route_bindings_controller.rb index ca013b45f56..8247099ba19 100644 --- a/app/controllers/v3/service_route_bindings_controller.rb +++ b/app/controllers/v3/service_route_bindings_controller.rb @@ -157,7 +157,7 @@ def enqueue_bind_job(binding_guid, message) audit_hash: message.audit_hash, parameters: message.parameters ) - pollable_job = Jobs::Enqueuer.new(bind_job, queue: Jobs::Queues.generic).enqueue_pollable + pollable_job = Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(bind_job) pollable_job.guid end @@ -167,7 +167,7 @@ def enqueue_unbind_job(binding_guid) binding_guid, user_audit_info: ) - pollable_job = Jobs::Enqueuer.new(bind_job, queue: Jobs::Queues.generic).enqueue_pollable + pollable_job = Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(bind_job) pollable_job.guid end diff --git a/app/controllers/v3/space_manifests_controller.rb b/app/controllers/v3/space_manifests_controller.rb index cb025d2251a..3a001763d4d 100644 --- a/app/controllers/v3/space_manifests_controller.rb +++ b/app/controllers/v3/space_manifests_controller.rb @@ -36,7 +36,7 @@ def apply_manifest apply_manifest_job = Jobs::SpaceApplyManifestActionJob.new(space, app_guid_message_hash, apply_manifest_action, user_audit_info) app_guid_message_hash.each { |app_guid, message| record_apply_manifest_audit_event(AppModel.find(guid: app_guid), message, space) } - job = Jobs::Enqueuer.new(apply_manifest_job, queue: Jobs::Queues.generic).enqueue_pollable + job = Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(apply_manifest_job) url_builder = Presenters::ApiUrlBuilder head HTTP::ACCEPTED, 'Location' => url_builder.build_url(path: "/v3/jobs/#{job.guid}") diff --git a/app/controllers/v3/space_quotas_controller.rb b/app/controllers/v3/space_quotas_controller.rb index 5a9200d9758..cd14f7a846e 100644 --- a/app/controllers/v3/space_quotas_controller.rb +++ b/app/controllers/v3/space_quotas_controller.rb @@ -141,7 +141,7 @@ def destroy delete_action = SpaceQuotaDeleteAction.new deletion_job = VCAP::CloudController::Jobs::DeleteActionJob.new(SpaceQuotaDefinition, space_quota.guid, delete_action, 'space_quota') - pollable_job = Jobs::Enqueuer.new(deletion_job, queue: Jobs::Queues.generic).enqueue_pollable + pollable_job = Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(deletion_job) head :accepted, 'Location' => url_builder.build_url(path: "/v3/jobs/#{pollable_job.guid}") end diff --git a/app/controllers/v3/spaces_controller.rb b/app/controllers/v3/spaces_controller.rb index 16d96a54e5a..fcecc27d084 100644 --- a/app/controllers/v3/spaces_controller.rb +++ b/app/controllers/v3/spaces_controller.rb @@ -90,7 +90,7 @@ def destroy service_event_repository = VCAP::CloudController::Repositories::ServiceEventRepository.new(user_audit_info) delete_action = SpaceDelete.new(user_audit_info, service_event_repository) deletion_job = VCAP::CloudController::Jobs::DeleteActionJob.new(Space, space.guid, delete_action) - pollable_job = Jobs::Enqueuer.new(deletion_job, queue: Jobs::Queues.generic).enqueue_pollable + pollable_job = Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(deletion_job) head :accepted, 'Location' => url_builder.build_url(path: "/v3/jobs/#{pollable_job.guid}") end @@ -144,7 +144,7 @@ def delete_unmapped_routes suspended! unless permission_queryer.is_space_active?(space.id) deletion_job = VCAP::CloudController::Jobs::V3::SpaceDeleteUnmappedRoutesJob.new(space) - pollable_job = Jobs::Enqueuer.new(deletion_job, queue: Jobs::Queues.generic).enqueue_pollable + pollable_job = Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(deletion_job) head :accepted, 'Location' => url_builder.build_url(path: "/v3/jobs/#{pollable_job.guid}") end diff --git a/app/controllers/v3/users_controller.rb b/app/controllers/v3/users_controller.rb index cd6eb6d30b1..bda028dc641 100644 --- a/app/controllers/v3/users_controller.rb +++ b/app/controllers/v3/users_controller.rb @@ -85,7 +85,7 @@ def destroy delete_action = UserDeleteAction.new deletion_job = VCAP::CloudController::Jobs::DeleteActionJob.new(User, user.guid, delete_action) - pollable_job = Jobs::Enqueuer.new(deletion_job, queue: Jobs::Queues.generic).enqueue_pollable + pollable_job = Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(deletion_job) head :accepted, 'Location' => url_builder.build_url(path: "/v3/jobs/#{pollable_job.guid}") end diff --git a/app/jobs/enqueuer.rb b/app/jobs/enqueuer.rb index 6c883e7267d..034d3e9e68b 100644 --- a/app/jobs/enqueuer.rb +++ b/app/jobs/enqueuer.rb @@ -9,20 +9,19 @@ module VCAP::CloudController module Jobs class Enqueuer - def initialize(job, opts={}) - @job = job + def initialize(opts={}) @opts = opts @timeout_calculator = JobTimeoutCalculator.new(VCAP::CloudController::Config.config) @priority_overwriter = JobPriorityOverwriter.new(VCAP::CloudController::Config.config) load_delayed_job_plugins end - def enqueue - enqueue_job(@job) + def enqueue(job) + enqueue_job(job) end - def enqueue_pollable(existing_guid: nil) - wrapped_job = PollableJobWrapper.new(@job, existing_guid:) + def enqueue_pollable(job, existing_guid: nil) + wrapped_job = PollableJobWrapper.new(job, existing_guid:) wrapped_job = yield wrapped_job if block_given? @@ -30,9 +29,9 @@ def enqueue_pollable(existing_guid: nil) PollableJobModel.find_by_delayed_job(delayed_job) end - def run_inline + def run_inline(job) run_immediately do - Delayed::Job.enqueue(TimeoutJob.new(@job, job_timeout), @opts) + Delayed::Job.enqueue(TimeoutJob.new(job, job_timeout(job)), @opts) end end @@ -41,8 +40,9 @@ def run_inline def enqueue_job(job) @opts['guid'] = SecureRandom.uuid request_id = ::VCAP::Request.current_id - timeout_job = TimeoutJob.new(job, job_timeout) + timeout_job = TimeoutJob.new(job, job_timeout(job)) logging_context_job = LoggingContextJob.new(timeout_job, request_id) + job_priority = job_priority(job) @opts[:priority] = job_priority unless @opts[:priority] || job_priority.nil? Delayed::Job.enqueue(logging_context_job, @opts) end @@ -51,14 +51,22 @@ def load_delayed_job_plugins @load_delayed_job_plugins ||= Delayed::Worker.new end - def job_timeout - return @timeout_calculator.calculate(@job.try(:job_name_in_configuration), @opts[:queue]) if @opts[:queue] + def job_timeout(job) + unwrapped_job = unwrap_job(job) + return @timeout_calculator.calculate(unwrapped_job.try(:job_name_in_configuration), @opts[:queue]) if @opts[:queue] - @timeout_calculator.calculate(@job.try(:job_name_in_configuration)) + @timeout_calculator.calculate(unwrapped_job.try(:job_name_in_configuration)) end - def job_priority - @priority_overwriter.get(@job.try(:display_name)) || @priority_overwriter.get(@job.try(:job_name_in_configuration)) || @priority_overwriter.get(@job.class.name) + def job_priority(job) + unwrapped_job = unwrap_job(job) + @priority_overwriter.get(unwrapped_job.try(:display_name)) || + @priority_overwriter.get(unwrapped_job.try(:job_name_in_configuration)) || + @priority_overwriter.get(unwrapped_job.class.name) + end + + def unwrap_job(job) + job.is_a?(PollableJobWrapper) ? job.handler : job end def run_immediately diff --git a/app/jobs/reoccurring_job.rb b/app/jobs/reoccurring_job.rb index 4f375a964bf..269f04d3687 100644 --- a/app/jobs/reoccurring_job.rb +++ b/app/jobs/reoccurring_job.rb @@ -83,7 +83,7 @@ def enqueue_next_job(pollable_job, priority) } @retry_number += 1 - Jobs::Enqueuer.new(self, opts).enqueue_pollable(existing_guid: pollable_job.guid) + Jobs::Enqueuer.new(opts).enqueue_pollable(self, existing_guid: pollable_job.guid) end end end diff --git a/app/jobs/runtime/expired_blob_cleanup.rb b/app/jobs/runtime/expired_blob_cleanup.rb index c32420ff930..8cc5f6b3561 100644 --- a/app/jobs/runtime/expired_blob_cleanup.rb +++ b/app/jobs/runtime/expired_blob_cleanup.rb @@ -23,17 +23,11 @@ def max_attempts end def enqueue_droplet_delete_job(droplet_guid) - Jobs::Enqueuer.new( - Jobs::Runtime::DeleteExpiredDropletBlob.new(droplet_guid), - queue: Jobs::Queues.generic - ).enqueue + Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue(Jobs::Runtime::DeleteExpiredDropletBlob.new(droplet_guid)) end def enqueue_package_delete_job(package_guid) - Jobs::Enqueuer.new( - Jobs::Runtime::DeleteExpiredPackageBlob.new(package_guid), - queue: Jobs::Queues.generic - ).enqueue + Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue(Jobs::Runtime::DeleteExpiredPackageBlob.new(package_guid)) end def logger diff --git a/app/jobs/runtime/orphaned_blobs_cleanup.rb b/app/jobs/runtime/orphaned_blobs_cleanup.rb index 99ab8f6c87f..d8afd048840 100644 --- a/app/jobs/runtime/orphaned_blobs_cleanup.rb +++ b/app/jobs/runtime/orphaned_blobs_cleanup.rb @@ -165,7 +165,7 @@ def delete_orphaned_blobs logger.info("Enqueuing deletion of orphaned blob #{orphaned_blob.blob_key} inside directory_key #{directory_key}") blobstore_delete_job = BlobstoreDelete.new(unpartitioned_blob_key, blobstore_type) - Jobs::Enqueuer.new(blobstore_delete_job, queue: Jobs::Queues.generic, priority: VCAP::CloudController::Clock::LOW_PRIORITY).enqueue + Jobs::Enqueuer.new(queue: Jobs::Queues.generic, priority: VCAP::CloudController::Clock::LOW_PRIORITY).enqueue(blobstore_delete_job) VCAP::CloudController::Repositories::OrphanedBlobEventRepository.record_delete(directory_key, orphaned_blob.blob_key) orphaned_blob.delete diff --git a/app/jobs/v2/services/asynchronous_operations.rb b/app/jobs/v2/services/asynchronous_operations.rb index ae06b49e169..3cc57e52ba8 100644 --- a/app/jobs/v2/services/asynchronous_operations.rb +++ b/app/jobs/v2/services/asynchronous_operations.rb @@ -25,7 +25,7 @@ def retry_job(retry_after_header: '') def enqueue_again opts = { queue: Jobs::Queues.generic, run_at: Delayed::Job.db_time_now + next_execution_in } self.retry_number += 1 - Jobs::Enqueuer.new(self, opts).enqueue + Jobs::Enqueuer.new(opts).enqueue(self) end def default_polling_exponential_backoff diff --git a/lib/cloud_controller/bits_expiration.rb b/lib/cloud_controller/bits_expiration.rb index 6ffa03fa789..0bd8eb83cb7 100644 --- a/lib/cloud_controller/bits_expiration.rb +++ b/lib/cloud_controller/bits_expiration.rb @@ -44,17 +44,11 @@ def expire_packages!(app) private def enqueue_droplet_delete_job(droplet_guid) - Jobs::Enqueuer.new( - Jobs::Runtime::DeleteExpiredDropletBlob.new(droplet_guid), - queue: Jobs::Queues.generic - ).enqueue + Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue(Jobs::Runtime::DeleteExpiredDropletBlob.new(droplet_guid)) end def enqueue_package_delete_job(package_guid) - Jobs::Enqueuer.new( - Jobs::Runtime::DeleteExpiredPackageBlob.new(package_guid), - queue: Jobs::Queues.generic - ).enqueue + Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue(Jobs::Runtime::DeleteExpiredPackageBlob.new(package_guid)) end def filter_non_expirable(dataset, storage_count) diff --git a/lib/cloud_controller/clock/clock.rb b/lib/cloud_controller/clock/clock.rb index 9eff15aba54..0260b3797f0 100644 --- a/lib/cloud_controller/clock/clock.rb +++ b/lib/cloud_controller/clock/clock.rb @@ -20,7 +20,7 @@ def schedule_daily_job(name:, at:, priority:) schedule_job(job_opts) do job = yield - Jobs::Enqueuer.new(job, queue: name, priority: priority).enqueue + Jobs::Enqueuer.new(queue: name, priority: priority).enqueue(job) end end @@ -33,7 +33,7 @@ def schedule_frequent_worker_job(name:, interval:) schedule_job(job_opts) do job = yield - Jobs::Enqueuer.new(job, queue: name).enqueue + Jobs::Enqueuer.new(queue: name).enqueue(job) end end @@ -48,7 +48,7 @@ def schedule_frequent_inline_job(name:, interval:, timeout:) schedule_job(job_opts) do job = yield - Jobs::Enqueuer.new(job, queue: name).run_inline + Jobs::Enqueuer.new(queue: name).run_inline(job) end end diff --git a/lib/cloud_controller/install_buildpacks.rb b/lib/cloud_controller/install_buildpacks.rb index 35a57191d92..7986ea157a2 100644 --- a/lib/cloud_controller/install_buildpacks.rb +++ b/lib/cloud_controller/install_buildpacks.rb @@ -73,7 +73,7 @@ def run_canary(jobs) def enqueue_remaining_jobs(jobs) jobs.drop(1).each do |job| - VCAP::CloudController::Jobs::Enqueuer.new(job, queue: VCAP::CloudController::Jobs::Queues.local(config)).enqueue + VCAP::CloudController::Jobs::Enqueuer.new(queue: VCAP::CloudController::Jobs::Queues.local(config)).enqueue(job) end end end diff --git a/lib/services/service_brokers/v2/orphan_mitigator.rb b/lib/services/service_brokers/v2/orphan_mitigator.rb index 1124eb23ae8..555a435e69e 100644 --- a/lib/services/service_brokers/v2/orphan_mitigator.rb +++ b/lib/services/service_brokers/v2/orphan_mitigator.rb @@ -14,7 +14,7 @@ def cleanup_failed_provision(service_instance) ) opts = { queue: VCAP::CloudController::Jobs::Queues.generic, run_at: Delayed::Job.db_time_now } - VCAP::CloudController::Jobs::Enqueuer.new(orphan_deprovision_job, opts).enqueue + VCAP::CloudController::Jobs::Enqueuer.new(opts).enqueue(orphan_deprovision_job) end def cleanup_failed_bind(service_binding) @@ -25,7 +25,7 @@ def cleanup_failed_bind(service_binding) ) opts = { queue: VCAP::CloudController::Jobs::Queues.generic, run_at: Delayed::Job.db_time_now } - VCAP::CloudController::Jobs::Enqueuer.new(unbind_job, opts).enqueue + VCAP::CloudController::Jobs::Enqueuer.new(opts).enqueue(unbind_job) end def cleanup_failed_key(service_key) @@ -36,7 +36,7 @@ def cleanup_failed_key(service_key) ) opts = { queue: VCAP::CloudController::Jobs::Queues.generic, run_at: Delayed::Job.db_time_now } - VCAP::CloudController::Jobs::Enqueuer.new(key_delete_job, opts).enqueue + VCAP::CloudController::Jobs::Enqueuer.new(opts).enqueue(key_delete_job) end end end diff --git a/spec/api/documentation/job_api_spec.rb b/spec/api/documentation/job_api_spec.rb index c2b10a3e01a..53a8786321c 100644 --- a/spec/api/documentation/job_api_spec.rb +++ b/spec/api/documentation/job_api_spec.rb @@ -37,7 +37,7 @@ def perform end describe 'When a job has failed with a known failure from v2.yml' do - before { VCAP::CloudController::Jobs::Enqueuer.new(KnownFailingJob.new).enqueue } + before { VCAP::CloudController::Jobs::Enqueuer.new.enqueue(KnownFailingJob.new) } example 'Retrieve Job with known failure' do guid = Delayed::Job.last.guid @@ -67,7 +67,7 @@ def perform end end - before { VCAP::CloudController::Jobs::Enqueuer.new(UnknownFailingJob.new).enqueue } + before { VCAP::CloudController::Jobs::Enqueuer.new.enqueue(UnknownFailingJob.new) } example 'Retrieve Job with unknown failure' do job_last = Delayed::Job.last @@ -94,7 +94,7 @@ def perform describe 'For a queued job' do class SuccessfulJob < FakeJob; end - before { VCAP::CloudController::Jobs::Enqueuer.new(SuccessfulJob.new).enqueue } + before { VCAP::CloudController::Jobs::Enqueuer.new.enqueue(SuccessfulJob.new) } example 'Retrieve Job that is queued' do guid = Delayed::Job.last.guid @@ -110,7 +110,7 @@ class SuccessfulJob < FakeJob; end describe 'For a successfully executed job' do class SuccessfulJob < FakeJob; end - before { VCAP::CloudController::Jobs::Enqueuer.new(SuccessfulJob.new).enqueue } + before { VCAP::CloudController::Jobs::Enqueuer.new.enqueue(SuccessfulJob.new) } example 'Retrieve Job that was successful' do guid = Delayed::Job.last.guid diff --git a/spec/request/jobs_spec.rb b/spec/request/jobs_spec.rb index 13c94028ddd..83ec98fbb42 100644 --- a/spec/request/jobs_spec.rb +++ b/spec/request/jobs_spec.rb @@ -70,7 +70,7 @@ describe 'running a pollable job that emits warnings' do it 'contains these warnings in the job representation' do job = TestJob.new(user.guid) - pollable_job = VCAP::CloudController::Jobs::Enqueuer.new(job, queue: VCAP::CloudController::Jobs::Queues.generic).enqueue_pollable + pollable_job = VCAP::CloudController::Jobs::Enqueuer.new(queue: VCAP::CloudController::Jobs::Queues.generic).enqueue_pollable(job) job_guid = pollable_job.guid execute_all_jobs(expected_successes: 1, expected_failures: 0) diff --git a/spec/request/v2/service_instances_spec.rb b/spec/request/v2/service_instances_spec.rb index 7b34e49d9a4..1727e7d8433 100644 --- a/spec/request/v2/service_instances_spec.rb +++ b/spec/request/v2/service_instances_spec.rb @@ -516,7 +516,7 @@ VCAP::CloudController::UserAuditInfo.new(user_guid: user.guid, user_email: 'test@example.org'), {} ) - VCAP::CloudController::Jobs::Enqueuer.new(job).enqueue + VCAP::CloudController::Jobs::Enqueuer.new.enqueue(job) allow(broker_client).to receive(:fetch_service_instance_last_operation).and_return( last_operation: { diff --git a/spec/unit/controllers/services/lifecycle/service_instance_deprovisioner_spec.rb b/spec/unit/controllers/services/lifecycle/service_instance_deprovisioner_spec.rb index db2c7ed093a..259ae706f15 100644 --- a/spec/unit/controllers/services/lifecycle/service_instance_deprovisioner_spec.rb +++ b/spec/unit/controllers/services/lifecycle/service_instance_deprovisioner_spec.rb @@ -129,8 +129,8 @@ module VCAP::CloudController it 'enqueues a job' do fake_enqueuer = instance_double(Jobs::Enqueuer) - expect(Jobs::Enqueuer).to receive(:new).with(duck_type(:perform), { queue: Jobs::Queues.generic }).and_return(fake_enqueuer) - expect(fake_enqueuer).to receive(:enqueue).once + expect(Jobs::Enqueuer).to receive(:new).with({ queue: Jobs::Queues.generic }).and_return(fake_enqueuer) + expect(fake_enqueuer).to receive(:enqueue).with(duck_type(:perform)).once deprovisioner.deprovision_service_instance(service_instance, accepts_incomplete, async) end diff --git a/spec/unit/jobs/deserialization_spec.rb b/spec/unit/jobs/deserialization_spec.rb index 4090492944c..c8d15dedc47 100644 --- a/spec/unit/jobs/deserialization_spec.rb +++ b/spec/unit/jobs/deserialization_spec.rb @@ -82,7 +82,7 @@ module Jobs end it 'equals dumped job yaml' do - VCAP::CloudController::Jobs::Enqueuer.new(job).enqueue_pollable + VCAP::CloudController::Jobs::Enqueuer.new.enqueue_pollable(job) jobs_in_db = Sequel::Model.db.fetch('SELECT handler FROM delayed_jobs').all expect(jobs_in_db.size).to eq(1) @@ -348,7 +348,7 @@ module Jobs end it 'equals dumped job yaml' do - VCAP::CloudController::Jobs::Enqueuer.new(job).enqueue + VCAP::CloudController::Jobs::Enqueuer.new.enqueue(job) jobs_in_db = Sequel::Model.db.fetch('SELECT handler FROM delayed_jobs').all expect(jobs_in_db.size).to eq(1) diff --git a/spec/unit/jobs/enqueuer_async_spec.rb b/spec/unit/jobs/enqueuer_async_spec.rb index 51ad1521e6c..ef4460f2796 100644 --- a/spec/unit/jobs/enqueuer_async_spec.rb +++ b/spec/unit/jobs/enqueuer_async_spec.rb @@ -69,7 +69,7 @@ module VCAP::CloudController::Jobs Delayed::Worker.plugins << BeforeAfterEnqueueHook # Collecting state via callback Delayed::Worker.plugins << AfterEnqueueHook - Enqueuer.new(wrapped_job, opts).enqueue_pollable + Enqueuer.new(opts).enqueue_pollable(wrapped_job) job_state = TestDelayedPlugin.callback_counts # We are testing an asynchronous event to verify that the PollableJobModel is updated before DelayedJob diff --git a/spec/unit/jobs/enqueuer_spec.rb b/spec/unit/jobs/enqueuer_spec.rb index cda441ea2c5..3d878fef6be 100644 --- a/spec/unit/jobs/enqueuer_spec.rb +++ b/spec/unit/jobs/enqueuer_spec.rb @@ -46,7 +46,7 @@ module VCAP::CloudController::Jobs end ::VCAP::Request.current_id = request_id - Enqueuer.new(wrapped_job, opts).public_send(method_name) + Enqueuer.new(opts).public_send(method_name, wrapped_job) end it 'uses the JobTimeoutCalculator' do @@ -56,7 +56,7 @@ module VCAP::CloudController::Jobs expect(enqueued_job.handler.timeout).to eq(job_timeout) original_enqueue.call(enqueued_job, opts) end - Enqueuer.new(wrapped_job, opts).public_send(method_name) + Enqueuer.new(opts).public_send(method_name, wrapped_job) expect(timeout_calculator).to have_received(:calculate).with(wrapped_job.job_name_in_configuration, 'my-queue') end @@ -66,7 +66,7 @@ module VCAP::CloudController::Jobs expect(opts).not_to include(:priority) original_enqueue.call(enqueued_job, opts) end - Enqueuer.new(wrapped_job, opts).public_send(method_name) + Enqueuer.new(opts).public_send(method_name, wrapped_job) end end @@ -88,7 +88,7 @@ module VCAP::CloudController::Jobs expect(enqueued_job.handler.handler).to be wrapped_job original_enqueue.call(enqueued_job, opts) end - Enqueuer.new(wrapped_job, opts).enqueue + Enqueuer.new(opts).enqueue(wrapped_job) end end @@ -111,11 +111,11 @@ module VCAP::CloudController::Jobs expect(enqueued_job.handler.handler.handler).to be wrapped_job original_enqueue.call(enqueued_job, opts) end - Enqueuer.new(wrapped_job, opts).enqueue_pollable + Enqueuer.new(opts).enqueue_pollable(wrapped_job) end it 'returns the PollableJobModel' do - result = Enqueuer.new(wrapped_job, opts).enqueue_pollable + result = Enqueuer.new(opts).enqueue_pollable(wrapped_job) latest_job = VCAP::CloudController::PollableJobModel.last expect(result).to eq(latest_job) end @@ -129,7 +129,7 @@ module VCAP::CloudController::Jobs original_enqueue.call(enqueued_job, opts) end - Enqueuer.new(wrapped_job, opts).enqueue_pollable do |pollable_job| + Enqueuer.new(opts).enqueue_pollable(wrapped_job) do |pollable_job| ErrorTranslatorJob.new(pollable_job) end end @@ -141,7 +141,7 @@ module VCAP::CloudController::Jobs expect(opts).not_to include(:priority) original_enqueue.call(enqueued_job, opts) end - Enqueuer.new(wrapped_job, opts).enqueue_pollable + Enqueuer.new(opts).enqueue_pollable(wrapped_job) end context 'priority from config' do @@ -154,7 +154,7 @@ module VCAP::CloudController::Jobs expect(opts).to include({ priority: 1899 }) original_enqueue.call(enqueued_job, opts) end - Enqueuer.new(wrapped_job, opts).enqueue_pollable + Enqueuer.new(opts).enqueue_pollable(wrapped_job) end end @@ -167,7 +167,7 @@ module VCAP::CloudController::Jobs expect(opts).to include({ priority: 1900 }) original_enqueue.call(enqueued_job, opts) end - Enqueuer.new(wrapped_job, opts).enqueue_pollable + Enqueuer.new(opts).enqueue_pollable(wrapped_job) end end @@ -180,7 +180,7 @@ module VCAP::CloudController::Jobs expect(opts).to include({ priority: 1901 }) original_enqueue.call(enqueued_job, opts) end - Enqueuer.new(wrapped_job, opts).enqueue_pollable + Enqueuer.new(opts).enqueue_pollable(wrapped_job) end end @@ -192,7 +192,7 @@ module VCAP::CloudController::Jobs original_enqueue.call(enqueued_job, opts) end opts[:priority] = 2000 - Enqueuer.new(wrapped_job, opts).enqueue_pollable + Enqueuer.new(opts).enqueue_pollable(wrapped_job) end end end @@ -208,7 +208,7 @@ module VCAP::CloudController::Jobs end expect(Delayed::Worker.delay_jobs).to be(true) - Enqueuer.new(wrapped_job, opts).run_inline + Enqueuer.new(opts).run_inline(wrapped_job) expect(Delayed::Worker.delay_jobs).to be(true) end @@ -217,7 +217,7 @@ module VCAP::CloudController::Jobs expect(enqueued_job).to be_a TimeoutJob expect(enqueued_job.timeout).to eq(global_timeout) end - Enqueuer.new(wrapped_job, opts).run_inline + Enqueuer.new(opts).run_inline(wrapped_job) end context 'when executing the job fails' do @@ -225,7 +225,7 @@ module VCAP::CloudController::Jobs expect(Delayed::Job).to receive(:enqueue).and_raise('Boom!') expect(Delayed::Worker.delay_jobs).to be(true) expect do - Enqueuer.new(wrapped_job, opts).run_inline + Enqueuer.new(opts).run_inline(wrapped_job) end.to raise_error(/Boom!/) expect(Delayed::Worker.delay_jobs).to be(true) end diff --git a/spec/unit/jobs/pollable_job_wrapper_spec.rb b/spec/unit/jobs/pollable_job_wrapper_spec.rb index 6d4c398b3d1..0db1f850068 100644 --- a/spec/unit/jobs/pollable_job_wrapper_spec.rb +++ b/spec/unit/jobs/pollable_job_wrapper_spec.rb @@ -23,7 +23,7 @@ class BigException < StandardError let(:job) { DeleteActionJob.new(VCAP::CloudController::DropletModel, 'fake', delete_action) } it 'creates a job record and marks the job model as completed' do - enqueued_job = VCAP::CloudController::Jobs::Enqueuer.new(pollable_job).enqueue + enqueued_job = VCAP::CloudController::Jobs::Enqueuer.new.enqueue(pollable_job) job_record = VCAP::CloudController::PollableJobModel.find(delayed_job_guid: enqueued_job.guid) expect(job_record).not_to be_nil, "Expected to find PollableJobModel with delayed_job_guid '#{enqueued_job.guid}', but did not" @@ -49,15 +49,15 @@ class BigException < StandardError before do stub_const('VCAP::CloudController::SecurityContext', security_context) - VCAP::CloudController::Jobs::Enqueuer.new(PollableJobWrapper.new(job)).enqueue - VCAP::CloudController::Jobs::Enqueuer.new(PollableJobWrapper.new(job)).enqueue - VCAP::CloudController::Jobs::Enqueuer.new(PollableJobWrapper.new(job)).enqueue + VCAP::CloudController::Jobs::Enqueuer.new.enqueue(PollableJobWrapper.new(job)) + VCAP::CloudController::Jobs::Enqueuer.new.enqueue(PollableJobWrapper.new(job)) + VCAP::CloudController::Jobs::Enqueuer.new.enqueue(PollableJobWrapper.new(job)) end it 'adds +1 to base priority for each active job' do TestConfig.config[:jobs][:priorities] = { 'droplet.delete': 20 } - enqueued_job = VCAP::CloudController::Jobs::Enqueuer.new(pollable_job).enqueue + enqueued_job = VCAP::CloudController::Jobs::Enqueuer.new.enqueue(pollable_job) expect(enqueued_job.priority).to eq(23) end @@ -71,14 +71,14 @@ class BigException < StandardError it 'does not change its delayed job\'s base priority' do TestConfig.config[:jobs][:priorities] = { 'droplet.delete': 20 } - enqueued_job = VCAP::CloudController::Jobs::Enqueuer.new(pollable_job).enqueue + enqueued_job = VCAP::CloudController::Jobs::Enqueuer.new.enqueue(pollable_job) expect(enqueued_job.priority).to eq(20) end it 'uses nil for the user_guid' do TestConfig.config[:jobs][:priorities] = { 'droplet.delete': 20 } - enqueued_job = VCAP::CloudController::Jobs::Enqueuer.new(pollable_job).enqueue + enqueued_job = VCAP::CloudController::Jobs::Enqueuer.new.enqueue(pollable_job) job_record = VCAP::CloudController::PollableJobModel.find(delayed_job_guid: enqueued_job.guid) expect(job_record.user_guid).to be_nil @@ -94,15 +94,15 @@ class BigException < StandardError before do stub_const('VCAP::CloudController::SecurityContext', security_context) - VCAP::CloudController::Jobs::Enqueuer.new(PollableJobWrapper.new(job)).enqueue - VCAP::CloudController::Jobs::Enqueuer.new(PollableJobWrapper.new(job)).enqueue - VCAP::CloudController::Jobs::Enqueuer.new(PollableJobWrapper.new(job)).enqueue + VCAP::CloudController::Jobs::Enqueuer.new.enqueue(PollableJobWrapper.new(job)) + VCAP::CloudController::Jobs::Enqueuer.new.enqueue(PollableJobWrapper.new(job)) + VCAP::CloudController::Jobs::Enqueuer.new.enqueue(PollableJobWrapper.new(job)) end it 'does not change its delayed job\'s base priority' do TestConfig.config[:jobs][:priorities] = { 'droplet.delete': 20 } - enqueued_job = VCAP::CloudController::Jobs::Enqueuer.new(pollable_job).enqueue + enqueued_job = VCAP::CloudController::Jobs::Enqueuer.new.enqueue(pollable_job) expect(enqueued_job.priority).to eq(20) end end @@ -116,7 +116,7 @@ class BigException < StandardError jobs_before_enqueue = VCAP::CloudController::PollableJobModel.all.length expect(jobs_before_enqueue).to eq(1) - enqueued_job = VCAP::CloudController::Jobs::Enqueuer.new(pollable_job).enqueue + enqueued_job = VCAP::CloudController::Jobs::Enqueuer.new.enqueue(pollable_job) jobs_after_enqueue = VCAP::CloudController::PollableJobModel.all.length expect(jobs_after_enqueue).to eq(1) @@ -140,15 +140,15 @@ class BigException < StandardError before do stub_const('VCAP::CloudController::SecurityContext', security_context) - VCAP::CloudController::Jobs::Enqueuer.new(PollableJobWrapper.new(job)).enqueue - VCAP::CloudController::Jobs::Enqueuer.new(PollableJobWrapper.new(job)).enqueue - VCAP::CloudController::Jobs::Enqueuer.new(PollableJobWrapper.new(job)).enqueue + VCAP::CloudController::Jobs::Enqueuer.new.enqueue(PollableJobWrapper.new(job)) + VCAP::CloudController::Jobs::Enqueuer.new.enqueue(PollableJobWrapper.new(job)) + VCAP::CloudController::Jobs::Enqueuer.new.enqueue(PollableJobWrapper.new(job)) end it 'does not change its delayed job\'s base priority' do TestConfig.config[:jobs][:priorities] = { 'droplet.delete': 20 } - enqueued_job = VCAP::CloudController::Jobs::Enqueuer.new(pollable_job).enqueue + enqueued_job = VCAP::CloudController::Jobs::Enqueuer.new.enqueue(pollable_job) expect(enqueued_job.priority).to eq(20) end end @@ -162,7 +162,7 @@ class BigException < StandardError end it 'updates the existing job state accordingly' do - enqueued_job = VCAP::CloudController::Jobs::Enqueuer.new(pollable_job).enqueue + enqueued_job = VCAP::CloudController::Jobs::Enqueuer.new.enqueue(pollable_job) job_record = VCAP::CloudController::PollableJobModel.find(delayed_job_guid: enqueued_job.guid) expect(job_record.state).to eq('ABRACADABRA') end @@ -178,7 +178,7 @@ class BigException < StandardError context 'when there is an associated job model' do it 'marks the job model failed and records errors' do - enqueued_job = VCAP::CloudController::Jobs::Enqueuer.new(pollable_job).enqueue + enqueued_job = VCAP::CloudController::Jobs::Enqueuer.new.enqueue(pollable_job) job_model = VCAP::CloudController::PollableJobModel.make(delayed_job_guid: enqueued_job.guid, state: 'PROCESSING') execute_all_jobs(expected_successes: 0, expected_failures: 1) @@ -196,7 +196,7 @@ class BigException < StandardError context 'when there is NOT an associated job model' do it 'does NOT choke' do - VCAP::CloudController::Jobs::Enqueuer.new(pollable_job).enqueue + VCAP::CloudController::Jobs::Enqueuer.new.enqueue(pollable_job) execute_all_jobs(expected_successes: 0, expected_failures: 1) end @@ -229,7 +229,7 @@ class BigException < StandardError let(:expected_warnings) { [{ detail: 'warning 1' }, { detail: 'warning 2' }] } it 'records all warnings' do - enqueued_job = VCAP::CloudController::Jobs::Enqueuer.new(pollable_job).enqueue + enqueued_job = VCAP::CloudController::Jobs::Enqueuer.new.enqueue(pollable_job) job_model = VCAP::CloudController::PollableJobModel.make(delayed_job_guid: enqueued_job.guid, state: 'PROCESSING') execute_all_jobs(expected_successes: 1, expected_failures: 0) @@ -245,7 +245,7 @@ class BigException < StandardError let(:expected_warnings) { nil } it 'has empty list of warnings' do - enqueued_job = VCAP::CloudController::Jobs::Enqueuer.new(pollable_job).enqueue + enqueued_job = VCAP::CloudController::Jobs::Enqueuer.new.enqueue(pollable_job) job_model = VCAP::CloudController::PollableJobModel.make(delayed_job_guid: enqueued_job.guid, state: 'PROCESSING') execute_all_jobs(expected_successes: 1, expected_failures: 0) diff --git a/spec/unit/jobs/reoccurring_job_spec.rb b/spec/unit/jobs/reoccurring_job_spec.rb index 9668d45f92e..31aef3b622e 100644 --- a/spec/unit/jobs/reoccurring_job_spec.rb +++ b/spec/unit/jobs/reoccurring_job_spec.rb @@ -42,13 +42,13 @@ def perform it 'can be enqueued' do expect(PollableJobModel.all).to be_empty - pollable_job = Jobs::Enqueuer.new(FakeJob.new, queue: Jobs::Queues.generic).enqueue_pollable + pollable_job = Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(FakeJob.new) expect(PollableJobModel.first).to eq(pollable_job) end it 'runs a first time' do - Jobs::Enqueuer.new(FakeJob.new, queue: Jobs::Queues.generic).enqueue_pollable + Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(FakeJob.new) number_of_calls_to_job = Delayed::Job.last.payload_object.handler.handler.handler.calls expect(number_of_calls_to_job).to eq(0) @@ -60,7 +60,7 @@ def perform end it 're-enqueues itself with a new delayed job' do - pollable_job = Jobs::Enqueuer.new(FakeJob.new, queue: Jobs::Queues.generic).enqueue_pollable + pollable_job = Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(FakeJob.new) expect(PollableJobModel.all).to have(1).job execute_all_jobs(expected_successes: 1, expected_failures: 0, jobs_to_execute: 1) @@ -73,7 +73,7 @@ def perform it 'keeps the delayed job\'s priority when re-enqueuing' do TestConfig.config[:jobs][:priorities] = { 'fake-job': 20 } - pollable_job = Jobs::Enqueuer.new(FakeJob.new, { queue: Jobs::Queues.generic, priority: 22 }).enqueue_pollable + pollable_job = Jobs::Enqueuer.new({ queue: Jobs::Queues.generic, priority: 22 }).enqueue_pollable(FakeJob.new) expect(Delayed::Job.where(guid: PollableJobModel.first.delayed_job_guid).first[:priority]).to eq(22) execute_all_jobs(expected_successes: 1, expected_failures: 0, jobs_to_execute: 1) @@ -90,7 +90,7 @@ def perform enqueued_time = 0 Timecop.freeze do - Jobs::Enqueuer.new(job, queue: Jobs::Queues.generic).enqueue_pollable + Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(job) execute_all_jobs(expected_successes: 1, expected_failures: 0) enqueued_time = Time.now end @@ -121,7 +121,7 @@ def perform enqueued_time = 0 Timecop.freeze do - Jobs::Enqueuer.new(FakeJob.new, queue: Jobs::Queues.generic).enqueue_pollable + Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(FakeJob.new) execute_all_jobs(expected_successes: 1, expected_failures: 0) enqueued_time = Time.now end @@ -144,7 +144,7 @@ def perform enqueued_time = 0 Timecop.freeze do - Jobs::Enqueuer.new(FakeJob.new, queue: Jobs::Queues.generic).enqueue_pollable + Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(FakeJob.new) execute_all_jobs(expected_successes: 1, expected_failures: 0) enqueued_time = Time.now end @@ -167,7 +167,7 @@ def perform enqueued_time = 0 Timecop.freeze do - Jobs::Enqueuer.new(FakeJob.new(retry_after: [20, 30]), queue: Jobs::Queues.generic).enqueue_pollable + Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(FakeJob.new(retry_after: [20, 30])) execute_all_jobs(expected_successes: 1, expected_failures: 0) enqueued_time = Time.now end @@ -204,7 +204,7 @@ def perform enqueued_time = 0 Timecop.freeze do - Jobs::Enqueuer.new(job, queue: Jobs::Queues.generic).enqueue_pollable + Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(job) enqueued_time = Time.now end @@ -228,7 +228,7 @@ def perform enqueued_time = 0 Timecop.freeze do - Jobs::Enqueuer.new(FakeJob.new(retry_after: [20, 30]), queue: Jobs::Queues.generic).enqueue_pollable + Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(FakeJob.new(retry_after: [20, 30])) execute_all_jobs(expected_successes: 1, expected_failures: 0) enqueued_time = Time.now end @@ -257,7 +257,7 @@ def perform enqueued_time = 0 Timecop.freeze do - Jobs::Enqueuer.new(FakeJob.new(retry_after: [20]), queue: Jobs::Queues.generic).enqueue_pollable + Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(FakeJob.new(retry_after: [20])) execute_all_jobs(expected_successes: 1, expected_failures: 0) enqueued_time = Time.now end @@ -287,7 +287,7 @@ def perform enqueued_time = 0 Timecop.freeze do - Jobs::Enqueuer.new(FakeJob.new, queue: Jobs::Queues.generic).enqueue_pollable + Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(FakeJob.new) execute_all_jobs(expected_successes: 1, expected_failures: 0) enqueued_time = Time.now end @@ -313,7 +313,7 @@ def perform end it 'continues to run until finished' do - Jobs::Enqueuer.new(FakeJob.new, queue: Jobs::Queues.generic).enqueue_pollable + Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(FakeJob.new) 10.times do Timecop.travel(61.seconds) @@ -331,7 +331,7 @@ def perform end it 'completes with a failed state' do - Jobs::Enqueuer.new(FakeFailingJob.new, queue: Jobs::Queues.generic).enqueue_pollable + Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(FakeFailingJob.new) execute_all_jobs(expected_successes: 0, expected_failures: 1) expect(PollableJobModel.first.state).to eq('FAILED') @@ -344,7 +344,7 @@ def perform context 'timeout' do it 'marks the job failed with a timeout error' do - Jobs::Enqueuer.new(FakeJob.new, queue: Jobs::Queues.generic).enqueue_pollable + Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(FakeJob.new) Timecop.freeze(Time.now + VCAP::CloudController::Config.config.get(:broker_client_max_async_poll_duration_minutes).minute + 1) do execute_all_jobs(expected_successes: 0, expected_failures: 1, jobs_to_execute: 1) @@ -364,7 +364,7 @@ def handle_timeout end end - Jobs::Enqueuer.new(FakeTimeoutJob.new, queue: Jobs::Queues.generic).enqueue_pollable + Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(FakeTimeoutJob.new) Timecop.freeze(Time.now + VCAP::CloudController::Config.config.get(:broker_client_max_async_poll_duration_minutes).minute + 1) do execute_all_jobs(expected_successes: 0, expected_failures: 1, jobs_to_execute: 1) @@ -377,7 +377,7 @@ def handle_timeout job.polling_interval_seconds = 1.minute job.maximum_duration_seconds = 2.minutes - Jobs::Enqueuer.new(job, queue: Jobs::Queues.generic).enqueue_pollable + Jobs::Enqueuer.new(queue: Jobs::Queues.generic).enqueue_pollable(job) Timecop.freeze(61.seconds.after(Time.now)) do execute_all_jobs(expected_successes: 0, expected_failures: 1, jobs_to_execute: 1) diff --git a/spec/unit/jobs/runtime/orphaned_blobs_cleanup_spec.rb b/spec/unit/jobs/runtime/orphaned_blobs_cleanup_spec.rb index cbb3d4d92f5..e44d193c972 100644 --- a/spec/unit/jobs/runtime/orphaned_blobs_cleanup_spec.rb +++ b/spec/unit/jobs/runtime/orphaned_blobs_cleanup_spec.rb @@ -479,8 +479,8 @@ module Jobs::Runtime expect(BlobstoreDelete).to have_received(:new).with('buildpack-to-be-deleted', :buildpack_blobstore) expect(BlobstoreDelete).to have_received(:new).with('droplet-to-be-deleted/droplet', :droplet_blobstore) expect(BlobstoreDelete).to have_received(:new).with('resource-to-be-deleted', :legacy_global_app_bits_cache) - expect(Jobs::Enqueuer).to have_received(:new).exactly(4).times.with(blobstore_delete, hash_including(queue: Jobs::Queues.generic, priority: 100)) - expect(enqueuer).to have_received(:enqueue).exactly(4).times + expect(Jobs::Enqueuer).to have_received(:new).exactly(4).times.with(hash_including(queue: Jobs::Queues.generic, priority: 100)) + expect(enqueuer).to have_received(:enqueue).exactly(4).times.with(blobstore_delete) expect(packages_orphaned_blob).not_to exist expect(buildpacks_orphaned_blob).not_to exist diff --git a/spec/unit/jobs/services/delete_orphaned_binding_spec.rb b/spec/unit/jobs/services/delete_orphaned_binding_spec.rb index 19dc4504b17..cb18203b423 100644 --- a/spec/unit/jobs/services/delete_orphaned_binding_spec.rb +++ b/spec/unit/jobs/services/delete_orphaned_binding_spec.rb @@ -21,7 +21,7 @@ module Jobs::Services expect(VCAP::Services::ServiceClientProvider).to receive(:provide). with(instance: service_binding.service_instance) - Jobs::Enqueuer.new(job, { queue: Jobs::Queues.generic, run_at: Delayed::Job.db_time_now }).enqueue + Jobs::Enqueuer.new({ queue: Jobs::Queues.generic, run_at: Delayed::Job.db_time_now }).enqueue(job) execute_all_jobs(expected_successes: 1, expected_failures: 0) expect(client).to have_received(:unbind) do |binding| @@ -61,7 +61,7 @@ def run_job start = Delayed::Job.db_time_now opts = { queue: Jobs::Queues.generic, run_at: start } - Jobs::Enqueuer.new(job, opts).enqueue + Jobs::Enqueuer.new(opts).enqueue(job) run_at_time = start 10.times do |i| diff --git a/spec/unit/jobs/services/delete_orphaned_instance_spec.rb b/spec/unit/jobs/services/delete_orphaned_instance_spec.rb index cb4b7bf180c..6a853e3ed56 100644 --- a/spec/unit/jobs/services/delete_orphaned_instance_spec.rb +++ b/spec/unit/jobs/services/delete_orphaned_instance_spec.rb @@ -25,7 +25,7 @@ module Jobs::Services with(instance: service_instance) expect(client).to receive(:deprovision).with(service_instance, accepts_incomplete: true) - Jobs::Enqueuer.new(job, { queue: Jobs::Queues.generic, run_at: Delayed::Job.db_time_now }).enqueue + Jobs::Enqueuer.new({ queue: Jobs::Queues.generic, run_at: Delayed::Job.db_time_now }).enqueue(job) execute_all_jobs(expected_successes: 1, expected_failures: 0) expect(Delayed::Job.count).to eq 0 end @@ -59,7 +59,7 @@ def run_job start = Delayed::Job.db_time_now opts = { queue: Jobs::Queues.generic, run_at: start } - Jobs::Enqueuer.new(job, opts).enqueue + Jobs::Enqueuer.new(opts).enqueue(job) run_at_time = start 10.times do |i| diff --git a/spec/unit/jobs/services/delete_orphaned_key_spec.rb b/spec/unit/jobs/services/delete_orphaned_key_spec.rb index 4a34a4c815d..3ddf1e031d0 100644 --- a/spec/unit/jobs/services/delete_orphaned_key_spec.rb +++ b/spec/unit/jobs/services/delete_orphaned_key_spec.rb @@ -28,7 +28,7 @@ module Jobs::Services expect(VCAP::Services::ServiceClientProvider).to receive(:provide). with(instance: service_instance) - Jobs::Enqueuer.new(job, { queue: Jobs::Queues.generic, run_at: Delayed::Job.db_time_now }).enqueue + Jobs::Enqueuer.new({ queue: Jobs::Queues.generic, run_at: Delayed::Job.db_time_now }).enqueue(job) execute_all_jobs(expected_successes: 1, expected_failures: 0) expect(client).to have_received(:unbind).with(service_key) @@ -64,7 +64,7 @@ def run_job Timecop.freeze do first_enqueue_time = Delayed::Job.db_time_now opts = { queue: Jobs::Queues.generic, run_at: first_enqueue_time } - Jobs::Enqueuer.new(job, opts).enqueue + Jobs::Enqueuer.new(opts).enqueue(job) end run_at_time = first_enqueue_time diff --git a/spec/unit/jobs/services/service_binding_state_fetch_spec.rb b/spec/unit/jobs/services/service_binding_state_fetch_spec.rb index 779be7aacd2..6652ab80e8e 100644 --- a/spec/unit/jobs/services/service_binding_state_fetch_spec.rb +++ b/spec/unit/jobs/services/service_binding_state_fetch_spec.rb @@ -37,7 +37,7 @@ module Services end def run_job(job) - Jobs::Enqueuer.new(job, { queue: Jobs::Queues.generic, run_at: Delayed::Job.db_time_now }).enqueue + Jobs::Enqueuer.new({ queue: Jobs::Queues.generic, run_at: Delayed::Job.db_time_now }).enqueue(job) execute_all_jobs(expected_successes: 1, expected_failures: 0) end @@ -620,7 +620,7 @@ def run_job(job) let(:last_operation_response) { {} } before do - Jobs::Enqueuer.new(job, { queue: Jobs::Queues.generic, run_at: Delayed::Job.db_time_now }).enqueue + Jobs::Enqueuer.new({ queue: Jobs::Queues.generic, run_at: Delayed::Job.db_time_now }).enqueue(job) Delayed::Worker.new.work_off end @@ -773,7 +773,7 @@ def run_job(job) job TestConfig.override(broker_client_default_async_poll_interval_seconds: new_polling_interval) - Jobs::Enqueuer.new(job, { queue: Jobs::Queues.generic, run_at: first_run_time }).enqueue + Jobs::Enqueuer.new({ queue: Jobs::Queues.generic, run_at: first_run_time }).enqueue(job) execute_all_jobs(expected_successes: 1, expected_failures: 0) expect(Delayed::Job.count).to eq(1) diff --git a/spec/unit/jobs/services/service_instance_state_fetch_spec.rb b/spec/unit/jobs/services/service_instance_state_fetch_spec.rb index 35931b85d4d..18d11aba276 100644 --- a/spec/unit/jobs/services/service_instance_state_fetch_spec.rb +++ b/spec/unit/jobs/services/service_instance_state_fetch_spec.rb @@ -58,7 +58,7 @@ module Services end def run_job(job) - Jobs::Enqueuer.new(job, { queue: Jobs::Queues.generic, run_at: Delayed::Job.db_time_now }).enqueue + Jobs::Enqueuer.new({ queue: Jobs::Queues.generic, run_at: Delayed::Job.db_time_now }).enqueue(job) execute_all_jobs(expected_successes: 1, expected_failures: 0) end @@ -524,7 +524,7 @@ def run_job(job) Timecop.freeze(Time.now) first_run_time = Time.now - Jobs::Enqueuer.new(job, { queue: Jobs::Queues.generic, run_at: first_run_time }).enqueue + Jobs::Enqueuer.new({ queue: Jobs::Queues.generic, run_at: first_run_time }).enqueue(job) execute_all_jobs(expected_successes: 1, expected_failures: 0) expect(Delayed::Job.count).to eq(1) @@ -558,7 +558,7 @@ def run_job(job) updated_username = 'new-username' updated_password = 'new-password' - Jobs::Enqueuer.new(job, { queue: Jobs::Queues.generic, run_at: Delayed::Job.db_time_now }).enqueue + Jobs::Enqueuer.new({ queue: Jobs::Queues.generic, run_at: Delayed::Job.db_time_now }).enqueue(job) broker.update({ broker_url: updated_url, @@ -610,7 +610,7 @@ def run_job(job) job_id = nil Timecop.freeze now do - enqueued_job = Jobs::Enqueuer.new(job, queue: Jobs::Queues.generic, run_at: Time.now).enqueue + enqueued_job = Jobs::Enqueuer.new(queue: Jobs::Queues.generic, run_at: Time.now).enqueue(job) job_id = enqueued_job.id end diff --git a/spec/unit/jobs/services/shared/when_broker_returns_retry_after_header.rb b/spec/unit/jobs/services/shared/when_broker_returns_retry_after_header.rb index 6b64e72269c..0f5ab3e479d 100644 --- a/spec/unit/jobs/services/shared/when_broker_returns_retry_after_header.rb +++ b/spec/unit/jobs/services/shared/when_broker_returns_retry_after_header.rb @@ -16,7 +16,7 @@ Timecop.freeze(Time.now) first_run_time = Time.now - VCAP::CloudController::Jobs::Enqueuer.new(job, { queue: VCAP::CloudController::Jobs::Queues.generic, run_at: first_run_time }).enqueue + VCAP::CloudController::Jobs::Enqueuer.new({ queue: VCAP::CloudController::Jobs::Queues.generic, run_at: first_run_time }).enqueue(job) execute_all_jobs(expected_successes: 1, expected_failures: 0) expect(Delayed::Job.count).to eq(1) @@ -39,7 +39,7 @@ Timecop.freeze(Time.now) first_run_time = Time.now - VCAP::CloudController::Jobs::Enqueuer.new(job, { queue: VCAP::CloudController::Jobs::Queues.generic, run_at: first_run_time }).enqueue + VCAP::CloudController::Jobs::Enqueuer.new({ queue: VCAP::CloudController::Jobs::Queues.generic, run_at: first_run_time }).enqueue(job) execute_all_jobs(expected_successes: 1, expected_failures: 0) expect(Delayed::Job.count).to eq(1) @@ -57,7 +57,7 @@ Timecop.freeze(Time.now) first_run_time = Time.now - VCAP::CloudController::Jobs::Enqueuer.new(job, { queue: VCAP::CloudController::Jobs::Queues.generic, run_at: first_run_time }).enqueue + VCAP::CloudController::Jobs::Enqueuer.new({ queue: VCAP::CloudController::Jobs::Queues.generic, run_at: first_run_time }).enqueue(job) execute_all_jobs(expected_successes: 1, expected_failures: 0) expect(Delayed::Job.count).to eq(1) diff --git a/spec/unit/lib/cloud_controller/clock/clock_spec.rb b/spec/unit/lib/cloud_controller/clock/clock_spec.rb index c1b76584731..32f1021eb67 100644 --- a/spec/unit/lib/cloud_controller/clock/clock_spec.rb +++ b/spec/unit/lib/cloud_controller/clock/clock_spec.rb @@ -41,8 +41,8 @@ def initialize(*args); end clock.schedule_daily_job(**clock_opts) { some_job_class.new } expected_job_opts = { queue: job_name, priority: 0 } - expect(Jobs::Enqueuer).to have_received(:new).with(instance_of(some_job_class), expected_job_opts) - expect(enqueuer).to have_received(:enqueue) + expect(Jobs::Enqueuer).to have_received(:new).with(expected_job_opts) + expect(enqueuer).to have_received(:enqueue).with(instance_of(some_job_class)) end context 'when a job has a priority' do @@ -70,8 +70,8 @@ def initialize(*args); end clock.schedule_daily_job(**clock_opts) { some_job_class.new } expected_job_opts = { queue: job_name, priority: priority } - expect(Jobs::Enqueuer).to have_received(:new).with(instance_of(some_job_class), expected_job_opts) - expect(enqueuer).to have_received(:enqueue) + expect(Jobs::Enqueuer).to have_received(:new).with(expected_job_opts) + expect(enqueuer).to have_received(:enqueue).with(instance_of(some_job_class)) end end end @@ -97,8 +97,8 @@ def initialize(*args); end clock.schedule_frequent_worker_job(**clock_opts) { some_job_class.new } expected_job_opts = { queue: job_name } - expect(Jobs::Enqueuer).to have_received(:new).with(instance_of(some_job_class), expected_job_opts) - expect(enqueuer).to have_received(:enqueue) + expect(Jobs::Enqueuer).to have_received(:new).with(expected_job_opts) + expect(enqueuer).to have_received(:enqueue).with(instance_of(some_job_class)) end end @@ -127,8 +127,8 @@ def initialize(*args); end clock.schedule_frequent_inline_job(**clock_opts) { some_job_class.new } expected_job_opts = { queue: job_name } - expect(Jobs::Enqueuer).to have_received(:new).with(instance_of(some_job_class), expected_job_opts) - expect(enqueuer).to have_received(:run_inline) + expect(Jobs::Enqueuer).to have_received(:new).with(expected_job_opts) + expect(enqueuer).to have_received(:run_inline).with(instance_of(some_job_class)) end end end diff --git a/spec/unit/lib/cloud_controller/install_buildpacks_spec.rb b/spec/unit/lib/cloud_controller/install_buildpacks_spec.rb index 25e7cf0f63e..7cb68107abe 100644 --- a/spec/unit/lib/cloud_controller/install_buildpacks_spec.rb +++ b/spec/unit/lib/cloud_controller/install_buildpacks_spec.rb @@ -99,10 +99,11 @@ module VCAP::CloudController it 'enqueues the rest of the buildpack install jobs' do allow(canary_job).to receive(:perform) - expect(Jobs::Enqueuer).to receive(:new).with(enqueued_job1, queue: 'cc-api-0').ordered.and_return(enqueuer) - expect(Jobs::Enqueuer).to receive(:new).with(enqueued_job2, queue: 'cc-api-0').ordered.and_return(enqueuer) + expect(Jobs::Enqueuer).to receive(:new).with(queue: 'cc-api-0').ordered.and_return(enqueuer) + expect(Jobs::Enqueuer).to receive(:new).with(queue: 'cc-api-0').ordered.and_return(enqueuer) - expect(enqueuer).to receive(:enqueue).twice + expect(enqueuer).to receive(:enqueue).with(enqueued_job1).once + expect(enqueuer).to receive(:enqueue).with(enqueued_job2).once installer.install(TestConfig.config_instance.get(:install_buildpacks)) end diff --git a/spec/unit/lib/delayed_job_plugins/deserialization_retry_spec.rb b/spec/unit/lib/delayed_job_plugins/deserialization_retry_spec.rb index e77292dc5eb..c00953b8072 100644 --- a/spec/unit/lib/delayed_job_plugins/deserialization_retry_spec.rb +++ b/spec/unit/lib/delayed_job_plugins/deserialization_retry_spec.rb @@ -10,7 +10,7 @@ context 'when a Delayed::Job fails to load because the class is missing' do it 'prevents DelayedJob from marking it as failed' do handler = VCAP::CloudController::Jobs::Runtime::EventsCleanup.new(10_000) - VCAP::CloudController::Jobs::Enqueuer.new(handler).enqueue + VCAP::CloudController::Jobs::Enqueuer.new.enqueue(handler) job = Delayed::Job.last job.update handler: job.handler.gsub('EventsCleanup', 'Dan') @@ -37,7 +37,7 @@ context 'and we have been retrying for more than 24 hours' do it 'stops retrying the job' do handler = VCAP::CloudController::Jobs::Runtime::EventsCleanup.new(10_000) - VCAP::CloudController::Jobs::Enqueuer.new(handler).enqueue + VCAP::CloudController::Jobs::Enqueuer.new.enqueue(handler) job = Delayed::Job.last job.update handler: job.handler.gsub('EventsCleanup', 'Dan'), created_at: Delayed::Job.db_time_now - 24.hours - 1.second @@ -53,7 +53,7 @@ context 'when a Delayed::Job fails to load because of another reason' do it 'allows the job to be marked as failed' do handler = VCAP::CloudController::Jobs::Runtime::EventsCleanup.new(10_000) - VCAP::CloudController::Jobs::Enqueuer.new(handler).enqueue + VCAP::CloudController::Jobs::Enqueuer.new.enqueue(handler) job = Delayed::Job.last job.update handler: 'Dan' @@ -66,7 +66,7 @@ context 'when the Delayed::Job is well formed' do it 'executes the job' do handler = VCAP::CloudController::Jobs::Runtime::EventsCleanup.new(10_000) - VCAP::CloudController::Jobs::Enqueuer.new(handler).enqueue + VCAP::CloudController::Jobs::Enqueuer.new.enqueue(handler) execute_all_jobs(expected_successes: 1, expected_failures: 0) end @@ -80,7 +80,7 @@ def perform it 'does not retry' do handler = BoomJob.new - VCAP::CloudController::Jobs::Enqueuer.new(handler).enqueue + VCAP::CloudController::Jobs::Enqueuer.new.enqueue(handler) job = Delayed::Job.last old_run_at = job.run_at diff --git a/spec/unit/lib/services/service_brokers/v2/orphan_mitigator_spec.rb b/spec/unit/lib/services/service_brokers/v2/orphan_mitigator_spec.rb index 0844679b22a..eb6078aa270 100644 --- a/spec/unit/lib/services/service_brokers/v2/orphan_mitigator_spec.rb +++ b/spec/unit/lib/services/service_brokers/v2/orphan_mitigator_spec.rb @@ -17,16 +17,16 @@ module ServiceBrokers::V2 OrphanMitigator.new.cleanup_failed_provision(service_instance) - expect(VCAP::CloudController::Jobs::Enqueuer).to have_received(:new) do |job, opts| + expect(VCAP::CloudController::Jobs::Enqueuer).to have_received(:new) do |opts| expect(opts[:queue]).to eq VCAP::CloudController::Jobs::Queues.generic + end + expect(mock_enqueuer).to have_received(:enqueue) do |job| expect(job).to be_a VCAP::CloudController::Jobs::Services::DeleteOrphanedInstance expect(job.name).to eq 'service-instance-deprovision' expect(job.service_instance_guid).to eq service_instance.guid expect(job.service_plan_guid).to eq service_instance.service_plan.guid end - - expect(mock_enqueuer).to have_received(:enqueue) end specify 'the enqueued job has a reschedule_at define such that exponential backoff occurs' do @@ -52,16 +52,16 @@ module ServiceBrokers::V2 end it 'enqueues an unbind job' do - expect(VCAP::CloudController::Jobs::Enqueuer).to have_received(:new) do |job, opts| + expect(VCAP::CloudController::Jobs::Enqueuer).to have_received(:new) do |opts| expect(opts[:queue]).to eq VCAP::CloudController::Jobs::Queues.generic + end + expect(mock_enqueuer).to have_received(:enqueue) do |job| expect(job).to be_a VCAP::CloudController::Jobs::Services::DeleteOrphanedBinding expect(job.name).to eq 'service-instance-unbind' expect(job.binding_info.guid).to eq binding.guid expect(job.binding_info.service_instance_guid).to eq binding.service_instance.guid end - - expect(mock_enqueuer).to have_received(:enqueue) end end @@ -97,16 +97,16 @@ module ServiceBrokers::V2 OrphanMitigator.new.cleanup_failed_key(service_key) - expect(VCAP::CloudController::Jobs::Enqueuer).to have_received(:new) do |job, opts| + expect(VCAP::CloudController::Jobs::Enqueuer).to have_received(:new) do |opts| expect(opts[:queue]).to eq VCAP::CloudController::Jobs::Queues.generic + end + expect(mock_enqueuer).to have_received(:enqueue) do |job| expect(job).to be_a VCAP::CloudController::Jobs::Services::DeleteOrphanedKey expect(job.name).to eq 'service-key-delete' expect(job.key_guid).to eq service_key.guid expect(job.service_instance_guid).to eq service_key.service_instance.guid end - - expect(mock_enqueuer).to have_received(:enqueue) end specify 'the enqueued job has a reschedule_at define such that exponential backoff occurs' do