Verify process network address filter before attempting setclass. Provide error message if no matching process addresses found
This commit is contained in:
parent
5e0b1fd13f
commit
234760f516
|
@ -73,6 +73,23 @@ ACTOR Future<Void> printProcessClass(Reference<IDatabase> db) {
|
|||
};
|
||||
|
||||
ACTOR Future<bool> setProcessClass(Reference<IDatabase> db, KeyRef network_address, KeyRef class_type) {
|
||||
// Check if the network address filter matches any processes before proceeding.
|
||||
state Reference<ITransaction> preCheckFilterTr = db->createTransaction();
|
||||
loop {
|
||||
preCheckFilterTr->setOption(FDBTransactionOptions::SPECIAL_KEY_SPACE_ENABLE_WRITES);
|
||||
try {
|
||||
ThreadFuture<Optional<Value>> result = preCheckFilterTr->get(network_address.withPrefix(fdb_cli::processClassTypeSpecialKeyRange.begin));
|
||||
Optional<Value> val = wait(safeThreadFutureToFuture(result));
|
||||
if (!val.present()) {
|
||||
printf("No matching addresses found\n");
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
} catch (Error& e) {
|
||||
wait(safeThreadFutureToFuture(preCheckFilterTr->onError(e)));
|
||||
}
|
||||
}
|
||||
|
||||
state Reference<ITransaction> tr = db->createTransaction();
|
||||
loop {
|
||||
tr->setOption(FDBTransactionOptions::SPECIAL_KEY_SPACE_ENABLE_WRITES);
|
||||
|
|
Loading…
Reference in New Issue