show
end
- # Updates use row locking to resolve races between multiple
- # dispatchers trying to lock the same container.
def update
- @object.with_lock do
+ # container updates can trigger container request lookups, which
+ # can deadlock if we don't lock the container_requests table
+ # first.
+ @object.transaction do
+ ActiveRecord::Base.connection.execute('LOCK container_requests, containers IN EXCLUSIVE MODE')
+ @object.reload
super
end
end
end
end
end
+
+ def secret_mounts
+ if @object &&
+ @object.auth_uuid &&
+ @object.auth_uuid == Thread.current[:api_client_authorization].uuid
+ send_json({"secret_mounts" => @object.secret_mounts})
+ else
+ send_error("Token is not associated with this container.", status: 403)
+ end
+ end
end