Skip to content
Merged

Vacuum #2361

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
1d02d7a
changes to test_utils for vacuum support
fabianmurariu Oct 23, 2025
432acb5
some apis for vacuum
fabianmurariu Oct 25, 2025
9aa6046
make edge deletion loading sequential
fabianmurariu Oct 27, 2025
c13f506
add vecuum error
fabianmurariu Oct 27, 2025
e9d5dfe
Merge branch 'docbrownv4_merge' of github.com:Pometry/Raphtory into v…
fabubaker Oct 28, 2025
5ab0549
create empty segments for new layers so they aren't lost on write
ljeub-pometry Nov 3, 2025
40eb155
rename ParquetProp to SerdeProp and move to raphtory-api
fabianmurariu Nov 4, 2025
8ec18f4
rename _node_ methods as they are also used for edges
ljeub-pometry Nov 5, 2025
bcae349
mark edge segment dirty without triggering a write for metadata-only …
ljeub-pometry Nov 5, 2025
aaff34a
ensure we make an empty segment when there is metadata that needs to …
ljeub-pometry Nov 5, 2025
35b1d49
update rust-version
ljeub-pometry Nov 5, 2025
8259baf
support for Prop::Map
fabianmurariu Nov 5, 2025
a183369
support for Prop::Map refactor
fabianmurariu Nov 5, 2025
3a208c0
initialise layers in materialize_at as doing it in resolve deadlocks …
ljeub-pometry Nov 6, 2025
02327f9
much more useful location in panic message for graph/search assert fu…
ljeub-pometry Nov 7, 2025
183c67d
add dirty flag support for nodes
ljeub-pometry Nov 7, 2025
e359088
start triaging tests that are known to fail for now
ljeub-pometry Nov 7, 2025
5d9619b
don't overwrite an existing file
ljeub-pometry Nov 7, 2025
7b10b98
is_decodable needs to check for zip
ljeub-pometry Nov 7, 2025
247283c
various changes for ArrowRow and PropRef
fabianmurariu Nov 7, 2025
c93af86
make search feature not default for graphql/python
ljeub-pometry Nov 10, 2025
0f8f038
storage feature no longer exists
ljeub-pometry Nov 10, 2025
9786a20
proto feature shouldn't be part of io
ljeub-pometry Nov 10, 2025
f98b77c
make the proto feature actually protbuf specific
ljeub-pometry Nov 10, 2025
d6fc774
disk storage is only possibly enabled when the graph has a path
ljeub-pometry Nov 10, 2025
c4e6f43
ignore broken tests and mark with issues
ljeub-pometry Nov 10, 2025
ab73b77
minor tweaks to the features
ljeub-pometry Nov 10, 2025
fb6627c
Merge vaccum_fab into vacuum
ljeub-pometry Nov 10, 2025
bf98721
fmt
ljeub-pometry Nov 10, 2025
f03920a
don't remove empty maps
ljeub-pometry Nov 10, 2025
974a5ac
shouldn't depend on proto
ljeub-pometry Nov 10, 2025
e60cbdf
add one level of nesting so we can have nulls in the map properties
ljeub-pometry Nov 11, 2025
f59dfe5
simplify and generalise struct_array_from_props
ljeub-pometry Nov 11, 2025
7466de7
add missing validity check for struct_prop_ref
ljeub-pometry Nov 11, 2025
c5ff640
major change to the Prop enum to support both List types
fabianmurariu Nov 10, 2025
5cdf625
progress with complex properties, proptest still failing
fabianmurariu Nov 12, 2025
934178d
more fixes for complex properties
fabianmurariu Nov 12, 2025
1c4f0cc
disable empty lists for now for proptests
fabianmurariu Nov 13, 2025
8f53eb7
enable generating empty list and map
ljeub-pometry Nov 13, 2025
cb2ec5e
fix test compile issues
ljeub-pometry Nov 13, 2025
0dc4609
install cargo hack and latest nextest
ljeub-pometry Nov 14, 2025
ec09798
add support for chunk size handling
ljeub-pometry Nov 14, 2025
d9ac489
remove the arrow feature
ljeub-pometry Nov 14, 2025
659c3e7
make sure all features compile
ljeub-pometry Nov 14, 2025
3f00651
get python tests running again
ljeub-pometry Nov 14, 2025
80765b1
add location tracing for io errors
ljeub-pometry Nov 17, 2025
69fee1b
fix pattern match for location
ljeub-pometry Nov 17, 2025
e6fe6ce
ignore and tag the broken tests
ljeub-pometry Nov 18, 2025
9ac47d7
fmt
ljeub-pometry Nov 18, 2025
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
12 changes: 0 additions & 12 deletions .github/workflows/test_during_pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,25 +19,13 @@ jobs:
uses: ./.github/workflows/test_rust_workflow.yml
secrets: inherit
needs: rust-format-check
call-test-rust-storage-workflow-in-local-repo:
name: Run Rust storage tests
uses: ./.github/workflows/test_rust_disk_storage_workflow.yml
secrets: inherit
needs: rust-format-check
call-test-python-workflow-in-local-repo:
name: Run Python tests
uses: ./.github/workflows/test_python_workflow.yml
with:
test_python_lower: false
secrets: inherit
needs: rust-format-check
call-test-python-disk-storage-workflow-in-local-repo:
name: Run Python storage tests
uses: ./.github/workflows/test_python_disk_storage_workflow.yml
with:
test_python_lower: false
secrets: inherit
needs: rust-format-check
call-benchmark-workflow-in-local-repo:
name: Run benchmarks
uses: ./.github/workflows/benchmark.yml
Expand Down
67 changes: 0 additions & 67 deletions .github/workflows/test_python_disk_storage_workflow.yml

