add extension method for prost::Message for encoding to Bytes#11344
Merged
Conversation
illicitonion
approved these changes
Dec 19, 2020
| let bytes_to_store = bincode::serialize(&PlatformAndResponseBytes { | ||
| platform: result.platform, | ||
| response_bytes, | ||
| response_bytes: response_bytes.to_vec(), |
Contributor
There was a problem hiding this comment.
Maybe change the type of response_bytes to Bytes to avoid the copy here?
Contributor
Author
There was a problem hiding this comment.
I thought about that but, given this is stored in the LMDB local cache, I would then need to reason about whether there is a difference in the encoding of PlatformAndResponseBytes between the Vec<u8> and Bytes forms of this field. And, if there is a difference, then Pants would fail to decode users' existing cache entries which is backwards incompatible. That's too much complexity for what this PR does. That conversion should be done in a separate PR if wanted.
tdyas
pushed a commit
that referenced
this pull request
Dec 20, 2020
### Problem #11344 introduced a `.to_bytes()` helper for protobuf messages. However, in one spot, this introduced a unnecessary copy because the result is converted to a `Vec<u8>` immediately. ### Solution Remove the unnecessary copy by encoding into a `Vec<u8>` directly. It might be possible to switch the `PlatformAndResponseBytes` struct to use `Bytes` instead of `Vec<u8>` but that would require reasoning about whether it would change the format of the struct when stored in the cache, which I want to avoid having to do for now. ### Result Existing tests pass.
Merged
stuhood
added a commit
that referenced
this pull request
Dec 29, 2020
### Internal Changes * Fix too many line breaks for options in docs site ([#11377](#11377)) * Use more newlines in options help messages ([#11372](#11372)) * Fix some newlines not rendering correctly on docsite ([#11371](#11371)) * Fix formatting for `./pants subsystems` and `./pants targets` ([#11368](#11368)) * Simplify `generate_docs.py` to no longer require manually generating the input data ([#11363](#11363)) * Use the whole description for `./pants help $subsystem` ([#11361](#11361)) * Use newlines in `./pants help $target_type` ([#11355](#11355)) * [internal] Install rustup on the lint shards. ([#11392](#11392)) * Install Rust through global, pre-installed Rustup ([#11256](#11256)) * Revert "Add goals to run_info (#11374)" ([#11379](#11379)) * Add goals to run_info ([#11374](#11374)) * Update all rust dependencies within their declared ranges. ([#11366](#11366)) * Update to nails 0.11.0. ([#11370](#11370)) * cleanup some futures-related references ([#11360](#11360)) * [internal] Switch to toolchain pants plugin ([#11357](#11357)) * Simplify and fix the @ensure_daemon decorator. ([#11356](#11356)) * restore some try_future uses that were recently removed ([#11353](#11353)) * remove all remaining uses of futures v0.1.x (in favor of v0.3.x) ([#11352](#11352)) * Prepare the 1.30.2 release notes. ([#11351](#11351)) * remove remaining futures v0.1.x uses from fs/store and downstream callers ([#11346](#11346)) * fix Prost revision that did not get updated in prior PR ([#11345](#11345)) * add extension method for prost::Message for encoding to Bytes ([#11344](#11344)) * Stop installing Cmake, Go, and Protoc when bootstrapping Rust ([#11336](#11336)) * Automatically set the version in generate_docs.py ([#11337](#11337)) * Prepare 2.1.1. ([#11334](#11334)) * Prepare 2.0.1. ([#11333](#11333)) * Prepare the 1.30.2rc3 release notes. ([#11327](#11327)) * Prepare 2.0.1rc4 (again). ([#11323](#11323)) * Add type annotations around Subsystem class ([#11389](#11389)) * Support deprecation_start_version in help info. ([#11350](#11350)) [ci skip-rust]
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follow-up to #11307 (comment) to add a
to_byteshelper as an extension function to encodeprost::Messageprotobuf types toBytes. Includes roundtrip unit test.