Commit Graph

1930 Commits

Author SHA1 Message Date
dylan tirandaz 262996e884
Remove duplicate trace file open error reporting (#13353) 2026-07-28 19:46:00 -04:00
Trevor Clinkenbeard 217a07d6e8 Restore standalone unit-test coverage 2026-07-21 13:16:18 -07:00
Trevor Clinkenbeard 699a434f06 Keep the simulated external-client test out of normal mode 2026-07-21 12:34:41 -07:00
Trevor Clinkenbeard ad4e144094 Keep standalone RPC exclusions narrowly scoped 2026-07-21 12:19:51 -07:00
Trevor Clinkenbeard 5866929425 Preserve simulation-capable library test coverage 2026-07-21 10:55:34 -07:00
Trevor Clinkenbeard 2c948a73bd Merge branch 'dev/tclinkenbeard/fix-library-unit-runners-20260714' into dev/tclinkenbeard/library-unit-runners-20260721 2026-07-21 10:44:07 -07:00
Trevor Clinkenbeard 200931f7e3 Merge origin/main into native CDC C bindings 2026-07-20 06:47:16 -07:00
Trevor Clinkenbeard 462bc75f34 Merge remote-tracking branch 'origin/main' into dev/tclinkenbeard/fix-library-unit-runners-20260714 2026-07-16 22:39:34 -07:00
Trevor Clinkenbeard 89a31111e3 Merge remote-tracking branch 'origin/main' into dev/tclinkenbeard/clang-tidy-correctness-batch-20260715
# Conflicts:
#	fdbclient/ReadYourWrites.cpp
2026-07-16 17:37:49 -07:00
Trevor Clinkenbeard b32cebc19c
Merge pull request #13693 from tclinkenbeard-oai/dev/tclinkenbeard/add-split-point-limit-support
Add split point limit support
2026-07-16 14:12:29 -07:00
Trevor Clinkenbeard 2425b846d7 Merge remote-tracking branch 'refs/remotes/origin/main' into dev/tclinkenbeard/native-cdc-c-bindings 2026-07-16 11:30:39 -07:00
nicmorales9 3011a29f85
Merge pull request #13410 from nicmorales9/special-key-error
Note that special keys errors must be accessed in the same transaction
2026-07-16 13:40:01 +01:00
Trevor Clinkenbeard d523d509a7 Enable additional clang-tidy correctness checks 2026-07-15 22:00:36 -07:00
Trevor Clinkenbeard 9aff824fe5 Merge remote-tracking branch 'origin/main' into dev/tclinkenbeard/native-cdc-c-bindings 2026-07-15 19:39:07 -07:00
Nic Morales c895f24b9b Note that special keys errors must be accessed in the same transaction 2026-07-15 19:07:23 +01:00
Trevor Clinkenbeard 7b26191627 Fix standalone FoundationDB unit-test initialization and selection 2026-07-14 11:17:26 -07:00
Trevor Clinkenbeard 17c87353cd Simplify split point limit support 2026-07-13 17:18:29 -07:00
Trevor Clinkenbeard cd2c16ff38 Bound split-point work across shards and bindings 2026-07-13 15:29:03 -07:00
Trevor Clinkenbeard 8f7a072a3d Add split point limit support 2026-07-13 11:01:33 -07:00
Trevor Clinkenbeard 0d48cdbd81 Document CDC future result handling 2026-07-09 22:46:00 -07:00
Trevor Clinkenbeard abd9e92602 Document CDC binding semantics 2026-07-09 22:44:57 -07:00
Trevor Clinkenbeard 840eafd043 Use CDC names in C bindings 2026-07-09 20:06:59 -07:00
Trevor Clinkenbeard 02bb89b4b3 Merge remote-tracking branch 'origin/main' into dev/tclinkenbeard/storageserver-coroutines-20260622
# Conflicts:
#	fdbserver/storageserver/storageserver.cpp
2026-07-09 19:38:43 -07:00
Trevor Clinkenbeard b62566b803 Add C bindings for native CDC 2026-07-09 16:59:20 -07:00
Akanksha Mahajan f6a0557f3a
Rename Range Partitioned to consisent name (#13386) 2026-07-03 11:02:24 -07:00
Trevor Clinkenbeard 35c0abe865 Add clang-tidy bugprone checks 2026-06-30 11:30:24 -07:00
Trevor Clinkenbeard bc60f93528 Merge remote-tracking branch 'origin/main' into dev/tclinkenbeard/clang-tidy-braces-around-statements
# Conflicts:
#	documentation/sphinx/source/clang-tidy.rst
#	fdbserver/consistencyscan/ConsistencyScan.cpp
2026-06-23 17:42:22 -07:00
Trevor Clinkenbeard 87db838497 Merge remote-tracking branch 'origin/main' into dev/tclinkenbeard/clang-tidy-redundant-branch-condition
# Conflicts:
#	.clang-tidy
#	documentation/sphinx/source/clang-tidy.rst
2026-06-23 07:59:24 -07:00
Trevor Clinkenbeard fe42e6fd79 Enforce clang-tidy braces around long statements 2026-06-22 23:01:11 -07:00
Trevor Clinkenbeard 5b8b874082 Convert storage server actors to coroutines 2026-06-22 16:54:16 -07:00
Trevor Clinkenbeard 3f57e2f8c0 Enable bugprone-stringview-nullptr clang-tidy check 2026-06-22 14:30:03 -07:00
Trevor Clinkenbeard 9e59aaa360 Enable bugprone-dangling-handle clang-tidy check 2026-06-22 14:29:39 -07:00
Trevor Clinkenbeard 21a24dc024 Enforce bugprone-redundant-branch-condition clang-tidy rule 2026-06-22 13:34:20 -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
neethuhaneesha 4d2a5dbbff
Recruiting range backup workers in the recovery (#13286) 2026-06-11 19:33:45 -07:00
Michael Stack 1c0bdc4bf1
Allow bulkload restore into a non-empty destination database (#13340)
submitParallelRestore enforced an empty-destination precheck for all
restore modes by reading the first row of each target range. This is
correct for rangefile restore but wrong for bulkload: bulkload owns
the target range via an exclusive range lock and the storage server
clears each shard before SST ingestion, so a non-empty destination is
expected. Gate the precheck on useRangeFileRestore so bulkload skips
it.

Without this fix, "fdbrestore start --mode bulkload" against a cluster
with existing data fails with restore_destination_not_empty (2370).
The previous workaround was a manual clearrange before invoking
restore, which at large scale (>=4TB) overwhelms storage servers with
tombstones and stalls the cluster for hours.

Also document the per-shard clear-then-ingest sequence in bulkload.rst
and clarify in bulkload-user.rst that the clearrange in the quickstart
example is illustrative, not required.

Validated end-to-end at 100M scale (2026-06-04): bulkload from S3,
backup, rangefile baseline restore into validation prefix, bulkload
main restore into normal keyspace, marker-key data verification all
passed.
2026-06-11 10:54:34 -07:00
Michael Stack fc6560c29b
fdbcli: add rangelock command for range lock management (#13323)
* fdbcli: add rangelock command for range lock management

Wraps the existing range-lock management API (registerRangeLockOwner,
takeExclusiveReadLockOnRange, etc.) so SREs can inspect and release
locks left behind by failed bulkload jobs without writing a custom
client. Subcommands: register, unregister, owners, take, release,
release-all, list. The take subcommand prints a notice that locks
only take effect when knob_enable_read_lock_on_range is set on commit
proxies, since the client cannot probe server knobs.

* docs: document fdbcli rangelock command surface

Add a "Using fdbcli" subsection to documentation/sphinx/source/rangelock.rst
describing the new fdbcli command set introduced in this PR. Lists the seven
subcommands (register/unregister/owners/take/release/release-all/list),
flags the knob_enable_read_lock_on_range advisory that `rangelock take`
prints, and notes that the existing bulkload-specific commands remain in
place as a constrained subset.

Without this update, the doc continues to point readers at the C++
ManagementAPI as the only way to drive range locking, even though fdbcli
is now a faster path for operational use.

* docs: address PR review on bulkload subcommand prefixes

The bulkload-specific commands listed in the new "Using fdbcli"
subsection were written as `bulkload addlockowner / clearlock /
printlockowner`, which reads as if only the first carries the
`bulkload` prefix. In fdbcli all three are subcommands of `bulkload`
(see fdbcli/BulkLoadCommand.cpp lines 43, 45, 46), so the correct
user-visible form is `bulkload clearlock` and `bulkload printlockowner`
rather than the bare names.

Spell out the prefix on each command for clarity.

* fdbcli: address PR review on rangelock command

- Wrap every server-side rangelock call in try/catch and only print the
  success message after the call succeeds. reportRangeLockError() maps
  range_lock_reject / range_unlock_reject / range_lock_failed to
  user-facing messages instead of letting raw FDB errors escape.
- Validate range bounds via normalKeys.contains(KeyRangeRef(begin, end))
  in a new parseNormalKeyRange() helper, replacing the inline bound
  arithmetic on take/release/list.
- Add empty-ownerId check on unregister/take/release/release-all,
  matching the existing check on register.
- Clarify in RANGELOCK_LIST_USAGE that BEGIN_KEY and END_KEY must be
  supplied together (or both omitted).
2026-06-10 16:20:23 -07:00
Trevor Clinkenbeard 94b95bf95a
Merge pull request #13332 from tclinkenbeard-oai/dev/tclinkenbeard/pr-13314-review-comments
Address review comments on PR to support separate tlog spilling directory
2026-06-09 18:29:11 -07:00
Trevor Clinkenbeard 7e5233d699 Address tlog spill review comments 2026-06-08 13:09:19 -07:00
Trevor Clinkenbeard 252e4fb4d5
Merge pull request #13314 from tclinkenbeard-oai/dev/tclinkenbeard/tlog-spill-datadir
Support using separate data directory for tlog spilling
2026-06-05 12:51:27 -07:00
Trevor Clinkenbeard 51af36ef96 Document simulation unit test targets 2026-06-02 19:46:57 -07:00
Trevor Clinkenbeard cf29fba33a Support spilling to separate directory on tlogs 2026-06-02 14:27:56 -07:00
Trevor Clinkenbeard 29c97cd0cd
Merge pull request #13276 from tclinkenbeard-oai/dev/tclinkenbeard/clang-tidy-high-value-checks
Enforce more `clang-tidy` checks
2026-05-26 14:08:15 -07:00
neethuhaneesha 6690043ce0
Add rangeBackupWorkerTags count to log system data structures. Gated this new field under 8.0 protocol version. (#13225) 2026-05-25 09:20:25 -07:00
Trevor Clinkenbeard db6fd2d2c5 Update documentation 2026-05-24 18:52:06 -07:00
Trevor Clinkenbeard 091aa15a2f Address clang-tidy warnings 2026-05-24 18:14:26 -07:00
Trevor Clinkenbeard 1bc151d47f Add more clang-tidy checks 2026-05-24 15:15:47 -07:00
Shaurya Singh ff9a3b7e71
Update TLS docs to reference OpenSSL instead of LibreSSL (#13233)
FoundationDB switched its TLS implementation from LibreSSL to OpenSSL
in 6.2.0 (PR #2646), but documentation/sphinx/source/tls.rst still
described the implementation as LibreSSL-based in four places — the
intro paragraph, the section title, the section body, and the
"Formats" paragraph. The README and CMake setup have referenced
OpenSSL for years; this brings the user-facing TLS guide in line.

The single remaining 'LibreSSL' mention in the 6.2.0 release notes is
intentionally preserved as historical context.

Refs #3022
2026-05-18 13:21:45 -07:00
Johannes Scheuermann 918b68ecfc
Initial documentation for fdbdecode (#13201)
* Initial documentation for fdbdecode
2026-05-13 07:09:25 +02:00
Trevor Clinkenbeard 7301d4a0cd Remove proxy-side quota throttling compatibility path 2026-05-09 20:16:48 -07:00