Skip to content

Commit 200a487

Browse files
authored
fix(scan): fix dangling reference and unsigned overflow in FileStoreScan (#354)
1 parent 7b74e1c commit 200a487

1 file changed

Lines changed: 4 additions & 3 deletions

File tree

src/paimon/core/operation/file_store_scan.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -169,8 +169,9 @@ Result<std::shared_ptr<FileStoreScan::RawPlan>> FileStoreScan::CreatePlan() cons
169169
metrics_->SetCounter(ScanMetrics::LAST_SCANNED_SNAPSHOT_ID,
170170
snapshot.has_value() ? snapshot.value().Id() : int64_t{0});
171171
metrics_->SetCounter(ScanMetrics::LAST_SCANNED_MANIFESTS, filtered_manifest_file_metas.size());
172-
metrics_->SetCounter(ScanMetrics::LAST_SCAN_SKIPPED_TABLE_FILES,
173-
all_data_files - manifest_entries.size());
172+
metrics_->SetCounter(
173+
ScanMetrics::LAST_SCAN_SKIPPED_TABLE_FILES,
174+
std::max(int64_t{0}, all_data_files - static_cast<int64_t>(manifest_entries.size())));
174175
metrics_->SetCounter(ScanMetrics::LAST_SCAN_RESULTED_TABLE_FILES, manifest_entries.size());
175176
return std::make_shared<FileStoreScan::RawPlan>(scan_mode_, snapshot,
176177
std::move(manifest_entries));
@@ -219,7 +220,7 @@ Status FileStoreScan::ReadFileEntries(const std::vector<ManifestFileMeta>& manif
219220
std::vector<ManifestEntry>* manifest_entries) const {
220221
std::vector<std::future<Result<std::vector<ManifestEntry>>>> futures;
221222
for (const auto& meta : manifest_metas) {
222-
auto read_meta_task = [this, &meta]() -> Result<std::vector<ManifestEntry>> {
223+
auto read_meta_task = [this, meta]() -> Result<std::vector<ManifestEntry>> {
223224
std::vector<ManifestEntry> tmp_entries;
224225
PAIMON_RETURN_NOT_OK(ReadManifestFileMeta(meta, &tmp_entries));
225226
return tmp_entries;

0 commit comments

Comments
 (0)