Skip to content

Commit 17dff67

Browse files
aw-datastore: Guarantee DB commit every 15 seconds
1 parent afbb70c commit 17dff67

1 file changed

Lines changed: 5 additions & 1 deletion

File tree

aw-datastore/src/worker.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ use std::thread;
44

55
use chrono::DateTime;
66
use chrono::Utc;
7+
use chrono::Duration;
78

89
use rusqlite::Connection;
910
use rusqlite::DropBehavior;
@@ -150,6 +151,7 @@ impl DatastoreWorker {
150151
};
151152
let mut commit = false;
152153
let mut uncommited_events = 0;
154+
let last_commit_time: DateTime<Utc> = Utc::now();
153155
transaction.set_drop_behavior(DropBehavior::Commit);
154156
loop {
155157
let (request, response_sender) = match self.responder.poll() {
@@ -262,7 +264,9 @@ impl DatastoreWorker {
262264
}
263265
};
264266
response_sender.respond(response);
265-
if commit || uncommited_events > 100 {
267+
let now: DateTime<Utc> = Utc::now();
268+
let commit_interval_passed: bool = (now - last_commit_time) > Duration::seconds(15);
269+
if commit || commit_interval_passed || uncommited_events > 100 {
266270
break;
267271
};
268272
}

0 commit comments

Comments
 (0)