Operational Remediation Reports
Lazy Value Remediation Report
Apply at most one idempotent write and turn the accepted and skipped counts into a commit, skip, or retry remediation action.
idempotent write
Only the first write is accepted and later writes are counted as skipped, so the remediation action is reproducible without a live lazy initializer.
Lazy Value Remediation Report
LazyValueRemediationReport.kt
Replay: real traced execution (multi-file project)
fun main() {
val writes = 1
var accepted = 0
var skipped = 0
for (i in 1..writes) {
if (accepted == 0) {
accepted++
} else {
skipped++
}
}
val action = if (accepted == 0) {
"retry"
} else if (skipped > 0) {
"skip"
} else {
"commit"
}
println("writes=$writes accepted=$accepted skipped=$skipped $action")
}
fun main() {
val writes = 0
var accepted = 0
var skipped = 0
for (i in 1..writes) {
if (accepted == 0) {
accepted++
} else {
skipped++
}
}
val action = if (accepted == 0) {
"retry"
} else if (skipped > 0) {
"skip"
} else {
"commit"
}
println("writes=$writes accepted=$accepted skipped=$skipped $action")
}
fun main() {
val writes = 2
var accepted = 0
var skipped = 0
for (i in 1..writes) {
if (accepted == 0) {
accepted++
} else {
skipped++
}
}
val action = if (accepted == 0) {
"retry"
} else if (skipped > 0) {
"skip"
} else {
"commit"
}
println("writes=$writes accepted=$accepted skipped=$skipped $action")
}
writes ← 1, accepted ← 0, skipped ← 0
1fun main() {2 val writes→ 1 = 1 //@writes=2, 03 var accepted→ 0 = 04 var skipped→ 0 = 0for (i in 1..writes)
6for (i1 in 1..writes1) {7 if (accepted == 0) {if (accepted == 0)
6for (i in 1..writes) {7 if (accepted0 == 0) {8 accepted0++9 } else {10 skipped++action ← commit
14 val action→ commit = if (accepted1 == 0) {15 "retry"16 } else if (skipped0 > 0) {17 "skip"18 } else {19 "commit"20 }2122 println("writes=$writes1 accepted=$accepted1 skipped=$skipped0 $actioncommit")23}outputwrites=1 accepted=1 skipped=0 commit
writes ← 0, accepted ← 0, skipped ← 0, action ← retry
1fun main() {2 val writes→ 0 = 03 var accepted→ 0 = 04 var skipped→ 0 = 056 for (i in 1..writes) {7 if (accepted == 0) {8 accepted++9 } else {10 skipped++11 }12 }1314 val action→ retry = if (accepted0 == 0) {15 "retry"16 } else if (skipped0 > 0) {17 "skip"18 } else {19 "commit"20 }2122 println("writes=$writes0 accepted=$accepted0 skipped=$skipped0 $actionretry")23}outputwrites=0 accepted=0 skipped=0 retry
writes ← 2, accepted ← 0, skipped ← 0
1fun main() {2 val writes→ 2 = 23 var accepted→ 0 = 04 var skipped→ 0 = 0for (i in 1..writes)
pass 1 of 26for (i1 in 1..writes2) {7 if (accepted == 0) {if (accepted == 0)
6for (i in 1..writes) {7 if (accepted0 == 0) {8 accepted0++9 } else {10 skipped++for (i in 1..writes)
pass 2 of 26for (i2 in 1..writes2) {7 if (accepted == 0) {else
8 accepted++9 } else {10 skipped0++11 }12}action ← skip
14 val action→ skip = if (accepted1 == 0) {15 "retry"16 } else if (skipped1 > 0) {17 "skip"18 } else {19 "commit"20 }2122 println("writes=$writes2 accepted=$accepted1 skipped=$skipped1 $actionskip")23}outputwrites=2 accepted=1 skipped=1 skip