def update()

in app/agent/collector.scala [181:223]


  def update(label: Label): Unit = {
    sourceStatusAgent.alter { previousMap =>
      val key = (label.resourceType, label.origin)
      val previous = previousMap.get(key)
      val next = label match {
        case good if !good.isError => SourceStatus(good)
        case bad =>
          SourceStatus(previous.map(_.state).getOrElse(bad), Some(bad))
      }
      previousMap + (key -> next)
    } onComplete {
      case Success(newMap) =>
        if (!initialisedResources.getOrElse(label.resourceType, false)) {
          val timeSpent = prismRunTimeStopWatch.elapsed
          val uninitialisedSources =
            newMap.values.count(_.state.status != "success")
          val marker = Markers.appendEntries(
            Map(
              "totalSourcesToCrawl" -> newMap.size,
              "resource" -> label.resourceType.name,
              "sourcesYetToCrawl" -> uninitialisedSources,
              "duration" -> timeSpent,
              "durationType" -> "healthcheck",
              "percentageCrawled" -> math.floor(
                (newMap.size - uninitialisedSources) / newMap.size.toFloat
              )
            ).asJava
          )
          if (uninitialisedSources == 0) {
            initialisedResources += (label.resourceType -> true)
            log.info(
              s"Healthcheck passed successfully for ${label.resourceType.name} after ${timeSpent}ms"
            )(marker)
          } else {
            log.info(
              s"$uninitialisedSources out of ${newMap.size} still not healthy after ${timeSpent}ms"
            )(marker)
          }
        }
      case Failure(_) =>
        log.warn(s"failed to update resource ${label.resourceType.name}")
    }
  }