Operational Remediation Reports
Atomic Guard Remediation Report
Turn the number of waiters behind a held guard into an enter, backoff, or page remediation 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.
Atomic Guard Remediation Report
AtomicGuardRemediationReport.kt
Replay: real traced execution (multi-file project)
fun main() {
val waiters = 0
val guardLimit = 2
val acquired = 1
val action = if (waiters == 0) {
"enter"
} else if (waiters <= guardLimit) {
"backoff"
} else {
"page"
}
println("waiters=$waiters acquired=$acquired $action")
}
fun main() {
val waiters = 1
val guardLimit = 2
val acquired = 1
val action = if (waiters == 0) {
"enter"
} else if (waiters <= guardLimit) {
"backoff"
} else {
"page"
}
println("waiters=$waiters acquired=$acquired $action")
}
fun main() {
val waiters = 3
val guardLimit = 2
val acquired = 1
val action = if (waiters == 0) {
"enter"
} else if (waiters <= guardLimit) {
"backoff"
} else {
"page"
}
println("waiters=$waiters acquired=$acquired $action")
}
waiters ← 0, guardLimit ← 2, acquired ← 1, action ← enter
1fun main() {2 val waiters→ 0 = 0 //@waiters=1, 33 val guardLimit→ 2 = 24 val acquired→ 1 = 156 val action→ enter = if (waiters0 == 0) {7 "enter"8 } else if (waiters0 <= guardLimit2) {9 "backoff"10 } else {11 "page"12 }1314 println("waiters=$waiters0 acquired=$acquired1 $actionenter")15}outputwaiters=0 acquired=1 enter
waiters ← 1, guardLimit ← 2, acquired ← 1, action ← backoff
1fun main() {2 val waiters→ 1 = 13 val guardLimit→ 2 = 24 val acquired→ 1 = 156 val action→ backoff = if (waiters1 == 0) {7 "enter"8 } else if (waiters1 <= guardLimit2) {9 "backoff"10 } else {11 "page"12 }1314 println("waiters=$waiters1 acquired=$acquired1 $actionbackoff")15}outputwaiters=1 acquired=1 backoff
waiters ← 3, guardLimit ← 2, acquired ← 1, action ← page
1fun main() {2 val waiters→ 3 = 33 val guardLimit→ 2 = 24 val acquired→ 1 = 156 val action→ page = if (waiters3 == 0) {7 "enter"8 } else if (waiters3 <= guardLimit2) {9 "backoff"10 } else {11 "page"12 }1314 println("waiters=$waiters3 acquired=$acquired1 $actionpage")15}outputwaiters=3 acquired=1 page