This file was deleted.

82 changes: 0 additions & 82 deletions .github/workflows/test_rust_disk_storage_workflow.yml

This file was deleted.

13 changes: 9 additions & 4 deletions .github/workflows/test_rust_workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,9 @@ jobs:
with:
cache-all-crates: true
- name: Install nextest
uses: taiki-e/install-action@v2
with:
tool: nextest@0.9.99
uses: taiki-e/install-action@nextest
- name: Install cargo-hack
uses: taiki-e/install-action@cargo-hack
- uses: actions/setup-python@v5
with:
python-version: '3.12'
Expand All @@ -60,7 +60,12 @@ jobs:
RUSTFLAGS: -Awarnings
TEMPDIR: ${{ runner.temp }}
run: |
cargo nextest run --all --no-default-features --cargo-profile build-fast
cargo nextest run --workspace --no-default-features --cargo-profile build-fast
- name: Check all features
env:
RUSTFLAGS: -Awarnings
run: |
cargo hack check --workspace --all-targets --each-feature --skip extension-module,default
doc-test:
if: ${{ !inputs.skip_tests }}
name: "Doc tests"
Expand Down
54 changes: 54 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ readme = "README.md"
homepage = "https://github.com/Raphtory/raphtory/"
keywords = ["graph", "temporal-graph", "temporal"]
authors = ["Pometry"]
rust-version = "1.86.0"
rust-version = "1.88.0"
edition = "2021"

# debug symbols are using a lot of resources
Expand Down Expand Up @@ -60,6 +60,7 @@ async-graphql = { version = "7.0.16", features = ["dynamic-schema"] }
bincode = "1.3.3"
async-graphql-poem = "7.0.16"
dynamic-graphql = "0.10.1"
derive_more = "2.0.1"
reqwest = { version = "0.12.8", default-features = false, features = [
"rustls-tls",
"multipart",
Expand Down Expand Up @@ -159,6 +160,7 @@ parquet = { version = "56.2.0" }
arrow-json = { version = "56.2.0" }
arrow-buffer = { version = "56.2.0" }
arrow-schema = { version = "56.2.0" }
serde_arrow = {version = "0.13.6", features = ["arrow-56"]}
arrow-array = { version = "56.2.0", features = ["chrono-tz"] }
arrow-ipc = { version = "56.2.0" }
arrow-csv = { version = "56.2.0" }
Expand Down
2 changes: 1 addition & 1 deletion db4-graph/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,7 @@ impl<EXT: PersistentStrategy<NS = NS<EXT>, ES = ES<EXT>>> TemporalGraph<EXT> {
}

pub fn disk_storage_enabled(&self) -> bool {
Extension::disk_storage_enabled()
self.graph_dir().is_some() && Extension::disk_storage_enabled()
}
pub fn extension(&self) -> &EXT {
self.storage().extension()
Expand Down
3 changes: 2 additions & 1 deletion db4-storage/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ edition = "2024"
[dependencies]
raphtory-api.workspace = true
raphtory-api-macros.workspace = true
raphtory-core = { workspace = true, features = ["arrow"] }
raphtory-core = { workspace = true }
# db4-common = {path = "../db4-common"}

bitvec = { workspace = true, features = ["serde"] }
Expand All @@ -28,6 +28,7 @@ arrow.workspace = true
arrow-array.workspace = true
arrow-csv.workspace = true
arrow-schema.workspace = true
serde_arrow.workspace = true
parquet.workspace = true
bytemuck.workspace = true
rayon.workspace = true
Expand Down
9 changes: 9 additions & 0 deletions db4-storage/src/api/edges.rs
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,10 @@ pub trait EdgeSegmentOps: Send + Sync + std::fmt::Debug + 'static {

fn try_head_mut(&self) -> Option<RwLockWriteGuard<'_, MemEdgeSegment>>;

/// mark segment as dirty without triggering a write
fn mark_dirty(&self);

/// notify that an edge was added (might need to write to disk)
fn notify_write(
&self,
head_lock: impl DerefMut<Target = MemEdgeSegment>,
Expand Down Expand Up @@ -84,6 +88,11 @@ pub trait EdgeSegmentOps: Send + Sync + std::fmt::Debug + 'static {
) -> Option<Self::Entry<'a>>;

fn locked(self: &Arc<Self>) -> Self::ArcLockedSegment;

fn vacuum(
&self,
locked_head: impl DerefMut<Target = MemEdgeSegment>,
) -> Result<(), StorageError>;
}

pub trait LockedESegment: Send + Sync + std::fmt::Debug {
Expand Down
Loading
Loading