Record concurrent store release test
This commit is contained in:
@@ -77,6 +77,7 @@ if ! $as_root "$admin_tool" user list | grep -Fx "$user" >/dev/null; then
|
||||
$as_root "$admin_tool" user add "$user" >/dev/null
|
||||
fi
|
||||
|
||||
$as_root /usr/bin/systemctl daemon-reload
|
||||
$as_root /usr/bin/systemctl start "$service"
|
||||
wait_services
|
||||
|
||||
|
||||
@@ -111,7 +111,7 @@ inputs and outputs is absent from the ZIP.
|
||||
| STQ-03 | Queue free-space calculation is correct on 32/64-bit and reserves space | [PASS](test-evidence/0.7-r1.md#stq-03) | | |
|
||||
| STQ-04 | Full-disk and unreadable-spool failures defer safely without mail loss | [PASS](test-evidence/0.7-r1.md#stq-04) | | |
|
||||
| STQ-05 | Retry, expiry, bounce, listing, hold/release, and deletion | [PASS](test-evidence/0.7-r1.md#stq-05) | | |
|
||||
| STQ-06 | Concurrent delivery/read/move/delete/restart preserves integrity | | | |
|
||||
| STQ-06 | Concurrent delivery/read/move/delete/restart preserves integrity | [PASS](test-evidence/0.7-r1.md#stq-06) | | |
|
||||
| STQ-07 | Backup/export and restore reproduce mail, metadata, contacts, calendars | | | |
|
||||
| STQ-08 | Invalid commands, oversized lines, and unauthorised access fail safely | | | |
|
||||
| STQ-09 | Per-user mail quota excludes contacts/calendars and atomically blocks concurrent growth | | | |
|
||||
|
||||
@@ -1579,3 +1579,44 @@ All temporary Queue entries were removed. The intentionally retained DSN is
|
||||
local release evidence; no external mail, SMTP relay, collector source, or
|
||||
LMTP endpoint was used. Bongo finished active/running as manager PID 1253396
|
||||
with systemd result `success`.
|
||||
|
||||
## STQ-06
|
||||
|
||||
Result: **PASS**
|
||||
|
||||
Commit `6ab16588` added an installed Store concurrency diagnostic and its
|
||||
systemd coordinator. The diagnostic creates deterministic messages in Queue
|
||||
999 and records the SHA-256 digest of every Queue-owned message. Separate
|
||||
threads then deliver through `QADDM`, read message bodies, move selected
|
||||
objects, and delete selected objects. The coordinator restarts the real Bongo
|
||||
service after the first eight deliveries while the Store threads remain
|
||||
active; the remaining 16 held Queue entries must survive and deliver after
|
||||
reconnection.
|
||||
|
||||
The complete rebuilt suite passed 86 of 86 tests in 11.41 seconds. The
|
||||
storetool test group also covers the fixture marker and the deterministic
|
||||
move/delete policy. The commit was pushed to `master`, installed as
|
||||
`mail-mta/bongo-9999::bongo` with GCC 15.3.0, and exercised twice on
|
||||
2026-07-23. The clean evidence run was:
|
||||
|
||||
```sh
|
||||
./contrib/testing/queue-store-concurrency-check.sh
|
||||
```
|
||||
|
||||
```text
|
||||
STQ-06 PASS delivered=24 reads=22 moves=10 deletes=5 transient-reconnects=445 restart=1
|
||||
```
|
||||
|
||||
The five messages numbered as deletion targets were absent. Each of the
|
||||
other 19 messages existed exactly once, in INBOX or `/mail/STQ06` according
|
||||
to the test policy, and matched its pre-delivery Queue digest. Ten messages
|
||||
were moved successfully. The reader observed 22 distinct messages, including
|
||||
short-lived objects before concurrent deletion, without a content mismatch.
|
||||
The reported transient reconnect attempts occurred only while the deliberate
|
||||
service restart made the Store unavailable; every worker recovered.
|
||||
|
||||
The diagnostic removed all 24 test messages and every held Queue entry.
|
||||
Post-test listings of Queue, `stq06` INBOX, and `/mail/STQ06` were empty.
|
||||
No external mail, SMTP relay, collector source, or LMTP endpoint was used.
|
||||
Bongo finished active/running as manager PID 1264348 with systemd result
|
||||
`success`.
|
||||
|
||||
Reference in New Issue
Block a user