Turn the number of waiters behind a held guard into an enter, backoff, or page remediation action.

Atomic Guard Remediation Report

AtomicGuardRemediationReport.scala
object Main {
  def main(args: Array[String]): Unit = {
    val waiters = 
    val guardLimit = 2
    val acquired = 1

    var action = "enter"
    if (waiters >= 1 && waiters <= guardLimit) {
      action = "backoff"
    }
    if (waiters > guardLimit) {
      action = "page"
    }

    println("waiters=" + waiters + " acquired=" + acquired + " " + action)
  }
}
object Main {
  def main(args: Array[String]): Unit = {
    val waiters = 
    val guardLimit = 2
    val acquired = 1

    var action = "enter"
    if (waiters >= 1 && waiters <= guardLimit) {
      action = "backoff"
    }
    if (waiters > guardLimit) {
      action = "page"
    }

    println("waiters=" + waiters + " acquired=" + acquired + " " + action)
  }
}
object Main {
  def main(args: Array[String]): Unit = {
    val waiters = 
    val guardLimit = 2
    val acquired = 1

    var action = "enter"
    if (waiters >= 1 && waiters <= guardLimit) {
      action = "backoff"
    }
    if (waiters > guardLimit) {
      action = "page"
    }

    println("waiters=" + waiters + " acquired=" + acquired + " " + action)
  }
}
guard contention The waiter count behind a held guard is kept as a scalar, so the remediation action stays deterministic and never depends on atomic identity or scheduler timing.