hunk.code_window:     active_envs = set()
       to_eval = defaultdict(list)
       outputs = []
       # For each environment
       for env_id, agent_obs in unfiltered_obs.items():
           new_episode = env_id not in active_episodes
  
hunk.labels: keep keep add keep keep keep keep
hunk.after_edit:     large_batch_threshold = max(1000, unroll_length * 10) if \
           unroll_length != float("inf") else 5000
  
hunk.file_path: rllib/evaluation/sampler.py
hunk.type: add
file: import Typography from "@material-ui/core/Typography";
  import React from "react";
  import { formatDuration } from "../../../../common/formatUtils";
  import {
    ClusterFeatureComponent,
    NodeFeatureComponent,
    WorkerFeatureComponent
  } from "./types";
  
  const getUptime = (bootTime: number) => Date.now() / 1000 - bootTime;
  
  export const ClusterUptime: ClusterFeatureComponent = ({ nodes }) => (
    <Typography color="textSecondary" component="span" variant="inherit">
      N/A
    </Typography>
  );
  
  export const NodeUptime: NodeFeatureComponent = ({ node }) => (
    <React.Fragment>{formatDuration(getUptime(node.boot_time))}</React.Fragment>
  );
  
  export const WorkerUptime: WorkerFeatureComponent = ({ worker }) => (
    <React.Fragment>
      {formatDuration(getUptime(worker.create_time))}
    </React.Fragment>
  );
  