[autotest] Fix a reference bug

SchedulerError was moved from host_scheduler to scheduler_lib.

Also change suite scheduler driver to use contextlib.closing for threadpool
handling.

BUG=None
TEST=unittest, test suite scheduler run

Change-Id: I56016c4817a5a7fece7076a82bede462f74d5d59
Reviewed-on: https://chromium-review.googlesource.com/321380
Commit-Ready: Dan Shi <dshi@google.com>
Tested-by: Dan Shi <dshi@google.com>
Reviewed-by: Simran Basi <sbasi@chromium.org>
diff --git a/site_utils/suite_scheduler/driver.py b/site_utils/suite_scheduler/driver.py
index 832523a..8d18c28 100644
--- a/site_utils/suite_scheduler/driver.py
+++ b/site_utils/suite_scheduler/driver.py
@@ -2,6 +2,7 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+import contextlib
 import logging
 import time
 from multiprocessing import pool
@@ -166,8 +167,10 @@
         boards = self._enumerator.Enumerate()
         logging.info('%d boards currently in the lab: %r', len(boards), boards)
         thread_pool = pool.ThreadPool(POOL_SIZE)
-        for e in self._events.itervalues():
-            if e.ShouldHandle():
+        with contextlib.closing(thread_pool):
+            for e in self._events.itervalues():
+                if not e.ShouldHandle():
+                    continue
                 logging.info('Handling %s event for %d boards', e.keyword,
                              len(boards))
                 args = []
@@ -180,8 +183,6 @@
                              e.keyword, len(boards))
                 e.UpdateCriteria()
 
-        thread_pool.close()
-
 
     def ForceEventsOnceForBuild(self, keywords, build_name):
         """Force events with provided keywords to happen, with given build.