fixes and review comments

This commit is contained in:
Josh Slocum 2022-06-17 08:17:44 -05:00
parent b3597ef3a8
commit 1cc466e068
3 changed files with 18 additions and 22 deletions

View File

@ -157,23 +157,23 @@ Tenant::Tenant(FDBDatabase* db, const uint8_t* name, int name_length) {
}
}
KeyFuture Tenant::purge_blob_granules(FDBDatabase* db,
std::string_view begin_key,
std::string_view end_key,
int64_t purge_version,
fdb_bool_t force) {
return KeyFuture(fdb_database_purge_blob_granules(db,
(const uint8_t*)begin_key.data(),
begin_key.size(),
(const uint8_t*)end_key.data(),
end_key.size(),
purge_version,
force));
KeyFuture Tenant::purge_blob_granules(FDBTenant* tenant,
std::string_view begin_key,
std::string_view end_key,
int64_t purge_version,
fdb_bool_t force) {
return KeyFuture(fdb_tenant_purge_blob_granules(tenant,
(const uint8_t*)begin_key.data(),
begin_key.size(),
(const uint8_t*)end_key.data(),
end_key.size(),
purge_version,
force));
}
EmptyFuture Tenant::wait_purge_granules_complete(FDBDatabase* db, std::string_view purge_key) {
EmptyFuture Tenant::wait_purge_granules_complete(FDBTenant* tenant, std::string_view purge_key) {
return EmptyFuture(
fdb_database_wait_purge_granules_complete(db, (const uint8_t*)purge_key.data(), purge_key.size()));
fdb_tenant_wait_purge_granules_complete(tenant, (const uint8_t*)purge_key.data(), purge_key.size()));
}
Tenant::~Tenant() {

View File

@ -223,13 +223,13 @@ public:
Tenant(Tenant&&) = delete;
Tenant& operator=(Tenant&&) = delete;
static KeyFuture purge_blob_granules(FDBDatabase* db,
static KeyFuture purge_blob_granules(FDBTenant* tenant,
std::string_view begin_key,
std::string_view end_key,
int64_t purge_version,
fdb_bool_t force);
static EmptyFuture wait_purge_granules_complete(FDBDatabase* db, std::string_view purge_key);
static EmptyFuture wait_purge_granules_complete(FDBTenant* tenant, std::string_view purge_key);
private:
friend class Transaction;

View File

@ -7520,11 +7520,10 @@ ACTOR Future<Standalone<VectorRef<KeyRangeRef>>> getBlobGranuleRangesActor(Trans
} else {
self->setOption(FDBTransactionOptions::ACCESS_SYSTEM_KEYS);
}
// FIXME: limit to tenant range if set
loop {
state RangeResult blobGranuleMapping;
if (tenantPrefix.present()) {
Standalone<StringRef> mappingPrefix = tenantPrefix.get().withPrefix(blobGranuleMappingKeys.begin);
state Standalone<StringRef> mappingPrefix = tenantPrefix.get().withPrefix(blobGranuleMappingKeys.begin);
// basically krmGetRange, but enable it to not use tenant without RAW_ACCESS by doing manual getRange with
// UseTenant::False
@ -7538,9 +7537,7 @@ ACTOR Future<Standalone<VectorRef<KeyRangeRef>>> getBlobGranuleRangesActor(Trans
Reverse::False,
UseTenant::False));
// strip off mapping prefix
Standalone<StringRef> prefix =
StringRef(blobGranuleMappingKeys.begin.toString() + tenantPrefix.get().toString());
blobGranuleMapping = krmDecodeRanges(prefix, currentRange, rawMapping);
blobGranuleMapping = krmDecodeRanges(mappingPrefix, currentRange, rawMapping);
} else {
wait(store(
blobGranuleMapping,
@ -9472,7 +9469,6 @@ Reference<DatabaseContext::TransactionT> DatabaseContext::createTransaction() {
return makeReference<ReadYourWritesTransaction>(Database(Reference<DatabaseContext>::addRef(this)));
}
// FIXME: handle tenants?
ACTOR Future<Key> purgeBlobGranulesActor(Reference<DatabaseContext> db,
KeyRange range,
Version purgeVersion,