fix: skip if error instead of throw

This commit is contained in:
Zack Fu Zi Xiang 2024-09-16 17:44:47 +08:00
parent fa54f79d8b
commit 9aec9ed7b3
No known key found for this signature in database
1 changed files with 30 additions and 22 deletions

View File

@ -763,11 +763,12 @@ impl PublishCollabDuplicator {
.database_row_document_collabs .database_row_document_collabs
.get(&pub_row_doc_id) .get(&pub_row_doc_id)
{ {
let pub_doc_collab = match collab_from_doc_state(row_doc_doc_state.to_vec(), &pub_row_doc_id) {
collab_from_doc_state(row_doc_doc_state.to_vec(), &pub_row_doc_id)?; Ok(pub_doc_collab) => {
let pub_doc = let pub_doc =
Document::open(pub_doc_collab).map_err(|e| AppError::Unhandled(e.to_string()))?; Document::open(pub_doc_collab).map_err(|e| AppError::Unhandled(e.to_string()))?;
let dup_row_doc_id = meta_id_from_row_id(&dup_row_id.parse()?, RowMetaKey::DocumentId); let dup_row_doc_id =
meta_id_from_row_id(&dup_row_id.parse()?, RowMetaKey::DocumentId);
let mut new_doc_view = Box::pin(self.deep_copy_doc( let mut new_doc_view = Box::pin(self.deep_copy_doc(
&pub_row_doc_id, &pub_row_doc_id,
dup_row_doc_id.clone(), dup_row_doc_id.clone(),
@ -779,6 +780,9 @@ impl PublishCollabDuplicator {
self self
.views_to_add .views_to_add
.insert(dup_row_doc_id.clone(), new_doc_view); .insert(dup_row_doc_id.clone(), new_doc_view);
},
Err(err) => tracing::error!("failed to open row document: {}", err),
};
} else { } else {
tracing::error!("no document found for row: {}", pub_row_doc_id); tracing::error!("no document found for row: {}", pub_row_doc_id);
}; };
@ -812,12 +816,16 @@ impl PublishCollabDuplicator {
if let Ok(m) = out.cast::<MapRef>() { if let Ok(m) = out.cast::<MapRef>() {
if let Some(Out::Any(Any::BigInt(n))) = m.get(&txn, CELL_FIELD_TYPE) { if let Some(Out::Any(Any::BigInt(n))) = m.get(&txn, CELL_FIELD_TYPE) {
if n == FieldType::Relation as i64 { if n == FieldType::Relation as i64 {
let relation_data = m.get(&txn, CELL_DATA).ok_or_else(|| { match m.get(&txn, CELL_DATA) {
AppError::RecordNotFound("no data found in relation cell".to_string()) Some(relation_data) => {
})?;
if let Ok(arr) = relation_data.cast::<ArrayRef>() { if let Ok(arr) = relation_data.cast::<ArrayRef>() {
rel_row_idss.push(arr) rel_row_idss.push(arr)
}; };
},
None => {
tracing::warn!("no data found in relation cell, pub_row_id: {}", pub_row_id)
},
}
} }
} }
} }