| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(parquet_table), | intent(in) | :: | table |
the table whose counters to force. |
||
| logical, | intent(in), | optional | :: | appending |
.true.: pretend an append is in flight. |
|
| logical, | intent(in), | optional | :: | reading |
.true.: pretend a read is in flight. |
TEST-ONLY -- forces this table's "an append is in flight"/"a read is in flight" counters, so the two concurrency aborts can be provoked from ONE thread, deterministically.
This is a debug hook, not API. It exists because the guards it drives
(table_check_no_append, and %append's own reader check) can otherwise only be
triggered by two threads overlapping on demand, and a timing-dependent test is worse than
no test -- it fails on a busy machine and gets disabled. Unlike the C++ parquet_debug_*
hooks, which a test reaches through its own local bind(C) interface, a Fortran-side hook
has no such escape hatch: these counters live on parquet_table_cache, whose components
are private to this module, so forcing them requires a public procedure here. That cost
was accepted deliberately (feature_risks.md Risk-6); it is excluded from README.md's API
overview and no library code calls it.
Both arguments are optional and independent: appending=.true. makes every READ on this
table abort, reading=.true. makes every %append abort. Pass .false. to clear.