Michael Semb Wever created CASSANDRA-21701:
----------------------------------------------
Summary: repair_validations reports a bytes_read figure that
trails the work done
Key: CASSANDRA-21701
URL: https://issues.apache.org/jira/browse/CASSANDRA-21701
Project: Apache Cassandra
Issue Type: Bug
Components: Observability/Logging
Reporter: Michael Semb Wever
{{CompactionIterator}} refreshes its {{bytesRead}} field once every
{{UNFILTERED_TO_UPDATE_PROGRESS}} unfiltereds:
{code:java}
if ((++compactedUnfiltered) % UNFILTERED_TO_UPDATE_PROGRESS == 0)
updateBytesRead();
{code}
and {{getBytesRead()}} returned that field. Two things follow. The field lags
behind the scanners by up to a hundred unfiltereds, and it is still short of
the total once the iteration is over, because the last refresh lands on the
last multiple of a hundred.
{{ValidationManager}} assigns the value to {{ValidationState.bytesRead}} once
per partition:
{code:java}
state.bytesRead = vi.getBytesRead();
{code}
and {{LocalRepairTables}} reports it as the {{bytes_read}} column of
{{system_views.repair_validations}}. An operator watching a repair therefore
sees a figure that trails the work done, and a validation of fewer than a
hundred unfiltereds reports zero throughout.
{{getBytesRead()}} now sums the scanners on every call. The field remains for
{{getCompactionInfo}}, which reports from a background thread, so the refresh
interval still keeps that path off the scanners. The validation path asks once
per partition rather than once per unfiltered, so the summation is not on a hot
loop.
Patch:
[mck/upstream/stale-bytes-read/5.0|https://github.com/thelastpickle/cassandra/tree/mck/upstream/stale-bytes-read/5.0]
Provenance:
[fa9e504c11|https://github.com/datastax/cassandra/commit/fa9e504c1178927d12d40b340048818714f969c7]
by [~blambov]. That commit reaches the same result, on a class that has since
diverged: it folds a second accessor, {{getTotalBytesScanned}}, into
{{bytesRead()}}, and that second accessor does not exist here. That commit
carries tests for classes that do not exist here; this patch adds one that fits
the upstream class.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]