You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
`provider: "native"` provisions a short-lived MariaDB process for MySQL-compatible workloads on Docker-free hosts. The generic runtime-service layer owns its complete lifecycle. Recipes may select only `provider: "native"` and `engine: "mariadb"`; host, port, credentials, sockets, configuration files, and filesystem paths are not configurable.
4
+
5
+
## Isolation Contract
6
+
7
+
- The provider resolves and validates `mariadbd`, `mariadb-install-db`, and `mariadb` identities before allocation.
8
+
- Every run gets a mode-`0700``mkdtemp` root. The data directory, temporary directory, socket, PID file, and error log are children of that root.
9
+
- Initialization, daemon, and client argument arrays begin with `--no-defaults`. No shell or default socket is used.
10
+
- Administration uses only the private Unix socket. Workloads receive a generated least-privilege `runtime` account over loopback TCP through the existing ephemeral connector-secret channel.
11
+
- Cleanup signals only the retained direct `ChildProcess`; the PID file is never trusted or read. Linux captures the owned process start-time token and revalidates it before every signal to reject PID reuse. Root device/inode identity and a symlink-free tree are revalidated before recursive removal.
12
+
- Failures, aborts, timeouts, startup crashes, and partial initialization all enter the same graceful-shutdown, forced-shutdown, wait, and verified-removal state machine. Cleanup failure is terminal and retained in bounded lifecycle evidence.
13
+
- Evidence contains service ID, engine/provider version, lifecycle state, and memory measurements only. It never contains credentials or private absolute paths.
14
+
15
+
## Daemon Arguments
16
+
17
+
The provider starts `mariadbd` directly with these fixed controls plus provider-owned absolute paths and a freshly allocated loopback port:
18
+
19
+
```text
20
+
--no-defaults
21
+
--datadir=<private-root>/data
22
+
--socket=<private-root>/server.sock
23
+
--pid-file=<private-root>/server.pid
24
+
--log-error=<private-root>/server.log
25
+
--tmpdir=<private-root>/tmp
26
+
--bind-address=127.0.0.1
27
+
--port=<ephemeral>
28
+
--skip-name-resolve
29
+
--skip-log-bin
30
+
--skip-host-cache
31
+
--skip-slave-start
32
+
--skip-symbolic-links
33
+
--local-infile=OFF
34
+
--performance-schema=OFF
35
+
--skip-feedback
36
+
--innodb-buffer-pool-size=32M
37
+
--innodb-log-buffer-size=4M
38
+
--key-buffer-size=8M
39
+
--aria-pagecache-buffer-size=8M
40
+
--max-connections=10
41
+
--thread-cache-size=0
42
+
--table-open-cache=128
43
+
--table-definition-cache=128
44
+
--tmp-table-size=8M
45
+
--max-heap-table-size=8M
46
+
```
47
+
48
+
The configured service budget is 128 MiB. Linux runs record the owned daemon's post-readiness RSS in evidence; the MariaDB 10.11 integration gate requires the observed value to remain within that budget.
49
+
50
+
## Integration Contract
51
+
52
+
Homeboy Extensions issue #2412 may select this provider by emitting the generic runtime-service recipe declaration below. WP Codebox performs all provisioning and cleanup; callers do not supply or manage native process details.
Copy file name to clipboardExpand all lines: packages/cli/src/recipe-validation.ts
+7Lines changed: 7 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -805,6 +805,13 @@ function validateRecipeRuntimeServices(recipe: WorkspaceRecipe, addIssue: (code:
805
805
if(service.configuration[field]!==undefined)addIssue("unsupported-external-runtime-service-option",`${path}.configuration.${field}`,`External MySQL services do not support ${field}.`)
806
806
}
807
807
}
808
+
if(service.configuration?.provider==="native"){
809
+
if(service.kind!=="mysql")addIssue("unsupported-runtime-service-provider",`${path}.configuration.provider`,"The native provider supports only MySQL-compatible services.")
if(service.configuration[field]!==undefined)addIssue("unsupported-native-runtime-service-option",`${path}.configuration.${field}`,`Native MariaDB services do not accept ${field}.`)
0 commit comments