Skip to content

Commit 04dc327

Browse files
goffrieConvex, Inc.
authored and
Convex, Inc.
committed
Use previous_revisions_of_documents in stream_revision_pairs (#34724)
GitOrigin-RevId: 54db6528293b667b106d88ef167207072b6c9bd6
1 parent 9b048c7 commit 04dc327

File tree

1 file changed

+21
-10
lines changed

1 file changed

+21
-10
lines changed

Diff for: crates/common/src/persistence_helpers.rs

+21-10
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use anyhow::Context as _;
12
use futures::{
23
Stream,
34
TryStreamExt,
@@ -6,11 +7,11 @@ use futures_async_stream::try_stream;
67
use value::InternalDocumentId;
78

89
use crate::{
9-
comparators::AsComparator,
1010
document::ResolvedDocument,
1111
knobs::DOCUMENTS_IN_MEMORY,
1212
persistence::{
1313
DocumentLogEntry,
14+
DocumentPrevTsQuery,
1415
RepeatablePersistence,
1516
},
1617
try_chunks::TryChunksExt,
@@ -56,27 +57,37 @@ pub async fn stream_revision_pairs<'a>(
5657
futures::pin_mut!(documents);
5758

5859
while let Some(read_chunk) = documents.try_next().await? {
59-
// TODO: use prev_ts when it is available
60-
let ids = read_chunk
60+
let queries = read_chunk
6161
.iter()
62-
.map(|entry| (entry.id, entry.ts))
62+
.filter_map(|entry| {
63+
entry.prev_ts.map(|prev_ts| DocumentPrevTsQuery {
64+
id: entry.id,
65+
ts: entry.ts,
66+
prev_ts,
67+
})
68+
})
6369
.collect();
64-
let mut prev_revs = reader.previous_revisions(ids).await?;
70+
let mut prev_revs = reader.previous_revisions_of_documents(queries).await?;
6571
for DocumentLogEntry {
6672
ts,
73+
prev_ts,
6774
id,
6875
value: document,
6976
..
7077
} in read_chunk
7178
{
7279
let rev = DocumentRevision { ts, document };
73-
let prev_rev =
74-
prev_revs
75-
.remove((&id, &ts).as_comparator())
76-
.map(|entry| DocumentRevision {
80+
let prev_rev = prev_ts
81+
.map(|prev_ts| {
82+
let entry = prev_revs
83+
.remove(&DocumentPrevTsQuery { id, ts, prev_ts })
84+
.with_context(|| format!("prev_ts is missing for {id}@{ts}: {prev_ts}"))?;
85+
anyhow::Ok(DocumentRevision {
7786
ts: entry.ts,
7887
document: entry.value,
79-
});
88+
})
89+
})
90+
.transpose()?;
8091
yield RevisionPair { id, rev, prev_rev };
8192
}
8293
}

0 commit comments

Comments
 (0)