github-actions[bot] commented on code in PR #66728:
URL: https://github.com/apache/doris/pull/66728#discussion_r3774025078
##########
cloud/src/recycler/recycler.cpp:
##########
@@ -3833,8 +3833,8 @@ int
InstanceRecycler::decrement_delete_bitmap_packed_file_ref_counts(
return -1;
}
- std::string dbm_val;
- err = txn->get(dbm_key, &dbm_val);
+ ValueBuf dbm_val;
+ err = cloud::blob_get(txn.get(), dbm_key, &dbm_val);
Review Comment:
[P1] Read clone-shared DBM metadata from its owning instance. Classification
and phase-3 cleanup deliberately key a clone rowset through
`RowsetMetaCloudPB::reference_instance_id`, but this helper builds both the DBM
key and packed-file key from the clone recycler's `instance_id_`. If the source
recycler decrements the shared refcount first, the clone can be the last owner:
this read returns `NOT_FOUND`, skips standalone/packed cleanup, and cleanup
then removes the source DBM range, permanently losing the physical location.
Thread the canonical/reference instance into this helper and use it for both
keys; please cover clone-last standalone and packed DBMs.
##########
cloud/src/recycler/recycler.cpp:
##########
@@ -3833,8 +3833,8 @@ int
InstanceRecycler::decrement_delete_bitmap_packed_file_ref_counts(
return -1;
}
- std::string dbm_val;
- err = txn->get(dbm_key, &dbm_val);
+ ValueBuf dbm_val;
+ err = cloud::blob_get(txn.get(), dbm_key, &dbm_val);
Review Comment:
[P1] Preserve the vault path format when deleting standalone DBMs. BE writes
a path-version-1 HDFS-vault DBM as
`data/<shard>/<tablet>/<rowset>_delete_bitmap.db`, but after this read returns
`STANDALONE_FILE` both callers enqueue the fixed path-version-0
`delete_bitmap_path`. The accessors do not add the shard; deleting the
nonexistent v0 object succeeds, and later metadata cleanup discards the only
locator while the real v1 object remains. Retain the vault `PathFormat` or
persist the exact standalone path, and cover a path-v1 direct-write DBM.
##########
cloud/src/recycler/recycler.cpp:
##########
@@ -3833,8 +3833,8 @@ int
InstanceRecycler::decrement_delete_bitmap_packed_file_ref_counts(
return -1;
}
- std::string dbm_val;
- err = txn->get(dbm_key, &dbm_val);
+ ValueBuf dbm_val;
+ err = cloud::blob_get(txn.get(), dbm_key, &dbm_val);
Review Comment:
[P1] Apply blob-backed DBM cleanup to the legacy dropped-tablet path too.
When `should_recycle_versioned_keys()` is false, `recycle_tablet()` decrements
only `RowsetMetaCloudPB::packed_slice_locations`, deletes `data/<tablet>/`, and
then range-removes every v2 DBM KV. A packed DBM lives under `data/packed_file`
and its exact slice location exists only in that DBM value, so a previously
corrected packed record remains live permanently after the range removal.
Process each visible/restore rowset's DBM before deleting that range, and add a
non-versioned dropped-tablet case with a packed DBM.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]