code: def buildFinished(self, build, wfb):
          
  
          # by the time we get here, the Build has already released the worker,
          # which will trigger a check for any now-possible build requests
          # (maybeStartBuilds)
  
          results = build.build_status.getResults()
  
          self.building.remove(build)
          if results == RETRY:
              d = self._resubmit_buildreqs(build)
              d.addErrback(log.err, 'while resubmitting a build request')
          else:
              complete_at_epoch = self.master.reactor.seconds()
              complete_at = epoch2datetime(complete_at_epoch)
              brids = [br.id for br in build.requests]
  
              d = self.master.data.updates.completeBuildRequests(
                  brids, results, complete_at=complete_at)
              # nothing in particular to do with this deferred, so just log it if
              # it fails..
              d.addErrback(log.err, 'while marking build requests as completed')
  
          if wfb.worker:
              wfb.worker.releaseLocks()
docs: This is called when the Build has finished (either success or
          failure). Any exceptions during the build are reported with
          results=FAILURE, not with an errback.