Skip to content

Commit

Permalink
Transaction Feature
Browse files Browse the repository at this point in the history
  • Loading branch information
umuro committed Jun 29, 2023
1 parent 294ab8b commit 8c82bad
Show file tree
Hide file tree
Showing 96 changed files with 3,135 additions and 1,449 deletions.
366 changes: 147 additions & 219 deletions Cargo.lock

Large diffs are not rendered by default.

5 changes: 4 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ rust-version = "1.68.0"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
rocksdb = "0.19.0"
rocksdb = "0.21.0"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
#tokio = { version = "1.21.2", features = ["macros", "rt-multi-thread", "signal"] }
Expand All @@ -27,6 +27,9 @@ futures = "0.3.25"
tantivy = "0.18.1"
log = "0.4.17"
lazy_static = "1.4.0"
tokio-stream = "0.1.14"
parking_lot = "0.12.1"
prost-types = "0.11.2"

[dependencies.uuid]
version = "1.2.2"
Expand Down
17 changes: 13 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,23 @@ docker build --target release \
```

# todo
- [ ] Transaction API
- [ ] TTL
- [ ] Revision number
- [ ] Feature: Transaction API
- [x] Check: Meta operations exclude all other operations (RWLock)
- [ ] Make meta ops atomic 1
- [ ] Async server methods has to put a status on the client stream
- [ ] Check: Transaction stream is using transactions
- [ ]
- [ ] Startup: Start Queue Manager
- [ ] UMUR departs here...
- [ ] Listing functions need to put into client stream directly instead of collecting a vector
- [ ] Feature: TTL
- [ ] Feature: Revision number
- [ ] Named workers in task queue to keep the order for index operations (they are not queued for now)
- [ ] Text Index tests
- [ ] Name validation for all metadata
- [ ] Bring paging params of Index and TableValue to API
- [ ] Bring paging params of Index and TableValue to API. Implementation has them.
- [ ] Make task queue, ondo persistent
- [ ] ?Table Value API: Do not pluck OndoKey from the record. Get it explicitly?
- [ ] Remove unnecessary traits
- [ ] Optimize 7-Bit conversion

23 changes: 14 additions & 9 deletions examples/ondo_example.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,25 @@
use ondo::db::server::{
database_server_trait::DatabaseServerTrait,
domain_server_trait::DomainServerTrait,
lockable_db::LockableDb,
lockable_db::LOCKABLE_DB,
lockable_db::transaction_or_db::TransactionOrDb,
table_server_trait::TableServerTrait,
table_value_server_trait::TableValueServerTrait,
};
use ondo::ondo_remote::*;
use rocksdb::TransactionDB;
use serde::{Deserialize, Serialize};
use tonic::Request;

fn main() {
let rda = LOCKABLE_DB.clone();
database_server_example(&rda);
#[tokio::main]
async fn main() {
let lockable_db = LOCKABLE_DB.clone();
let mut db_guard = lockable_db.write().await;
let db = &mut *db_guard;
database_server_example(db);
}

fn database_server_example(rda: &LockableDb) {
fn database_server_example(rda: &mut TransactionDB) {
let database_server_reference_msg = DatabaseServerReferenceMessage {};
let database_server_msg = DatabaseServerMessage {};
let version = rda.version(Request::new(EmptyMessage {}));
Expand All @@ -34,7 +38,7 @@ fn database_server_example(rda: &LockableDb) {
println!("Deleted Database: {:?}", answer);
}

fn domain_server_example(rda: &LockableDb) {
fn domain_server_example(rda: &mut TransactionDB) {
let domain_name = "test_domain";
let domain_reference_msg = DomainReferenceMessage {
domain_name: domain_name.to_owned(),
Expand All @@ -55,7 +59,7 @@ fn domain_server_example(rda: &LockableDb) {
println!("Deleted Domain: {:?}", answer);
}

fn table_server_example(rda: &LockableDb, domain_reference_msg: &DomainReferenceMessage) {
fn table_server_example(rda: &mut TransactionDB, domain_reference_msg: &DomainReferenceMessage) {
let table_name = "test_table";
let table_reference_msg = TableReferenceMessage {
domain_reference: Some(domain_reference_msg.clone()),
Expand All @@ -72,14 +76,15 @@ fn table_server_example(rda: &LockableDb, domain_reference_msg: &DomainReference
println!("Updated Table: {:?}", answer);
let answer = rda.list_indexes(Request::new(table_reference_msg.clone()));
println!("Listed Tables: {:?}", answer);
table_value_server_example(rda, &table_reference_msg);
let transaction_or_db = TransactionOrDb::Db(rda);
table_value_server_example(&transaction_or_db, &table_reference_msg);
let answer = rda.delete_table(Request::new(table_reference_msg.clone()));
println!("Deleted Table: {:?}", answer);
println!("TODO list functions not yet implemented")
}

fn table_value_server_example(
rda: &LockableDb,
rda: &TransactionOrDb,
table_reference_msg: &TableReferenceMessage,
) {
println!("!!! Table Value Server Example !!!");
Expand Down
Loading

0 comments on commit 8c82bad

Please sign in to comment.