Skip to content

refactor: Optimized clamp_debug_len.#9793

Open
daniel-wong-dfinity-org wants to merge 3 commits intomasterfrom
optimize-clamp_debug_len-daniel-wong
Open

refactor: Optimized clamp_debug_len.#9793
daniel-wong-dfinity-org wants to merge 3 commits intomasterfrom
optimize-clamp_debug_len-daniel-wong

Conversation

@daniel-wong-dfinity-org
Copy link
Copy Markdown
Contributor

The problem before is that if the object was huge (e.g. contained a WASM), it would generate the entire String and then, throw away most of it.

One downside of this is that this no longer shows the tail of the object. This is an unfortunate trade off, but it seems to be a net win.

@daniel-wong-dfinity-org daniel-wong-dfinity-org changed the title Optimized clamp_debug_len. refactor: Optimized clamp_debug_len. Apr 9, 2026
@daniel-wong-dfinity-org daniel-wong-dfinity-org marked this pull request as ready for review April 9, 2026 14:07
@daniel-wong-dfinity-org daniel-wong-dfinity-org requested a review from a team as a code owner April 9, 2026 14:07
Copy link
Copy Markdown
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This pull request changes code owned by the Governance team. Therefore, make sure that
you have considered the following (for Governance-owned code):

  1. Update unreleased_changelog.md (if there are behavior changes, even if they are
    non-breaking).

  2. Are there BREAKING changes?

  3. Is a data migration needed?

  4. Security review?

How to Satisfy This Automatic Review

  1. Go to the bottom of the pull request page.

  2. Look for where it says this bot is requesting changes.

  3. Click the three dots to the right.

  4. Select "Dismiss review".

  5. In the text entry box, respond to each of the numbered items in the previous
    section, declare one of the following:

  • Done.

  • $REASON_WHY_NO_NEED. E.g. for unreleased_changelog.md, "No
    canister behavior changes.", or for item 2, "Existing APIs
    behave as before.".

Brief Guide to "Externally Visible" Changes

"Externally visible behavior change" is very often due to some NEW canister API.

Changes to EXISTING APIs are more likely to be "breaking".

If these changes are breaking, make sure that clients know how to migrate, how to
maintain their continuity of operations.

If your changes are behind a feature flag, then, do NOT add entrie(s) to
unreleased_changelog.md in this PR! But rather, add entrie(s) later, in the PR
that enables these changes in production.

Reference(s)

For a more comprehensive checklist, see here.

GOVERNANCE_CHECKLIST_REMINDER_DEDUP

Comment on lines +53 to +58
if s.len() >= 3 {
s.truncate(s.len() - 3);
s.push_str("...");
} else {
s.push_str("...");
}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The .truncate() works on bytes and it panics if the new_len lies on the char boundary. I don't think it's likely, but we shouldn't panic for debugging.

BTW, for the following suggestion, the simplification to move .push_str("..."); out is just nitpicking. I'm fine with either way.

Suggested change
if s.len() >= 3 {
s.truncate(s.len() - 3);
s.push_str("...");
} else {
s.push_str("...");
}
if s.len() >= 3 {
for _ in 0..3 {
s.pop();
}
}
s.push_str("...");

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants