Commit c414636
feat(availability): configurable terminationGracePeriodSeconds + preStop for server drain (#106)
feat: configurable server termination grace + preStop drain hook
The Paperclip server pod hardcoded terminationGracePeriodSeconds=30 with no
preStop hook, so a deploy/rollout SIGKILLed in-flight agent runs 30s after
SIGTERM -- far shorter than a typical multi-minute run.
- api: add AvailabilitySpec.TerminationGracePeriodSeconds and a ServerDrain
block (Enabled default true, TimeoutSeconds) to the Instance CRD.
- podtemplate: source the server pod grace from the spec, defaulting HIGH
(1800s, matching the 30-min PAPERCLIP_HEARTBEAT_REAP_STALE_MS run window)
so a rollout never kills an active run. The grace is a ceiling, not a fixed
wait -- an idle pod whose server exits promptly still terminates fast.
- statefulset: add a gated preStop hook (sleep, default 15s, clamped to
grace-1) on the server container that deregisters the terminating pod from
the Service before SIGTERM, closing the endpoint-removal race. Shared by the
Deployment workload path via BuildServerPodTemplate.
- tests: default/configured grace, default/disabled/custom/zero/clamped
preStop, and the Deployment path.
Scope note: the preStop delivers the traffic-cutover half. Making in-flight
runs FINISH also requires the server image to soft-drain on SIGTERM; the
current fork handler hard-interrupts and requeues runs on SIGTERM, so the
higher grace only takes full effect once that soft-drain lands. Regenerated
CRDs/deepcopy/docs and synced the Helm chart CRD templates.
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>1 parent d459426 commit c414636
9 files changed
Lines changed: 428 additions & 1 deletion
File tree
- api/v1alpha1
- charts/paperclip-operator/templates/crds
- config/crd/bases
- docs
- internal/resources
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1247 | 1247 | | |
1248 | 1248 | | |
1249 | 1249 | | |
| 1250 | + | |
| 1251 | + | |
| 1252 | + | |
| 1253 | + | |
| 1254 | + | |
| 1255 | + | |
| 1256 | + | |
| 1257 | + | |
| 1258 | + | |
| 1259 | + | |
| 1260 | + | |
| 1261 | + | |
| 1262 | + | |
| 1263 | + | |
| 1264 | + | |
| 1265 | + | |
| 1266 | + | |
| 1267 | + | |
| 1268 | + | |
| 1269 | + | |
| 1270 | + | |
| 1271 | + | |
| 1272 | + | |
| 1273 | + | |
| 1274 | + | |
| 1275 | + | |
| 1276 | + | |
| 1277 | + | |
| 1278 | + | |
| 1279 | + | |
| 1280 | + | |
| 1281 | + | |
| 1282 | + | |
| 1283 | + | |
| 1284 | + | |
| 1285 | + | |
| 1286 | + | |
| 1287 | + | |
| 1288 | + | |
| 1289 | + | |
| 1290 | + | |
| 1291 | + | |
| 1292 | + | |
| 1293 | + | |
| 1294 | + | |
| 1295 | + | |
1250 | 1296 | | |
1251 | 1297 | | |
1252 | 1298 | | |
| |||
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 39 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1661 | 1661 | | |
1662 | 1662 | | |
1663 | 1663 | | |
| 1664 | + | |
| 1665 | + | |
| 1666 | + | |
| 1667 | + | |
| 1668 | + | |
| 1669 | + | |
| 1670 | + | |
| 1671 | + | |
| 1672 | + | |
| 1673 | + | |
| 1674 | + | |
| 1675 | + | |
| 1676 | + | |
| 1677 | + | |
| 1678 | + | |
| 1679 | + | |
| 1680 | + | |
| 1681 | + | |
| 1682 | + | |
| 1683 | + | |
| 1684 | + | |
| 1685 | + | |
| 1686 | + | |
| 1687 | + | |
| 1688 | + | |
| 1689 | + | |
| 1690 | + | |
| 1691 | + | |
| 1692 | + | |
| 1693 | + | |
| 1694 | + | |
| 1695 | + | |
| 1696 | + | |
| 1697 | + | |
| 1698 | + | |
| 1699 | + | |
| 1700 | + | |
| 1701 | + | |
| 1702 | + | |
1664 | 1703 | | |
1665 | 1704 | | |
1666 | 1705 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1655 | 1655 | | |
1656 | 1656 | | |
1657 | 1657 | | |
| 1658 | + | |
| 1659 | + | |
| 1660 | + | |
| 1661 | + | |
| 1662 | + | |
| 1663 | + | |
| 1664 | + | |
| 1665 | + | |
| 1666 | + | |
| 1667 | + | |
| 1668 | + | |
| 1669 | + | |
| 1670 | + | |
| 1671 | + | |
| 1672 | + | |
| 1673 | + | |
| 1674 | + | |
| 1675 | + | |
| 1676 | + | |
| 1677 | + | |
| 1678 | + | |
| 1679 | + | |
| 1680 | + | |
| 1681 | + | |
| 1682 | + | |
| 1683 | + | |
| 1684 | + | |
| 1685 | + | |
| 1686 | + | |
| 1687 | + | |
| 1688 | + | |
| 1689 | + | |
| 1690 | + | |
| 1691 | + | |
| 1692 | + | |
| 1693 | + | |
| 1694 | + | |
| 1695 | + | |
| 1696 | + | |
1658 | 1697 | | |
1659 | 1698 | | |
1660 | 1699 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
216 | 216 | | |
217 | 217 | | |
218 | 218 | | |
| 219 | + | |
| 220 | + | |
219 | 221 | | |
220 | 222 | | |
221 | 223 | | |
| |||
655 | 657 | | |
656 | 658 | | |
657 | 659 | | |
| 660 | + | |
658 | 661 | | |
659 | 662 | | |
660 | 663 | | |
| |||
1152 | 1155 | | |
1153 | 1156 | | |
1154 | 1157 | | |
| 1158 | + | |
| 1159 | + | |
| 1160 | + | |
| 1161 | + | |
| 1162 | + | |
| 1163 | + | |
| 1164 | + | |
| 1165 | + | |
| 1166 | + | |
| 1167 | + | |
| 1168 | + | |
| 1169 | + | |
| 1170 | + | |
| 1171 | + | |
| 1172 | + | |
| 1173 | + | |
| 1174 | + | |
| 1175 | + | |
| 1176 | + | |
| 1177 | + | |
| 1178 | + | |
| 1179 | + | |
| 1180 | + | |
| 1181 | + | |
1155 | 1182 | | |
1156 | 1183 | | |
1157 | 1184 | | |
| |||
0 commit comments