<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def warm_product_graph(self, target_roots):
 """Warm the scheduler's `ProductGraph` with `TransitiveHydratedTargets` products. This method raises only fatal errors, and does not consider failed roots in the execution graph: in the v1 codepath, failed roots are accounted for post-fork. :param TargetRoots target_roots: The targets root of the request. """

    logger.debug('warming target_roots for: %r', target_roots)
    subjects = [target_roots.specs]
    request = self.scheduler_session.execution_request([TransitiveHydratedTargets], subjects)
    self.scheduler_session.execute(request)