- # Updates use row locking to resolve races between multiple
- # dispatchers trying to lock the same container.
- def update
- @object.with_lock do
- super
+ def find_objects_for_index
+ super
+ if action_name == 'lock' || action_name == 'unlock'
+ # Avoid loading more fields than we need
+ @objects = @objects.select(:id, :uuid, :state, :priority, :auth_uuid, :locked_by_uuid, :lock_count)
+ @select = %w(uuid state priority auth_uuid locked_by_uuid)
+ elsif action_name == 'update_priority'
+ # We're going to reload(lock: true) in the handler, which will
+ # select all attributes, but will fail if we don't select :id
+ # now.
+ @objects = @objects.select(:id, :uuid)