Skip to content

Commit df5266d

Browse files
committed
1 parent a654623 commit df5266d

File tree

9 files changed

+41
-24
lines changed

9 files changed

+41
-24
lines changed

backend/src/services/core/view/controller.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use backend_service::errors::{invalid_params, ServerError};
1010
use bytes::Bytes;
1111
use chrono::Utc;
1212
use flowy_collaboration::{
13-
entities::revision::{RepeatedRevision, RevType, Revision},
13+
entities::revision::{RepeatedRevision, Revision},
1414
protobuf::CreateDocParams,
1515
};
1616
use flowy_core_data_model::{

backend/tests/api_test/workspace_test.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use flowy_collaboration::{
55
document::{Document, PlainDoc},
66
entities::{
77
doc::{CreateDocParams, DocumentId},
8-
revision::{md5, RepeatedRevision, RevType, Revision},
8+
revision::{md5, RepeatedRevision, Revision},
99
},
1010
};
1111
use flowy_core_data_model::entities::{

frontend/app_flowy/packages/flowy_sdk/lib/dispatch/dispatch.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import 'package:dartz/dartz.dart';
33
import 'package:flowy_log/flowy_log.dart';
44
// ignore: unnecessary_import
55
import 'package:flowy_sdk/protobuf/dart-ffi/ffi_response.pb.dart';
6+
import 'package:flowy_sdk/protobuf/dart-ffi/ffi_request.pb.dart';
67
import 'package:flowy_sdk/protobuf/flowy-error/errors.pb.dart';
78
import 'package:flowy_sdk/protobuf/flowy-net/event.pb.dart';
89
import 'package:flowy_sdk/protobuf/flowy-net/network_state.pb.dart';

frontend/rust-lib/flowy-document/src/services/doc/edit/editor.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use crate::{
99
use bytes::Bytes;
1010
use flowy_collaboration::{
1111
document::history::UndoResult,
12-
entities::revision::{RevId, RevType, Revision},
12+
entities::revision::{RevId, Revision},
1313
errors::CollaborateResult,
1414
};
1515
use flowy_database::ConnectionPool;

frontend/rust-lib/flowy-document/src/services/doc/revision/cache/cache.rs

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,16 @@ use crate::{
66
},
77
sql_tables::{RevisionChangeset, RevisionTableState},
88
};
9-
use dashmap::DashMap;
9+
1010
use flowy_collaboration::entities::revision::{Revision, RevisionRange, RevisionState};
1111
use flowy_database::ConnectionPool;
1212
use flowy_error::{internal_error, FlowyResult};
13-
use lib_infra::future::FutureResult;
14-
use lib_ot::errors::OTError;
15-
use std::{
16-
collections::VecDeque,
17-
sync::{
18-
atomic::{AtomicI64, Ordering::SeqCst},
19-
Arc,
20-
},
13+
14+
use std::sync::{
15+
atomic::{AtomicI64, Ordering::SeqCst},
16+
Arc,
2117
};
22-
use tokio::{sync::RwLock, task::spawn_blocking};
18+
use tokio::task::spawn_blocking;
2319

2420
pub struct RevisionCache {
2521
doc_id: String,
@@ -41,12 +37,21 @@ impl RevisionCache {
4137
}
4238
}
4339

44-
pub async fn add(&self, revision: Revision, state: RevisionState) -> FlowyResult<RevisionRecord> {
40+
pub async fn add(
41+
&self,
42+
revision: Revision,
43+
state: RevisionState,
44+
write_to_disk: bool,
45+
) -> FlowyResult<RevisionRecord> {
4546
if self.memory_cache.contains(&revision.rev_id) {
4647
return Err(FlowyError::internal().context(format!("Duplicate remote revision id: {}", revision.rev_id)));
4748
}
4849
let rev_id = revision.rev_id;
49-
let record = RevisionRecord { revision, state };
50+
let record = RevisionRecord {
51+
revision,
52+
state,
53+
write_to_disk,
54+
};
5055
self.memory_cache.add(&record).await;
5156
self.set_latest_rev_id(rev_id);
5257
Ok(record)
@@ -111,6 +116,7 @@ impl RevisionCache {
111116
.map(|revision| RevisionRecord {
112117
revision,
113118
state: RevisionState::Local,
119+
write_to_disk: true,
114120
})
115121
.collect::<Vec<_>>();
116122

@@ -128,9 +134,13 @@ impl RevisionCache {
128134
}
129135

130136
impl RevisionMemoryCacheDelegate for Arc<Persistence> {
131-
fn checkpoint_tick(&self, records: Vec<RevisionRecord>) -> FlowyResult<()> {
137+
fn checkpoint_tick(&self, mut records: Vec<RevisionRecord>) -> FlowyResult<()> {
132138
let conn = &*self.pool.get().map_err(internal_error)?;
133-
self.write_revision_records(records, &conn)
139+
records.retain(|record| record.write_to_disk);
140+
if !records.is_empty() {
141+
let _ = self.write_revision_records(records, &conn)?;
142+
}
143+
Ok(())
134144
}
135145

136146
fn receive_ack(&self, doc_id: &str, rev_id: i64) {
@@ -150,6 +160,7 @@ impl RevisionMemoryCacheDelegate for Arc<Persistence> {
150160
pub struct RevisionRecord {
151161
pub revision: Revision,
152162
pub state: RevisionState,
163+
pub write_to_disk: bool,
153164
}
154165

155166
impl RevisionRecord {

frontend/rust-lib/flowy-document/src/services/doc/revision/manager.rs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use dashmap::DashMap;
77
use flowy_collaboration::{
88
entities::{
99
doc::DocumentInfo,
10-
revision::{RepeatedRevision, RevType, Revision, RevisionRange, RevisionState},
10+
revision::{RepeatedRevision, Revision, RevisionRange, RevisionState},
1111
},
1212
util::{md5, RevIdCounter},
1313
};
@@ -68,13 +68,13 @@ impl RevisionManager {
6868
#[tracing::instrument(level = "debug", skip(self, revision))]
6969
pub async fn add_remote_revision(&self, revision: &Revision) -> Result<(), FlowyError> {
7070
self.rev_id_counter.set(revision.rev_id);
71-
let _ = self.cache.add(revision.clone(), RevisionState::Ack).await?;
71+
let _ = self.cache.add(revision.clone(), RevisionState::Ack, true).await?;
7272
Ok(())
7373
}
7474

7575
#[tracing::instrument(level = "debug", skip(self, revision))]
7676
pub async fn add_local_revision(&self, revision: &Revision) -> Result<(), FlowyError> {
77-
let record = self.cache.add(revision.clone(), RevisionState::Local).await?;
77+
let record = self.cache.add(revision.clone(), RevisionState::Local, true).await?;
7878
self.sync_seq.add_revision(record).await?;
7979
Ok(())
8080
}
@@ -206,14 +206,18 @@ impl RevisionLoader {
206206
&self.user_id,
207207
doc_md5,
208208
);
209-
let _ = self.cache.add(revision.clone(), RevisionState::Ack).await?;
209+
let _ = self.cache.add(revision.clone(), RevisionState::Ack, true).await?;
210210
revisions = vec![revision];
211211
} else {
212212
for record in &records {
213213
match record.state {
214214
RevisionState::Local => {
215215
//
216-
match self.cache.add(record.revision.clone(), RevisionState::Local).await {
216+
match self
217+
.cache
218+
.add(record.revision.clone(), RevisionState::Local, false)
219+
.await
220+
{
217221
Ok(_) => {},
218222
Err(e) => tracing::error!("{}", e),
219223
}

frontend/rust-lib/flowy-document/src/services/doc/web_socket/web_socket.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use crate::services::doc::{
1010
use bytes::Bytes;
1111
use flowy_collaboration::{
1212
entities::{
13-
revision::{RepeatedRevision, RevType, Revision, RevisionRange},
13+
revision::{RepeatedRevision, Revision, RevisionRange},
1414
ws::{DocumentClientWSData, NewDocumentUser},
1515
},
1616
errors::CollaborateResult,

frontend/rust-lib/flowy-document/src/sql_tables/doc/rev_table.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ pub(crate) fn mk_revision_record_from_table(user_id: &str, table: RevisionTable)
8080
RevisionRecord {
8181
revision,
8282
state: table.state.into(),
83+
write_to_disk: false,
8384
}
8485
}
8586

shared-lib/flowy-core-data-model/src/entities/view/view_create.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ impl CreateViewParams {
9898
}
9999
}
100100

101-
pub fn take_view_data(&mut self) -> String { ::std::mem::replace(&mut self.view_data, String::new()) }
101+
pub fn take_view_data(&mut self) -> String { std::mem::take(&mut self.view_data) }
102102
}
103103

104104
impl TryInto<CreateViewParams> for CreateViewRequest {

0 commit comments

Comments
 (0)