Commit Graph

22 Commits

Author SHA1 Message Date
Trevor Clinkenbeard 4e4f25d21b Merge remote-tracking branch 'origin/main' into dev/tclinkenbeard/pr-13287-review-followup
# Conflicts:
#	fdbserver/logsystem/include/fdbserver/logsystem/LogSystem.h
2026-07-08 11:45:47 -07:00
Trevor Clinkenbeard 3877239a60
Merge pull request #13403 from tclinkenbeard-oai/dev/tclinkenbeard/fdb-production-observability-metrics
Add more production observability metrics
2026-07-07 16:39:00 -07:00
Trevor Clinkenbeard d62484a27f Merge remote-tracking branch 'origin/main' into dev/tclinkenbeard/pr-13287-review-followup
# Conflicts:
#	fdbclient/include/fdbclient/FDBTypes.h
#	fdbserver/core/include/fdbserver/core/TLogInterface.h
2026-07-07 12:56:34 -07:00
Trevor Clinkenbeard c15a670d40 Clean up existing clang-tidy warnings 2026-07-07 07:29:14 -07:00
Trevor Clinkenbeard d4f56a6b48 Remove dead commit batch trigger metric 2026-06-28 02:48:48 -07:00
Trevor Clinkenbeard 3bd2129e5e Add FDB production observability metrics 2026-06-28 02:03:44 -07:00
Trevor Clinkenbeard 966d24b1ac Merge remote-tracking branch 'origin/main' into dev/tclinkenbeard/native-fdb-cdc
# Conflicts:
#	fdbserver/core/include/fdbserver/core/WorkerInterface.actor.h
2026-06-16 10:20:16 -07:00
Trevor Clinkenbeard e8a9cc7666 Merge remote-tracking branch 'origin/main' into dev/tclinkenbeard/commit-proxy-transaction-histograms 2026-06-13 10:48:05 -07:00
Michael Stack a58565465d
commitproxy rangelock: skip per-mutation lock check when no locks are held (#13324)
* commitproxy: skip per-mutation lock check when no locks are held

Add anyExclusiveLockHeld_ flag on RangeLock, refreshed in
consumePendingRequest after each take/release, and an early return at
the top of rejectMutationsForReadLockOnRange that bypasses the
per-transaction x per-mutation loop when the flag is false. With the
knob enabled but no exclusive read locks active (the steady state
when no bulkload is running), the commit hot path now skips the entire
scan instead of constructing a KeyRange and walking the KeyRangeMap
for every mutation in every batch.

Add RangeLockFastPath / RangeLockSlowPath counters to ProxyMetrics so
operators can confirm the optimization is firing. Verified with
tests/fast/RangeLocking.toml and tests/fast/RangeLockCycle.toml; both
pass and both counters increment as expected.

* docs: document the no-locks-held fast path and ProxyMetrics counters

Extend documentation/sphinx/source/rangelock.rst with a "Steady-state cost
when no locks are held" subsection describing the anyExclusiveLockHeld_
flag introduced in this PR and the early return in
rejectMutationsForReadLockOnRange.

Also document the two new ProxyMetrics counters (RangeLockFastPath and
RangeLockSlowPath) so operators investigating commit-proxy performance
can find them without grepping the source. The counters are the
production observability hook for the silent-degradation case where the
flag fails to clear after a lock release.

* docs: explain how anyExclusiveLockHeld_ stays consistent across proxies

The previous doc commit described the fast-path flag and its counters
but skipped the correctness argument: the flag is per-proxy, never
directly synchronized, and convergence comes from the txnStateStore
mutation broadcast that already drives coreMap consistency.

A reviewer of the patch (or anyone debugging "are these proxies'
flags actually consistent?") will ask exactly this question. Spell
out the within-batch / across-batch / recovery cases plus the
asymmetric stuck-true vs stuck-false analysis (stuck-true is harmless
extra CPU and observable via RangeLockFastPath; stuck-false would
manifest as missing transaction_rejected_range_locked rejections,
which existing simulation tests already assert against).

* Formatting

* Potential fix for pull request finding

* docs: address Copilot review on rangelock.rst possessive escaping

Use the rST backslash-space escape after inline literals where a
possessive s follows, so Sphinx renders the possessives of "V" and
"consumePendingRequest" without a visible space before the apostrophe.

* docs: explain ENABLE_READ_LOCK_ON_RANGE knob in Knobs.h

Add a trailing comment block on the knob declaration explaining that
despite the name this is a write-exclusion lock (commit proxies reject
writes to a locked range, reads are unaffected). The name reflects
bulkloads perspective rather than describing what the lock blocks.
Mirrors the substantive trailing comments on neighbouring knobs like
MAX_READ_TRANSACTION_LIFE_VERSIONS so the pattern fits in.
2026-06-12 13:11:23 -07:00
Trevor Clinkenbeard a6b9286939 Add CommitProxy.TransactionSize histogram 2026-06-11 16:06:13 -07:00
Trevor Clinkenbeard 158333e123 Add native CDC commit proxy routing 2026-05-27 05:57:26 -07:00
Trevor Clinkenbeard ae322fbae6 Use LogSystemConsumer for commit proxy pops 2026-05-11 10:25:57 -07:00
Trevor Clinkenbeard 93ef0e335b Merge remote-tracking branch 'apple/main' into dev/tclinkenbeard/remove-ilogsystem 2026-04-17 17:56:51 +00:00
Trevor Clinkenbeard b20ac72d5f Move GetReadVersion* structs to GrvProxyInterface.h 2026-04-13 18:38:30 +00:00
Trevor Clinkenbeard 629f977c0f Fix fdbserver/core link test 2026-04-12 06:39:52 +00:00
Trevor Clinkenbeard 29bcabb8c3 Rename TagPartitionedLogSystem to simply LogSystem 2026-04-12 04:21:51 +00:00
Trevor Clinkenbeard 6d39afbb08 Remove ILogSystem interface 2026-04-12 04:08:21 +00:00
Trevor Clinkenbeard fe4469f0ca Merge remote-tracking branch 'apple/main' into dev/tclinkenbeard/move-proxy-commit-data 2026-04-03 02:38:42 +00:00
Trevor Clinkenbeard ff7eff733a Add comments 2026-03-28 19:47:29 +00:00
Trevor Clinkenbeard 24309870db Fix build issues 2026-03-28 19:39:23 +00:00
Trevor Clinkenbeard 9eabeda0e6 Create ApplyMetadataRangeLock interface 2026-03-28 19:23:40 +00:00
Trevor Clinkenbeard edf1d27834 Rename ProxyCommitData.actor.h 2026-03-28 19:10:10 +00:00