Skip to content

Commit 9c5a751

Browse files
committed
[PartitionStore] Allow table key prefix builders to use references
- Allows key prefixes and (get) operations no partition store to be encoded without the extra clone into the builder (via the new builder_ref() type). - Allows table key designers to use Option<T> by implementing their own KeyEncode trait with their own semantic of what "None" means.
1 parent 28b8b47 commit 9c5a751

File tree

23 files changed

+358
-240
lines changed

23 files changed

+358
-240
lines changed

crates/partition-store/src/durable_lsn_tracking.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,9 @@ use restate_types::{identifiers::PartitionId, logs::Lsn};
2626

2727
use crate::SharedState;
2828
use crate::fsm_table::{PartitionStateMachineKey, fsm_variable};
29-
use crate::keys::{KeyKind, TableKey};
29+
#[cfg(test)]
30+
use crate::keys::EncodeTableKey;
31+
use crate::keys::{DecodeTableKey, KeyKind};
3032

3133
const APPLIED_LSNS_PROPERTY_PREFIX: &str = "p:";
3234

crates/partition-store/src/idempotency_table/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ use restate_storage_api::protobuf_types::PartitionStoreProtobufValue;
2121
use restate_storage_api::{Result, StorageError};
2222
use restate_types::identifiers::{IdempotencyId, PartitionKey, WithPartitionKey};
2323

24-
use crate::keys::{KeyKind, TableKey, define_table_key};
24+
use crate::keys::{DecodeTableKey, KeyKind, define_table_key};
2525
use crate::scan::TableScan;
2626
use crate::{PartitionStore, PartitionStoreTransaction, StorageAccess, TableKind, break_on_err};
2727

crates/partition-store/src/inbox_table/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ use restate_types::identifiers::{PartitionKey, ServiceId, WithPartitionKey};
2424
use restate_types::message::MessageIndex;
2525

2626
use crate::TableKind::Inbox;
27-
use crate::keys::{KeyKind, TableKey, define_table_key};
27+
use crate::keys::{DecodeTableKey, KeyKind, define_table_key};
2828
use crate::{
2929
PartitionStore, PartitionStoreTransaction, StorageAccess, TableScan,
3030
TableScanIterationDecision, break_on_err,
@@ -211,7 +211,7 @@ fn decode_inbox_key_value(mut k: &[u8], mut v: &[u8]) -> Result<SequenceNumberIn
211211
#[cfg(test)]
212212
mod tests {
213213
use crate::inbox_table::InboxKey;
214-
use crate::keys::TableKeyPrefix;
214+
use crate::keys::EncodeTableKeyPrefix;
215215
use bytes::Bytes;
216216
use restate_types::identifiers::{ServiceId, WithPartitionKey};
217217

crates/partition-store/src/invocation_status_table/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ use restate_storage_api::{Result, StorageError};
2424
use restate_types::identifiers::{InvocationId, InvocationUuid, PartitionKey, WithPartitionKey};
2525

2626
use crate::TableScan::FullScanPartitionKeyRange;
27-
use crate::keys::{KeyKind, TableKey, define_table_key};
27+
use crate::keys::{DecodeTableKey, KeyKind, define_table_key};
2828
use crate::scan::TableScan;
2929
use crate::{PartitionStore, PartitionStoreTransaction, StorageAccess, TableKind, break_on_err};
3030

@@ -289,7 +289,7 @@ impl WriteInvocationStatusTable for PartitionStoreTransaction<'_> {
289289

290290
#[cfg(test)]
291291
mod tests {
292-
use crate::keys::TableKeyPrefix;
292+
use crate::keys::EncodeTableKeyPrefix;
293293

294294
use super::*;
295295

crates/partition-store/src/journal_events/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ use restate_types::time::MillisSinceEpoch;
2626

2727
use crate::TableKind::{JournalEvent, State};
2828
use crate::error::break_on_err;
29-
use crate::keys::{KeyKind, TableKey, define_table_key};
29+
use crate::keys::{DecodeTableKey, KeyKind, define_table_key};
3030
use crate::{
3131
PartitionStore, PartitionStoreTransaction, StorageAccess, TableScan, TableScanIterationDecision,
3232
};

crates/partition-store/src/journal_table/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ use restate_types::identifiers::{
2424
};
2525

2626
use crate::TableKind::Journal;
27-
use crate::keys::{KeyKind, TableKey, define_table_key};
27+
use crate::keys::{DecodeTableKey, EncodeTableKey, KeyKind, define_table_key};
2828
use crate::{PartitionStore, PartitionStoreTransaction, StorageAccess, TableScan, break_on_err};
2929

3030
define_table_key!(
@@ -473,7 +473,7 @@ impl WriteJournalTable for PartitionStoreTransaction<'_> {
473473
#[cfg(test)]
474474
mod tests {
475475
use crate::journal_table::write_journal_entry_key;
476-
use crate::keys::TableKeyPrefix;
476+
use crate::keys::EncodeTableKeyPrefix;
477477
use bytes::Bytes;
478478
use restate_types::identifiers::{InvocationId, InvocationUuid};
479479

crates/partition-store/src/journal_table_v2/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ use restate_types::journal_v2::{CompletionId, EntryMetadata, NotificationId};
3131
use restate_types::storage::{StoredRawEntry, StoredRawEntryHeader};
3232

3333
use crate::TableKind::Journal;
34-
use crate::keys::{KeyKind, TableKey, define_table_key};
34+
use crate::keys::{DecodeTableKey, EncodeTableKey, KeyKind, define_table_key};
3535
use crate::owned_iter::OwnedIterator;
3636
use crate::{PartitionStore, PartitionStoreTransaction, StorageAccess, TableScan, break_on_err};
3737

@@ -791,7 +791,7 @@ mod tests {
791791

792792
use super::write_journal_entry_key;
793793

794-
use crate::keys::TableKeyPrefix;
794+
use crate::keys::EncodeTableKeyPrefix;
795795
use bytes::Bytes;
796796
use restate_types::identifiers::{InvocationId, InvocationUuid};
797797

0 commit comments

Comments
 (0)