Skip to content

Commit 4b97704

Browse files
committed
better
1 parent e483fa4 commit 4b97704

5 files changed

Lines changed: 45 additions & 14 deletions

File tree

ffi/src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -565,6 +565,7 @@ fn get_default_engine_impl(
565565
&url,
566566
options,
567567
Arc::new(TokioBackgroundExecutor::new()),
568+
None,
568569
);
569570
Ok(engine_to_handle(Arc::new(engine?), allocate_error))
570571
}

kernel/examples/common/src/lib.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,13 +161,14 @@ pub fn get_engine(
161161
Ok(DefaultEngine::new(
162162
store,
163163
Arc::new(TokioBackgroundExecutor::new()),
164+
None,
164165
))
165166
} else if !args.option.is_empty() {
166167
let opts = args.option.iter().map(|option| {
167168
let parts: Vec<&str> = option.split("=").collect();
168169
(parts[0].to_ascii_lowercase(), parts[1])
169170
});
170-
DefaultEngine::try_new(url, opts, Arc::new(TokioBackgroundExecutor::new()))
171+
DefaultEngine::try_new(url, opts, Arc::new(TokioBackgroundExecutor::new()), None)
171172
} else {
172173
let mut options = if let Some(ref region) = args.region {
173174
HashMap::from([("region", region.clone())])
@@ -177,7 +178,7 @@ pub fn get_engine(
177178
if args.public {
178179
options.insert("skip_signature", "true".to_string());
179180
}
180-
DefaultEngine::try_new(url, options, Arc::new(TokioBackgroundExecutor::new()))
181+
DefaultEngine::try_new(url, options, Arc::new(TokioBackgroundExecutor::new()), None)
181182
}
182183
}
183184

kernel/examples/write-table/src/main.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ async fn try_main() -> DeltaResult<()> {
8080
&url,
8181
HashMap::<String, String>::new(),
8282
Arc::new(TokioBackgroundExecutor::new()),
83+
None,
8384
)?;
8485

8586
// Create or get the table

kernel/src/snapshot.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@ impl Snapshot {
264264
engine: &dyn Engine,
265265
operation_id: Option<MetricId>,
266266
) -> DeltaResult<Self> {
267-
let operation_id = operation_id.unwrap_or_else(MetricId::new);
267+
let operation_id = operation_id.unwrap_or_default();
268268
let reporter = engine.get_metrics_reporter();
269269
let timer = Timer::new();
270270

kernel/src/snapshot/builder.rs

Lines changed: 39 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -83,17 +83,23 @@ impl SnapshotBuilder {
8383
/// - `engine`: Implementation of [`Engine`] apis.
8484
pub fn build(self, engine: &dyn Engine) -> DeltaResult<SnapshotRef> {
8585
let log_tail = self.log_tail.into_iter().map(Into::into).collect();
86-
if let Some(table_root) = self.table_root {
87-
let operation_id = MetricId::new();
88-
let reporter = engine.get_metrics_reporter();
89-
90-
if let Some(ref r) = reporter {
91-
r.report(MetricEvent::SnapshotStarted {
92-
operation_id,
93-
table_path: table_root.to_string(),
94-
});
95-
}
9686

87+
let operation_id = MetricId::new();
88+
let reporter = engine.get_metrics_reporter();
89+
90+
let table_path = self.table_root.as_ref()
91+
.map(|url| url.to_string())
92+
.or_else(|| self.existing_snapshot.as_ref().map(|s| s.table_root().to_string()))
93+
.unwrap_or_else(|| "unknown".to_string());
94+
95+
if let Some(ref r) = reporter {
96+
r.report(MetricEvent::SnapshotStarted {
97+
operation_id,
98+
table_path,
99+
});
100+
}
101+
102+
if let Some(table_root) = self.table_root {
97103
let timer = Timer::new();
98104
let log_segment_result = LogSegment::for_snapshot(
99105
engine.storage_handler().as_ref(),
@@ -137,7 +143,28 @@ impl SnapshotBuilder {
137143
"SnapshotBuilder should have either table_root or existing_snapshot",
138144
)
139145
})?;
140-
Snapshot::try_new_from(existing_snapshot, log_tail, engine, self.version)
146+
147+
let timer = Timer::new();
148+
let result = Snapshot::try_new_from(existing_snapshot, log_tail, engine, self.version);
149+
150+
match result {
151+
Ok(snapshot) => {
152+
if let Some(ref r) = reporter {
153+
r.report(MetricEvent::SnapshotCompleted {
154+
operation_id,
155+
version: snapshot.version(),
156+
total_duration: timer.elapsed(),
157+
});
158+
}
159+
Ok(snapshot)
160+
}
161+
Err(e) => {
162+
if let Some(ref r) = reporter {
163+
r.report(MetricEvent::SnapshotFailed { operation_id });
164+
}
165+
Err(e)
166+
}
167+
}
141168
}
142169
}
143170
}
@@ -165,6 +192,7 @@ mod tests {
165192
let engine = Arc::new(DefaultEngine::new(
166193
store.clone(),
167194
Arc::new(TokioBackgroundExecutor::new()),
195+
None,
168196
));
169197
(engine, store, table_root)
170198
}

0 commit comments

Comments
 (0)