Skip to content

Commit 9a1fdaf

Browse files
authored
feat: ConditionalPutCommitHandler for concurrency on S3, faster commit (lancedb#3483)
* Concurrent writes are now safe on S3. Closes lancedb#2793 * Moves all object stores to use new `ConditionalPutCommitHandler`, reducing the number of IOPS to write a manifest from 3 (put, copy-if-not-exists, delete) to just 1. * Added optional `size` field to dynamodb, eliminating need for `HEAD` IOP when opening a table. This means we can open a table with only 1 object store IOP when using dynamodb manifest store. Closes lancedb#2995
1 parent 74f0aa6 commit 9a1fdaf

23 files changed

+1040
-183
lines changed

.github/workflows/python.yml

+3-16
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ env:
2727
RUSTFLAGS: "-C debuginfo=1"
2828
RUST_BACKTRACE: "1"
2929
CI: "true"
30+
# Color output for pytest is off by default.
31+
PYTEST_ADDOPTS: "--color=yes"
32+
FORCE_COLOR: "1"
3033

3134
jobs:
3235
lint:
@@ -203,22 +206,6 @@ jobs:
203206
run:
204207
shell: bash
205208
working-directory: python
206-
services:
207-
minio:
208-
image: lazybit/minio
209-
ports:
210-
- 9000:9000
211-
env:
212-
MINIO_ACCESS_KEY: ACCESSKEY
213-
MINIO_SECRET_KEY: SECRETKEY
214-
options: --name=minio --health-cmd "curl http://localhost:9000/minio/health/live"
215-
dynamodb-local:
216-
image: amazon/dynamodb-local
217-
ports:
218-
- 8000:8000
219-
env:
220-
AWS_ACCESS_KEY_ID: ACCESSKEY
221-
AWS_SECRET_ACCESS_KEY: SECRETKEY
222209
steps:
223210
- uses: actions/checkout@v4
224211
with:

.github/workflows/run_integtests/action.yml

+4
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ runs:
99
shell: bash
1010
run: |
1111
pip3 install $(ls target/wheels/pylance-*.whl)[tests,ray]
12+
- name: Start localstack
13+
shell: bash
14+
run: |
15+
docker compose -f docker-compose.yml up -d --wait
1216
- name: Run python tests
1317
shell: bash
1418
working-directory: python

.github/workflows/rust.yml

+4-6
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,8 @@ jobs:
8383
sudo apt update
8484
sudo apt install -y protobuf-compiler libssl-dev
8585
rustup update ${{ matrix.toolchain }} && rustup default ${{ matrix.toolchain }}
86-
- name: Start DynamoDB local for tests
87-
run: |
88-
docker run -d -e AWS_ACCESS_KEY_ID=DUMMYKEY -e AWS_SECRET_ACCESS_KEY=DUMMYKEY -p 8000:8000 amazon/dynamodb-local
86+
- name: Start DynamodDB and S3
87+
run: docker compose -f docker-compose.yml up -d --wait
8988
- name: Install cargo-llvm-cov
9089
uses: taiki-e/install-action@cargo-llvm-cov
9190
- name: Run tests
@@ -130,9 +129,8 @@ jobs:
130129
run: |
131130
ALL_FEATURES=`cargo metadata --format-version=1 --no-deps | jq -r '.packages[] | .features | keys | .[]' | grep -v protoc | sort | uniq | paste -s -d "," -`
132131
cargo test --locked --features ${ALL_FEATURES} --no-run
133-
- name: Start DynamoDB local for tests
134-
run: |
135-
docker run -d -e AWS_ACCESS_KEY_ID=DUMMYKEY -e AWS_SECRET_ACCESS_KEY=DUMMYKEY -p 8000:8000 amazon/dynamodb-local
132+
- name: Start DynamodDB and S3
133+
run: docker compose -f docker-compose.yml up -d --wait
136134
- name: Run tests
137135
run: |
138136
ALL_FEATURES=`cargo metadata --format-version=1 --no-deps | jq -r '.packages[] | .features | keys | .[]' | grep -v protoc | sort | uniq | paste -s -d "," -`

0 commit comments

Comments
 (0)