-
Notifications
You must be signed in to change notification settings - Fork 165
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
RCORE-2213 Add CI builder that runs tests with log level set to all #7934
Conversation
@@ -215,13 +215,16 @@ void ServerProtocol::insert_single_changeset_download_message(OutputBuffer& out, | |||
entry.changeset.write_to(out); | |||
|
|||
if (logger.would_log(util::Logger::Level::trace)) { | |||
util::AppendBuffer<char> changeset_buffer; | |||
entry.changeset.copy_to(changeset_buffer); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The compaction code removed in RCORE-2205 did a bunch of decoding/re-encoding of changesets before they got to be logged here, so entry.changeset.get_first_chunk()
was only valid if the ChunkedBinaryData
in changeset
wrapped a single BinaryData
. We just copy the whole (potentially chunked) changeset into a buffer here to simulate the old behavior.
int n = (4 * L) / 146097; | ||
int i, j; | ||
uint64_t L = jd + 68569; | ||
uint64_t n = (4 * L) / 146097; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This was undefined behavior where in some tests that log timestamps this multiplication could overflow an int
. Switching to uint64_t's where overflowing is defined behavior.
@@ -242,7 +242,7 @@ TEST(Alloc_BadBuffer) | |||
GROUP_TEST_PATH(path); | |||
|
|||
// Produce an invalid buffer | |||
char buffer[32]; | |||
alignas(8) char buffer[32]; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
UBSAN was complaining about this while testing. The buffer gets reinterpret_cast'd into a pointer to a struct while trying to validate it as a realm buffer, so that storage needs to be aligned.
- name: ubuntu-trace-logging | ||
display_name: "Ubuntu (Trace Logging Enabled)" | ||
run_on: ubuntu2204-arm64-large | ||
allowed_requesters: [ "patch", "ad_hoc" ] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For now this runs in the nightly build. Bad behavior in trace-level logging is something we should catch but isn't something I think we need to try to catch on every PR patch build.
Pull Request Test Coverage Report for Build jonathan.reams_3391Details
💛 - Coveralls |
What, How & Why?
This adds a builder that runs as part of the nightly build that runs our test suites with logging set to
all
. Because the log output can be 100s of MB per run, we only capture the logs if the tests fail, and we upload them directly to s3 rather than capturing them inline in the evergreen logs.This also fixes some UBSAN failures and one bug that only manifested when trace level logging was enabled.
☑️ ToDos
bindgen/spec.yml
, if public C++ API changed