Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
480bd76
add distributed compaction blog post (#1929)
agavra Jul 29, 2026
3428d06
[rfc-30 2/N]: add traits for WAL iteration and update replay paths (#…
rodesai Jul 29, 2026
f730735
disallow clone with projection when WAL must be copied (#1984)
rodesai Jul 30, 2026
b37f69b
Clarify TTL millisecond units (#1989)
criccomini Jul 30, 2026
38df98a
remove notifiers from WalBuffer (#1987)
rodesai Jul 30, 2026
8f673c0
Remove await_durable from WriteOptions (#1985)
criccomini Jul 30, 2026
287a36e
test(dst): vary scan options (#1952)
bowenli86 Jul 30, 2026
2caad87
Add cooperative yield points to SST build and compaction merge loops …
sorenbs Jul 30, 2026
1b527bd
Increase default GC interval to 10 minutes (#1993)
criccomini Jul 30, 2026
c7e9caf
Remove unnecessary SR clones in scan APIs (#1994)
nomiero Jul 30, 2026
8cab540
Disable descending scan checks in DST (#1996)
criccomini Jul 31, 2026
b25a5b8
Deflake object store cache metrics test (#1997)
criccomini Jul 31, 2026
1bc2008
Allow closing a DB without flushing the active memtable (#1948)
Aetherance Jul 31, 2026
03b18f6
site: add Prisma to adopter listings (#1999)
criccomini Jul 31, 2026
90117dc
Add `consume_budget` in hot loops to help Tokio (#1998)
criccomini Jul 31, 2026
e67d7d4
[rfc-30 3/N]: add trait and native implementation for wal gc (#2000)
rodesai Aug 3, 2026
d0c3d63
fix(compactor): prevent terminal compaction resurrection (#2002)
criccomini Aug 4, 2026
aa46b9b
Add cleanup_db admin fn and cli command for clone teardown (#2001)
bit2swaz Aug 4, 2026
0717cc1
Run nightly pprof on a Warp ARM runner (#2008)
criccomini Aug 4, 2026
889d405
[1972] Expose manifest version count as a metric (#1974)
1996fanrui Aug 5, 2026
0f946cb
[rfc-30 4/N]: move max wal file flush check to wal trait (#2007)
rodesai Aug 5, 2026
9e82d15
Actually skip the WAL at DbReader open when skip_wal_replay is set (h…
Ten0 Aug 5, 2026
a494d0a
make close flush mode more explicit by using explicit flush type (#2011)
rodesai Aug 5, 2026
d12891f
Replace nightly bencher work with benchmark.slatedb.io (#2009)
criccomini Aug 5, 2026
5b2a905
Run nightly microbenchmarks on Warp ARM (#2016)
criccomini Aug 9, 2026
bbb09be
Select previous release tag dynamically (#2017)
criccomini Aug 10, 2026
47040a3
[rfc-30 5/N]: add WalAdmin trait for administrative wal operations (#…
rodesai Aug 11, 2026
bc34de6
[2004] Do not invoke user metrics callbacks under the db.state write …
1996fanrui Aug 11, 2026
8aa2c10
Expose SstFile::index as an opaque view instead of copying data. (#2019)
FiV0 Aug 11, 2026
e9a14cd
[rfc-30 6/N]: wire custom WAL into builders (#2015)
rodesai Aug 12, 2026
4b45c2f
test(wal_replay): fix write_wal helper to respect max_entries (#2023)
codeAnqiang-ma Aug 13, 2026
f88be86
Enable unused_qualifications and drop redundant path prefixes (#2020)
1996fanrui Aug 13, 2026
8cc31a5
example: Add a rescaling example (#2028)
rockwotj Aug 15, 2026
e98a897
Add benchmark.slatedb.io blog post (#2026)
criccomini Aug 17, 2026
4d7d8b0
[rfc-30 7/N]: move all wal implementation types under the wal module …
rodesai Aug 17, 2026
9fa88d6
union: validate non-overlapping key ranges per segment (#2030)
rockwotj Aug 17, 2026
2a2fdd1
[rfc-30 8/N]: support live streaming from SlateDbWalIterator and use …
rodesai Aug 19, 2026
e016197
configure sst iterator read ahead using bytes (#2037)
rodesai Aug 22, 2026
163359d
perf(wal): read a whole WAL SST per request during replay (#2003) (#2…
bit2swaz Aug 24, 2026
84775a8
Remove SQLync from Adopters (#2045)
mdwaud Aug 24, 2026
dd5a227
Tolerate manifests GCed during admin.list_manifests (#2047)
Efrat19 Aug 25, 2026
a6f0522
add lixray as adopter (#2050)
samuelstroschein Aug 25, 2026
5d0da8d
Propose tracing instrumentation for read path (#2035)
cadonna Aug 25, 2026
31656fe
add tracing options to read path (#2046)
cadonna Aug 25, 2026
ae07acd
fix: preserve sequence tracker interval after deserialization (#2053)
criccomini Aug 26, 2026
c325738
manifest: write ManifestV2 universally (#2055) (#2056)
rkhachatryan Aug 27, 2026
ea75d12
move wal read/write paths to their own types under wal module (#2052)
rodesai Aug 29, 2026
4919857
docs: fix typo wihtout -> without (#2057)
vaibhav8a Aug 29, 2026
3fb9e8a
Bump version to 0.16.0
criccomini Aug 31, 2026
20e4165
Add request-scoped query storage metrics
xav-db Jul 16, 2026
5c2ad29
Add snapshot isolation to `DbReader`
matthewsanetra Jul 16, 2026
7660fb6
Harden reader snapshot WAL replay test
matthewsanetra Jul 16, 2026
8b7c263
Add multi-get functionality across database components
xav-db Jul 6, 2026
53ab758
ci: drop Windows test runner
matthewsanetra Jul 16, 2026
539f1e8
Add SlateDB cache usage snapshots
xav-db Jul 29, 2026
1ec9fc2
Update SlateDB dependency lockfile
xav-db Jul 29, 2026
fd0a6cb
Keep unbounded cache accounting synchronous
xav-db Jul 29, 2026
3d2e4af
Add typed database-missing reader error
xav-db Jul 29, 2026
36b3465
Update missing database binding tests
xav-db Jul 29, 2026
0fbf6c0
Finish v0.16 reader API adaptation
matthewsanetra Aug 7, 2026
c37a70e
Add conflict-compatible transaction merges
matthewsanetra Aug 14, 2026
822c97b
Restore HelixDB cache and reader compatibility
matthewsanetra Aug 14, 2026
b418694
Adapt fork changes to SlateDB v0.16
matthewsanetra Sep 1, 2026
2b8f979
Finish v0.16 CI and consumer compatibility
matthewsanetra Sep 1, 2026
6c88089
Merge current fork main after v0.16 port
matthewsanetra Sep 1, 2026
51ed0cb
Merge latest main into v0.16 port
matthewsanetra Sep 1, 2026
41ce040
fix reader options in generated bindings
matthewsanetra Sep 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
166 changes: 10 additions & 156 deletions .github/workflows/nightly.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ permissions:
jobs:
# Run and save nightly microbenchmark data so PRs have a fresh baseline to compare against
microbenchmarks:
runs-on: ubuntu-latest
runs-on: warp-ubuntu-latest-arm64-8x
steps:
- uses: actions/checkout@v4

Expand Down Expand Up @@ -54,159 +54,8 @@ jobs:
if: steps.update_microbenchmark_result.outcome == 'failure'
run: exit 1

benchmarks:
runs-on: warp-ubuntu-latest-x64-16x
timeout-minutes: 20
steps:
- uses: actions/checkout@v4

- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y traceroute
sudo snap install aws-cli --classic

- name: System information
env:
AWS_ACCESS_KEY_ID: ${{ secrets.TIGRIS_AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.TIGRIS_AWS_SECRET_ACCESS_KEY }}
AWS_BUCKET: ${{ secrets.TIGRIS_AWS_BUCKET_BENCHER }}
AWS_REGION: auto
AWS_ENDPOINT: https://t3.storage.dev
run: |
echo "=== CPU ==="
lscpu
echo -e "\n=== Memory ==="
free -h
echo -e "\n=== Disk Space ==="
df -h
echo -e "\n=== Workspace Directory ==="
du -sh ${{ github.workspace }}
echo -e "\n=== Network ==="
traceroute t3.storage.dev
echo -e "Generating 1 gig file"
dd if=/dev/urandom of=/tmp/1gig bs=1G count=1
echo -e "Uploading 1 gig file"
time aws s3 cp --endpoint-url $AWS_ENDPOINT /tmp/1gig s3://${{ secrets.TIGRIS_AWS_BUCKET_BENCHER }}/1gig
echo -e "Downloading 1 gig file"
time aws s3 cp --endpoint-url $AWS_ENDPOINT s3://${{ secrets.TIGRIS_AWS_BUCKET_BENCHER }}/1gig /tmp/1gig
echo -e "Deleting 1 gig file"
time aws s3 rm --endpoint-url $AWS_ENDPOINT s3://${{ secrets.TIGRIS_AWS_BUCKET_BENCHER }}/1gig

- name: Download previous mermaid plots
uses: actions/cache/restore@v4
with:
path: ./target/bencher/results/mermaid
key: ${{ runner.os }}-mermaid-plots-${{ github.run_id }}
restore-keys: |
${{ runner.os }}-mermaid-plots-

- name: Run benchmark
env:
CLOUD_PROVIDER: aws
AWS_ACCESS_KEY_ID: ${{ secrets.TIGRIS_AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.TIGRIS_AWS_SECRET_ACCESS_KEY }}
AWS_BUCKET: ${{ secrets.TIGRIS_AWS_BUCKET_BENCHER }}
AWS_REGION: auto
AWS_ENDPOINT: https://t3.storage.dev
SLATEDB_BENCH_CLEAN: true
RUST_LOG: info
run: |
aws s3 rm --endpoint-url $AWS_ENDPOINT s3://${{ secrets.TIGRIS_AWS_BUCKET_BENCHER }} --recursive
./slatedb-bencher/benchmark-db.sh

- name: Save mermaid plots cache
uses: actions/cache/save@v4
with:
path: ./target/bencher/results/mermaid
key: ${{ runner.os }}-mermaid-plots-${{ github.run_id }}

- name: Add mermaid diagrams to summary
run: |
echo "# SlateDB Benchmark Results" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY

# Add each mermaid diagram to the summary
for mermaid_file in target/bencher/results/mermaid/*.mermaid; do
if [ -f "$mermaid_file" ]; then
echo "" >> $GITHUB_STEP_SUMMARY
echo '```mermaid' >> $GITHUB_STEP_SUMMARY
cat "$mermaid_file" >> $GITHUB_STEP_SUMMARY
echo '```' >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
fi
done

echo "Mermaid diagrams added to GitHub Actions summary!"
echo "Total diagrams: $(ls -1 target/bencher/results/mermaid/*.mermaid 2>/dev/null | wc -l)"

transaction-benchmarks:
runs-on: warp-ubuntu-latest-x64-16x
# Must run after `benchmarks` because both jobs clear the same bucket prefix;
# running concurrently can delete each other's manifest/object files mid-run.
# This also reduces noise between the two tests since the bucket's resources
# (network, disk, etc) should be used by only one test at a time, giving more
# stable results.
needs: benchmarks
timeout-minutes: 30
steps:
- uses: actions/checkout@v4

- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y traceroute
sudo snap install aws-cli --classic

- name: Download previous transaction mermaid plots
uses: actions/cache/restore@v4
with:
path: ./target/bencher/transaction-results/mermaid
key: ${{ runner.os }}-txn-mermaid-plots-${{ github.run_id }}
restore-keys: |
${{ runner.os }}-txn-mermaid-plots-

- name: Run transaction benchmark
env:
CLOUD_PROVIDER: aws
AWS_ACCESS_KEY_ID: ${{ secrets.TIGRIS_AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.TIGRIS_AWS_SECRET_ACCESS_KEY }}
AWS_BUCKET: ${{ secrets.TIGRIS_AWS_BUCKET_BENCHER }}
AWS_REGION: auto
AWS_ENDPOINT: https://t3.storage.dev
SLATEDB_BENCH_CLEAN: true
RUST_LOG: info
run: |
aws s3 rm --endpoint-url $AWS_ENDPOINT s3://${{ secrets.TIGRIS_AWS_BUCKET_BENCHER }} --recursive
./slatedb-bencher/benchmark-transaction.sh

- name: Save transaction mermaid plots cache
uses: actions/cache/save@v4
with:
path: ./target/bencher/transaction-results/mermaid
key: ${{ runner.os }}-txn-mermaid-plots-${{ github.run_id }}

- name: Add transaction mermaid diagrams to summary
run: |
echo "# SlateDB Transaction Benchmark Results" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY

# Add each mermaid diagram to the summary
for mermaid_file in target/bencher/transaction-results/mermaid/*.mermaid; do
if [ -f "$mermaid_file" ]; then
echo "" >> $GITHUB_STEP_SUMMARY
echo '```mermaid' >> $GITHUB_STEP_SUMMARY
cat "$mermaid_file" >> $GITHUB_STEP_SUMMARY
echo '```' >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
fi
done

echo "Transaction mermaid diagrams added to GitHub Actions summary!"
echo "Total diagrams: $(ls -1 target/bencher/transaction-results/mermaid/*.mermaid 2>/dev/null | wc -l)"

microbenchmark-pprofs:
runs-on: ubuntu-latest
runs-on: warp-ubuntu-latest-arm64-8x
steps:
- uses: actions/checkout@v4

Expand Down Expand Up @@ -234,10 +83,15 @@ jobs:
# install instructions from https://github.com/polarsignals/pprofme/tree/main
- name: Install pprofme
run: |
curl -LO https://github.com/polarsignals/pprofme/releases/latest/download/pprofme_$(uname)_$(uname -m)
PPROFME_ARCH=$(uname -m)
if [ "$PPROFME_ARCH" = "aarch64" ]; then
PPROFME_ARCH=arm64
fi
PPROFME_BINARY="pprofme_$(uname)_${PPROFME_ARCH}"
curl -fLO "https://github.com/polarsignals/pprofme/releases/latest/download/${PPROFME_BINARY}"
curl -sL https://github.com/polarsignals/pprofme/releases/latest/download/pprofme_checksums.txt | shasum --ignore-missing -a 256 --check
chmod a+x pprofme_$(uname)_$(uname -m)
sudo mv pprofme_$(uname)_$(uname -m) /usr/local/bin/pprofme
chmod a+x "${PPROFME_BINARY}"
sudo mv "${PPROFME_BINARY}" /usr/local/bin/pprofme

- name: Upload pprofs and add links to summary
run: |
Expand Down
13 changes: 13 additions & 0 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,18 @@ jobs:
with:
ssh-key: ${{ secrets.RELEASE_SSH_KEY }}
ref: ${{ github.ref }}
fetch-depth: 0

# Select the most recent stable release tag reachable from the release branch.
- name: Find previous release tag
id: previous_release
run: |
previous_tag="$(git describe \
--tags \
--abbrev=0 \
--match 'v[0-9]*.[0-9]*.[0-9]*' \
--exclude '*-*')"
echo "tag=${previous_tag}" >> "${GITHUB_OUTPUT}"

# Set up Rust stable for installing cargo-edit
- name: Setup Rust stable
Expand Down Expand Up @@ -67,6 +79,7 @@ jobs:
tag: v${{ github.event.inputs.version }}
name: v${{ github.event.inputs.version }}
generateReleaseNotes: true
generateReleaseNotesPreviousTag: ${{ steps.previous_release.outputs.tag }}
token: ${{ secrets.GITHUB_TOKEN }}

# Publish crate chain to crates.io in dependency order
Expand Down
Loading
Loading