+ update_collections(container: container)
+ # update_collections makes a log collection that includes all of the logs
+ # for all of the containers associated with this request. For requests
+ # that are retried, this is the primary way users can get logs for
+ # failed containers.
+ # The code below makes a log collection that is a verbatim copy of the
+ # container's logs. This is required for container reuse: a container
+ # will not be reused if the owner cannot read a collection with its logs.
+ # See the "readable log" section of Container.find_reusable().
+ if container.state == Container::Complete
+ log_col = Collection.where(portable_data_hash: container.log).first
+ if log_col
+ # Need to save collection
+ completed_coll = Collection.new(
+ owner_uuid: self.owner_uuid,
+ name: "Container log for container #{container_uuid}",
+ properties: {
+ 'type' => 'log',
+ 'container_request' => self.uuid,
+ 'container_uuid' => container_uuid,
+ },
+ portable_data_hash: log_col.portable_data_hash,
+ manifest_text: log_col.manifest_text,
+ storage_classes_desired: self.output_storage_classes
+ )
+ completed_coll.save_with_unique_name!
+ end
+ end
+ end