mirror of
https://github.com/apple/foundationdb.git
synced 2025-05-14 18:02:31 +08:00
Merge pull request #8684 from jzhou77/fix
Fix ASan failure heap use after free in status json generation
This commit is contained in:
commit
ec471aa63c
@ -11,6 +11,7 @@ Release Notes
|
||||
* Released with AVX disabled.
|
||||
* Fixed a transaction log data corruption bug. `(PR #8525) <https://github.com/apple/foundationdb/pull/8525>`_, `(PR #8562) <https://github.com/apple/foundationdb/pull/8562>`_, and `(PR #8647) <https://github.com/apple/foundationdb/pull/8647>`_
|
||||
* Fixed a rare data race in transaction logs when PEEK_BATCHING_EMPTY_MSG is enabled. `(PR #8660) <https://github.com/apple/foundationdb/pull/8660>`_
|
||||
* Fixed a heap-use-after-free bug in cluster controller. `(PR #8683) <https://github.com/apple/foundationdb/pull/8683>`_
|
||||
* Changed consistency check to report all corruptions. `(PR #8571) <https://github.com/apple/foundationdb/pull/8571>`_
|
||||
* Fixed a rare storage server crashing bug after recovery. `(PR #8468) <https://github.com/apple/foundationdb/pull/8468>`_
|
||||
* Added client knob UNLINKONLOAD_FDBCLIB to control deletion of external client libraries. `(PR #8434) <https://github.com/apple/foundationdb/pull/8434>`_
|
||||
|
@ -781,6 +781,9 @@ ACTOR static Future<JsonBuilderObject> processStatusFetcher(
|
||||
// Map the address of the worker to the error message object
|
||||
tracefileOpenErrorMap[traceFileErrorsItr->first.toString()] = msgObj;
|
||||
} catch (Error& e) {
|
||||
if (e.code() == error_code_actor_cancelled) {
|
||||
throw;
|
||||
}
|
||||
incomplete_reasons->insert("file_open_error details could not be retrieved");
|
||||
}
|
||||
}
|
||||
@ -1095,6 +1098,9 @@ ACTOR static Future<JsonBuilderObject> processStatusFetcher(
|
||||
}
|
||||
|
||||
} catch (Error& e) {
|
||||
if (e.code() == error_code_actor_cancelled) {
|
||||
throw;
|
||||
}
|
||||
// Something strange occurred, process list is incomplete but what was built so far, if anything, will be
|
||||
// returned.
|
||||
incomplete_reasons->insert("Cannot retrieve all process status information.");
|
||||
@ -1410,6 +1416,9 @@ ACTOR static Future<JsonBuilderObject> latencyProbeFetcher(Database cx,
|
||||
|
||||
wait(waitForAll(probes));
|
||||
} catch (Error& e) {
|
||||
if (e.code() == error_code_actor_cancelled) {
|
||||
throw;
|
||||
}
|
||||
incomplete_reasons->insert(format("Unable to retrieve latency probe information (%s).", e.what()));
|
||||
}
|
||||
|
||||
@ -1449,6 +1458,9 @@ ACTOR static Future<Void> consistencyCheckStatusFetcher(Database cx,
|
||||
}
|
||||
}
|
||||
} catch (Error& e) {
|
||||
if (e.code() == error_code_actor_cancelled) {
|
||||
throw;
|
||||
}
|
||||
incomplete_reasons->insert(format("Unable to retrieve consistency check settings (%s).", e.what()));
|
||||
}
|
||||
return Void();
|
||||
@ -1540,6 +1552,9 @@ ACTOR static Future<Void> logRangeWarningFetcher(Database cx,
|
||||
}
|
||||
}
|
||||
} catch (Error& e) {
|
||||
if (e.code() == error_code_actor_cancelled) {
|
||||
throw;
|
||||
}
|
||||
incomplete_reasons->insert(format("Unable to retrieve log ranges (%s).", e.what()));
|
||||
}
|
||||
return Void();
|
||||
@ -1713,7 +1728,10 @@ static JsonBuilderObject configurationFetcher(Optional<DatabaseConfiguration> co
|
||||
}
|
||||
int count = coordinators.clientLeaderServers.size();
|
||||
statusObj["coordinators_count"] = count;
|
||||
} catch (Error&) {
|
||||
} catch (Error& e) {
|
||||
if (e.code() == error_code_actor_cancelled) {
|
||||
throw;
|
||||
}
|
||||
incomplete_reasons->insert("Could not retrieve all configuration status information.");
|
||||
}
|
||||
return statusObj;
|
||||
@ -2735,6 +2753,9 @@ ACTOR Future<JsonBuilderObject> layerStatusFetcher(Database cx,
|
||||
}
|
||||
} catch (Error& e) {
|
||||
TraceEvent(SevWarn, "LayerStatusError").error(e);
|
||||
if (e.code() == error_code_actor_cancelled) {
|
||||
throw;
|
||||
}
|
||||
incomplete_reasons->insert(format("Unable to retrieve layer status (%s).", e.what()));
|
||||
json.create("_error") = format("Unable to retrieve layer status (%s).", e.what());
|
||||
json.create("_valid") = false;
|
||||
|
Loading…
x
Reference in New Issue
Block a user