-
Notifications
You must be signed in to change notification settings - Fork 1.6k
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
feat(codecs): add support for protobuf decoding #18019
feat(codecs): add support for protobuf decoding #18019
Conversation
✅ Deploy Preview for vector-project ready!
To edit notification comments on pull requests, go to your Netlify site configuration. |
✅ Deploy Preview for vrl-playground ready!
To edit notification comments on pull requests, go to your Netlify site configuration. |
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.
Thank you for submitting this work @Daniel599!
impl ProtobufDeserializer { | ||
/// Creates a new `ProtobufDeserializer`. | ||
pub fn new(desc_file: String, message_type: String) -> Self { | ||
// TODO: handle 'expect' in a better way |
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.
@pront can you please advise me what to do here?
I don't see any Deserializer
which returns a Result
in its new
method
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.
So here, I would make new
look like this:
pub fn new(message_descriptor: MessageDescriptor) -> Self {
Self { message_descriptor }
}
This way new
will always succeed.
Then do everything that can fail in a util:
fn get_message_descriptor(desc_file: String, message_type: String) -> Result<MessageDescriptor>
{ ... }
This will also gives us more flexibility in how we create a MessageDescriptor
.
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.
I made the requested change, but I still had to do unwrap()
before the new
. is that what you meant? I think I`m missing something
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.
We should avoid the unwrap
since it can turn a configuration problem into a crash. Instead we would need to pass the error up to the caller. In the case of the From
implementation, that would need to be turned into a TryFrom
, which can return a Result
. At some point in the chain of callers there will be a method that already returns a Result
and the error can be returned there, ideally with a context
indicating why the error occurred.
impl ProtobufDeserializer { | ||
/// Creates a new `ProtobufDeserializer`. | ||
pub fn new(desc_file: String, message_type: String) -> Self { | ||
// TODO: handle 'expect' in a better way |
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.
So here, I would make new
look like this:
pub fn new(message_descriptor: MessageDescriptor) -> Self {
Self { message_descriptor }
}
This way new
will always succeed.
Then do everything that can fail in a util:
fn get_message_descriptor(desc_file: String, message_type: String) -> Result<MessageDescriptor>
{ ... }
This will also gives us more flexibility in how we create a MessageDescriptor
.
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.
Thank you again @Daniel599, this is starting to look great.
Only a few things left before we can get this in:
- I replied to the following questions:
- Commit my suggestions. We can evaluate performance again after we ensure correctness. It can be another PR later, you already did a lot work in this one.
- Add test coverage for
prost_reflect::Value::List
andprost_reflect::Value::Map
. Just to make sure we hit all those branches. I noticed in the docs that some functions like this one may panic.
config.desc_file.clone(), | ||
config.message_type.clone(), | ||
) | ||
.unwrap(); |
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.
A try_from
might be better here.
@Daniel599 I tried to push a commit to fix the last remaining issues but I don't have permission to push. Can you merge this final-israel#1 to your branch? |
@pront Do I need to run |
impl ProtobufDeserializerConfig { | ||
/// Build the `ProtobufDeserializer` from this configuration. | ||
pub fn build(&self) -> ProtobufDeserializer { | ||
Into::<ProtobufDeserializer>::into(self) |
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.
It's simpler to just use from
here, which is what the above ends up calling anyways:
Into::<ProtobufDeserializer>::into(self) | |
ProtobufDeserializer::from(self) |
impl ProtobufDeserializerConfig { | ||
/// Creates a new `ProtobufDeserializerConfig`. | ||
pub fn new() -> Self { | ||
Default::default() | ||
} | ||
} |
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.
nit: I don't see that this method is actually being called anywhere, and it just calls the default
method anyways, so it seems fairly superfluous.
impl ProtobufDeserializer { | ||
/// Creates a new `ProtobufDeserializer`. | ||
pub fn new(desc_file: String, message_type: String) -> Self { | ||
// TODO: handle 'expect' in a better way |
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.
We should avoid the unwrap
since it can turn a configuration problem into a crash. Instead we would need to pass the error up to the caller. In the case of the From
implementation, that would need to be turned into a TryFrom
, which can return a Result
. At some point in the chain of callers there will be a method that already returns a Result
and the error can be returned there, ideally with a context
indicating why the error occurred.
desc_file: String, | ||
message_type: String, | ||
) -> vector_common::Result<MessageDescriptor> { | ||
let b = fs::read(desc_file.clone()) |
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.
I think this can be done without a clone
:
let b = fs::read(desc_file.clone()) | |
let b = fs::read(Path::new(&desc_file)) |
#[derive(Debug, Clone, Default)] | ||
pub struct ProtobufDeserializerConfig { | ||
/// Path to desc file | ||
desc_file: String, |
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.
File names should be stored in PathBuf
type instead of strings to avoid corner cases of illegal filenames.
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 is a great point. Changed the type.
desc_file: String, | ||
message_type: String, |
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 function doesn't need to take ownership of either string, so these can both be just &str
. Using an &Path
for the filename would be even better (see comment above).
if let Some(timestamp_key) = log_schema().timestamp_key() { | ||
let log = event.as_mut_log(); | ||
if !log.contains((PathPrefix::Event, timestamp_key)) { | ||
log.insert((PathPrefix::Event, timestamp_key), timestamp); |
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 interface is changing (today even). See #18097
Hi @Daniel599, please allow me to push commits to this PR (or just keep approving my commits like yesterday), I will help with the remaining details. I will address all @bruceg comments and try to get this merged today! |
Sorry but seems I cannot "allow edits" since it's an organization repository, see. |
a9ef83a
to
4a96827
Compare
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.
Will follow-up with another PR to refactor build()
to return a Result
and avoid unwrap
.
#[derive(Debug, Clone, Default)] | ||
pub struct ProtobufDeserializerConfig { | ||
/// Path to desc file | ||
desc_file: String, |
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 is a great point. Changed the type.
code-review fixes: handle unwraps and fix support for empty buffer as a message, allowed in protobuf.
code-review fixes: use `kind::any()` instead of `kind::json()`. use `unimplemented!()` instead of `todo!()`. in tests, add checks for List and Map. in `ProtobufDeserializer::new`, refactor out creation of MessageDescriptor. run `cargo fmt`.
code-review fixes: apply suggested refactor to `to_vrl`, it's slightly slower, might improve in following PR.
af70e71
to
e53532d
Compare
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.
regenerated the docs
Regression Detector ResultsRun ID: 34f72bfe-3105-4e90-85fe-6a32487ef76a ExplanationA regression test is an integrated performance test for Because a target's optimization goal performance in each experiment will vary somewhat each time it is run, we can only estimate mean differences in optimization goal relative to the baseline target. We express these differences as a percentage change relative to the baseline target, denoted "Δ mean %". These estimates are made to a precision that balances accuracy and cost control. We represent this precision as a 90.00% confidence interval denoted "Δ mean % CI": there is a 90.00% chance that the true value of "Δ mean %" is in that interval. We decide whether a change in performance is a "regression" -- a change worth investigating further -- if both of the following two criteria are true:
The table below, if present, lists those experiments that have experienced a statistically significant change in mean optimization goal performance between baseline and comparison SHAs with 90.00% confidence OR have been detected as newly erratic. Negative values of "Δ mean %" mean that baseline is faster, whereas positive values of "Δ mean %" mean that comparison is faster. Results that do not exhibit more than a ±5.00% change in their mean optimization goal are discarded. An experiment is erratic if its coefficient of variation is greater than 0.1. The abbreviated table will be omitted if no interesting change is observed. Changes in experiment optimization goals with confidence ≥ 90.00% and |Δ mean %| ≥ 5.00%:
Fine details of change detection per experiment.
|
@@ -95,6 +100,12 @@ base: components: sources: amqp: configuration: { | |||
} | |||
} | |||
} | |||
desc_file: { |
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.
Sorry, I didn't review this before but this desc_file
option should be nested under a protobuf
key like the gelf
and json
options you see here, are.
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.
Opened #18111 to move it.
@@ -142,6 +142,7 @@ fn deserializer_config_to_serializer(config: &DeserializerConfig) -> encoding::S | |||
// `message` field... but it's close enough for now. | |||
DeserializerConfig::Bytes => SerializerConfig::Text(TextSerializerConfig::default()), | |||
DeserializerConfig::Json { .. } => SerializerConfig::Json(JsonSerializerConfig::default()), | |||
DeserializerConfig::Protobuf(_) => unimplemented!(), |
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.
@neuronull is this OK?
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.
Thanks for the call out. I think this is OK for now. We don't have a serializer for protobuf yet, so there isn't any alternative really. This is similar to the OctetCounting framer in the function below.
When we get to the validation of components that operate over protobuf, we will have to add a task to implement a protobuf external resource. It's possible we'd have to implement a protobuf serializer at that time, to get full coverage of said components.
// TODO return a Result instead. | ||
ProtobufDeserializer::try_from(self).unwrap() |
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.
I know we said we'll follow up on this TODO but I think we should have resolved it before this was merged since otherwise we have to keep track of it to resolve before the next release. To that end I created this issue to track it: #18110 and put it in a new 0.32.0 milestone to make sure we resolve it prior to the next release.
Follow up to #18019 (comment) The option "namespacing" is per: https://github.com/vectordotdev/vector/blob/master/docs/specs/configuration.md#polymorphism Signed-off-by: Jesse Szwedko <jesse.szwedko@datadoghq.com>
Follow up to #18019 (comment) The option "namespacing" is per: https://github.com/vectordotdev/vector/blob/master/docs/specs/configuration.md#polymorphism Signed-off-by: Jesse Szwedko <jesse.szwedko@datadoghq.com>
# [1.33.0](answerbook/vector@v1.32.1...v1.33.0) (2024-01-03) ### Bug Fixes * allow empty message_key value in config (vectordotdev#18091) [8a2f8f6](answerbook/vector@8a2f8f6) - GitHub * **aws provider**: Don't unwap external_id (vectordotdev#18452) [77d12ee](answerbook/vector@77d12ee) - Jesse Szwedko * **azure_blob sink**: Base Content-Type on encoder and not compression (vectordotdev#18184) [4a049d4](answerbook/vector@4a049d4) - GitHub * **ci**: add missing env var (vectordotdev#17872) [7e6495c](answerbook/vector@7e6495c) - GitHub * **ci**: address issues in integration test suite workflow (vectordotdev#17928) [8b2447a](answerbook/vector@8b2447a) - GitHub * **ci**: Drop docker-compose from bootstrap install (vectordotdev#18407) [d9db2e0](answerbook/vector@d9db2e0) - Jesse Szwedko * **ci**: fix gardener move blocked to triage on comment (vectordotdev#18126) [93b1945](answerbook/vector@93b1945) - GitHub * **codecs**: Move protobuf codec options under a `protobuf` key (vectordotdev#18111) [36788d1](answerbook/vector@36788d1) - GitHub * **component validation**: make tests deterministic through absolute comparisons instead of bounds checks (vectordotdev#17956) [52a8036](answerbook/vector@52a8036) - GitHub * **config**: Fix TOML parsing of compression levels (vectordotdev#18173) [8fc574f](answerbook/vector@8fc574f) - GitHub * **demo gcp_pubsub internal_metrics source throttle transform**: Fix `interval` fractional second parsing (vectordotdev#17917) [b44a431](answerbook/vector@b44a431) - GitHub * **deps**: load default and legacy openssl providers (vectordotdev#18276) [8868b07](answerbook/vector@8868b07) - Jesse Szwedko * **dev**: fix issues when using container tools and `cargo` is not installed locally (vectordotdev#18112) [36111b5](answerbook/vector@36111b5) - GitHub * **dev**: fix Rust toolchain check in Makefile (vectordotdev#18218) [f77fd3d](answerbook/vector@f77fd3d) - GitHub * **docs, syslog source**: Correct docs for `syslog_ip` (vectordotdev#18003) [a1d3c3a](answerbook/vector@a1d3c3a) - GitHub * **docs**: add the 'http_client_requests_sent_total' (vectordotdev#18299) [2dcaf30](answerbook/vector@2dcaf30) - Jesse Szwedko * make LogEvent index operator test only (vectordotdev#18185) [0c1cf23](answerbook/vector@0c1cf23) - GitHub * **observability**: add all events that are being encoded (vectordotdev#18289) [c9ccee0](answerbook/vector@c9ccee0) - Jesse Szwedko * **opentelemetry source**: Remove the 4MB default for gRPC request decoding (vectordotdev#18306) [56177eb](answerbook/vector@56177eb) - Jesse Szwedko * propagate and display invalid JSON errors in VRL web playground (vectordotdev#17826) [8519cb1](answerbook/vector@8519cb1) - GitHub * propagate config build error instead of panicking (vectordotdev#18124) [8022464](answerbook/vector@8022464) - GitHub * **reload**: restart api server based on topology (vectordotdev#17958) [b00727e](answerbook/vector@b00727e) - GitHub * **spelling**: add spell check exception (vectordotdev#17906) [c4827e4](answerbook/vector@c4827e4) - GitHub * **splunk_hec source**: insert fields as event_path so names aren't parsed as a path (vectordotdev#17943) [1acf5b4](answerbook/vector@1acf5b4) - GitHub * **syslog source, docs**: Fix docs for `host` field for syslog source (vectordotdev#18453) [dd460a0](answerbook/vector@dd460a0) - Jesse Szwedko * **vdev**: Add `--features` with default features for vdev test (vectordotdev#17977) [eb4383f](answerbook/vector@eb4383f) - GitHub * **vector sink**: Add DataLoss error code as non-retryable (vectordotdev#17904) [4ef0b17](answerbook/vector@4ef0b17) - GitHub * **vector sink**: cert verification with proxy enabled (vectordotdev#17651) [45e24c7](answerbook/vector@45e24c7) - GitHub * **vector source**: Remove the 4MB default for requests (vectordotdev#18186) [4cc9cdf](answerbook/vector@4cc9cdf) - GitHub * **website**: Fix installer list for MacOS (vectordotdev#18364) [3b9144c](answerbook/vector@3b9144c) - Jesse Szwedko * **websocket sink**: send encoded message as binary frame (vectordotdev#18060) [b85f4f9](answerbook/vector@b85f4f9) - GitHub ### Chores * Add licenses to packages (vectordotdev#18006) [db9e47f](answerbook/vector@db9e47f) - GitHub * add more direct regression case for s3 sink (vectordotdev#18082) [c592cb1](answerbook/vector@c592cb1) - GitHub * added sink review checklist (vectordotdev#17799) [7f45949](answerbook/vector@7f45949) - GitHub * **api**: Refactor top and tap for library use (vectordotdev#18129) [600f819](answerbook/vector@600f819) - GitHub * **aws provider, external_docs**: Update the AWS authentication documentation (vectordotdev#18492) [9356c56](answerbook/vector@9356c56) - Jesse Szwedko * **azure_monitor_logs sink**: refactor to new sink style (vectordotdev#18172) [0aeb143](answerbook/vector@0aeb143) - GitHub * **CI**: Add missing `--use-consignor` flag on `smp` call (vectordotdev#17966) [7cae000](answerbook/vector@7cae000) - GitHub * **ci**: Bump docker/setup-buildx-action from 2.8.0 to 2.9.0 (vectordotdev#17907) [251c4c4](answerbook/vector@251c4c4) - GitHub * **ci**: Bump docker/setup-buildx-action from 2.9.0 to 2.9.1 (vectordotdev#17955) [77ffce8](answerbook/vector@77ffce8) - GitHub * **ci**: check for team membership on secret-requiring int tests (vectordotdev#17909) [9765809](answerbook/vector@9765809) - GitHub * **ci**: exclude protobuf files from spell checking (vectordotdev#18152) [34eaf43](answerbook/vector@34eaf43) - GitHub * **ci**: Feature branch should be checked against `CURRENT_BRANCH` [4742c2f](answerbook/vector@4742c2f) - Darin Spivey [LOG-18882](https://logdna.atlassian.net/browse/LOG-18882) * **ci**: fix gardener issues comment workflow (vectordotdev#17868) [e9f21a9](answerbook/vector@e9f21a9) - GitHub * **ci**: fix gardener issues comment workflow pt 2 (vectordotdev#17886) [57ea2b3](answerbook/vector@57ea2b3) - GitHub * **ci**: fix gardener issues comment workflow pt 3 (vectordotdev#17903) [98ca627](answerbook/vector@98ca627) - GitHub * **ci**: Fix integration test filter generation (vectordotdev#17914) [528fac3](answerbook/vector@528fac3) - GitHub * **ci**: fix k8s validate comment job logic (vectordotdev#17841) [99502bb](answerbook/vector@99502bb) - GitHub * **ci**: remove kinetic as it's no longer supported (vectordotdev#18540) [beb74c1](answerbook/vector@beb74c1) - Jesse Szwedko * **ci**: Remove path filter that runs all integration tests (vectordotdev#17908) [70632b7](answerbook/vector@70632b7) - GitHub * **ci**: save time int test workflow merge queue (vectordotdev#17869) [9581b35](answerbook/vector@9581b35) - GitHub * **ci**: Set HOMEBREW_NO_INSTALL_FROM_API in CI (vectordotdev#17867) [36174e2](answerbook/vector@36174e2) - GitHub * **CI**: Single Machine Performance: turn off consignor (vectordotdev#17967) [1dfc3e1](answerbook/vector@1dfc3e1) - GitHub * **CI**: Switch regression detector to new API and analysis service (vectordotdev#17912) [f808ea2](answerbook/vector@f808ea2) - GitHub * **CI**: Update `smp` to version 0.9.1 (vectordotdev#17964) [98e47c1](answerbook/vector@98e47c1) - GitHub * **ci**: Use GitHub App token for team membership rather than user PAT (vectordotdev#17936) [7774c49](answerbook/vector@7774c49) - GitHub * **codecs**: Update syslog_loose to properly handle escapes (vectordotdev#18114) [b009e4d](answerbook/vector@b009e4d) - GitHub * **core**: Expose shutdown errors (vectordotdev#18153) [cd8c8b1](answerbook/vector@cd8c8b1) - GitHub * **deps**: Bump `nkeys` to 0.3.2 (vectordotdev#18264) [a1dfd54](answerbook/vector@a1dfd54) - Jesse Szwedko * **deps**: Bump anyhow from 1.0.71 to 1.0.72 (vectordotdev#17986) [9a6ffad](answerbook/vector@9a6ffad) - GitHub * **deps**: Bump apache-avro from 0.14.0 to 0.15.0 (vectordotdev#17931) [d5b7fe6](answerbook/vector@d5b7fe6) - GitHub * **deps**: Bump assert_cmd from 2.0.11 to 2.0.12 (vectordotdev#17982) [fde77bd](answerbook/vector@fde77bd) - GitHub * **deps**: Bump async_graphql, async_graphql_warp from 5.0.10 to 6.0.0 (vectordotdev#18122) [7df6af7](answerbook/vector@7df6af7) - GitHub * **deps**: Bump async-compression from 0.4.0 to 0.4.1 (vectordotdev#17932) [5b1219f](answerbook/vector@5b1219f) - GitHub * **deps**: Bump async-trait from 0.1.68 to 0.1.71 (vectordotdev#17881) [53b2854](answerbook/vector@53b2854) - GitHub * **deps**: Bump async-trait from 0.1.71 to 0.1.72 (vectordotdev#18053) [bbe2c74](answerbook/vector@bbe2c74) - GitHub * **deps**: Bump async-trait from 0.1.72 to 0.1.73 (vectordotdev#18235) [20fa1bf](answerbook/vector@20fa1bf) - GitHub * **deps**: Bump axum from 0.6.18 to 0.6.19 (vectordotdev#18002) [52ac10a](answerbook/vector@52ac10a) - GitHub * **deps**: Bump axum from 0.6.19 to 0.6.20 (vectordotdev#18154) [0ddd221](answerbook/vector@0ddd221) - GitHub * **deps**: Bump bitmask-enum from 2.1.0 to 2.2.0 (vectordotdev#17833) [fc62e9c](answerbook/vector@fc62e9c) - GitHub * **deps**: Bump bitmask-enum from 2.2.0 to 2.2.1 (vectordotdev#17921) [6326f37](answerbook/vector@6326f37) - GitHub * **deps**: Bump bitmask-enum from 2.2.1 to 2.2.2 (vectordotdev#18236) [851e99c](answerbook/vector@851e99c) - GitHub * **deps**: Bump bstr from 1.5.0 to 1.6.0 (vectordotdev#17877) [17ccc56](answerbook/vector@17ccc56) - GitHub * **deps**: Bump clap from 4.3.19 to 4.3.21 (vectordotdev#18178) [0ae3d51](answerbook/vector@0ae3d51) - GitHub * **deps**: Bump clap_complete from 4.3.1 to 4.3.2 (vectordotdev#17878) [2126707](answerbook/vector@2126707) - GitHub * **deps**: Bump colored from 2.0.0 to 2.0.4 (vectordotdev#17876) [93f8144](answerbook/vector@93f8144) - GitHub * **deps**: Bump console-subscriber from 0.1.9 to 0.1.10 (vectordotdev#17844) [f74d5dd](answerbook/vector@f74d5dd) - GitHub * **deps**: Bump darling from 0.20.1 to 0.20.3 (vectordotdev#17969) [656b1fe](answerbook/vector@656b1fe) - GitHub * **deps**: Bump dashmap from 5.4.0 to 5.5.0 (vectordotdev#17938) [b535d18](answerbook/vector@b535d18) - GitHub * **deps**: Bump dyn-clone from 1.0.11 to 1.0.12 (vectordotdev#17987) [81de3e5](answerbook/vector@81de3e5) - GitHub * **deps**: Bump enum_dispatch from 0.3.11 to 0.3.12 (vectordotdev#17879) [bf1407c](answerbook/vector@bf1407c) - GitHub * **deps**: Bump gloo-utils from 0.1.7 to 0.2.0 (vectordotdev#18227) [e61c14f](answerbook/vector@e61c14f) - GitHub * **deps**: Bump governor from 0.5.1 to 0.6.0 (vectordotdev#17960) [467baab](answerbook/vector@467baab) - GitHub * **deps**: Bump indicatif from 0.17.5 to 0.17.6 (vectordotdev#18146) [a7c95dd](answerbook/vector@a7c95dd) - GitHub * **deps**: Bump indoc from 2.0.1 to 2.0.2 (vectordotdev#17843) [ed5bc3a](answerbook/vector@ed5bc3a) - GitHub * **deps**: Bump indoc from 2.0.2 to 2.0.3 (vectordotdev#17996) [3c25758](answerbook/vector@3c25758) - GitHub * **deps**: Bump infer from 0.14.0 to 0.15.0 (vectordotdev#17860) [97f4433](answerbook/vector@97f4433) - GitHub * **deps**: Bump inventory from 0.3.10 to 0.3.11 (vectordotdev#18070) [d8f211e](answerbook/vector@d8f211e) - GitHub * **deps**: Bump inventory from 0.3.6 to 0.3.8 (vectordotdev#17842) [bf2f975](answerbook/vector@bf2f975) - GitHub * **deps**: Bump inventory from 0.3.8 to 0.3.9 (vectordotdev#17995) [9c59fea](answerbook/vector@9c59fea) - GitHub * **deps**: Bump inventory from 0.3.9 to 0.3.10 (vectordotdev#18064) [684e43f](answerbook/vector@684e43f) - GitHub * **deps**: Bump lapin from 2.2.1 to 2.3.1 (vectordotdev#17974) [38719a3](answerbook/vector@38719a3) - GitHub * **deps**: Bump log from 0.4.19 to 0.4.20 (vectordotdev#18237) [cb007fe](answerbook/vector@cb007fe) - GitHub * **deps**: Bump lru from 0.10.1 to 0.11.0 (vectordotdev#17945) [4d4b393](answerbook/vector@4d4b393) - GitHub * **deps**: Bump metrics from 0.21.0 to 0.21.1 (vectordotdev#17836) [c8e1267](answerbook/vector@c8e1267) - GitHub * **deps**: Bump metrics-util from 0.15.0 to 0.15.1 (vectordotdev#17835) [f91d1b2](answerbook/vector@f91d1b2) - GitHub * **deps**: Bump nkeys from 0.3.0 to 0.3.1 (vectordotdev#18056) [087a0ac](answerbook/vector@087a0ac) - GitHub * **deps**: Bump no-proxy from 0.3.2 to 0.3.3 (vectordotdev#18094) [9458b6c](answerbook/vector@9458b6c) - GitHub * **deps**: Bump num-traits from 0.2.15 to 0.2.16 (vectordotdev#18039) [4de89f2](answerbook/vector@4de89f2) - GitHub * **deps**: Bump opendal from 0.38.0 to 0.38.1 (vectordotdev#17999) [90f494c](answerbook/vector@90f494c) - GitHub * **deps**: Bump OpenSSL base version to 3.1.* (vectordotdev#17669) [8454a6f](answerbook/vector@8454a6f) - GitHub * **deps**: Bump openssl from 0.10.55 to 0.10.56 (vectordotdev#18170) [09610b3](answerbook/vector@09610b3) - GitHub * **deps**: Bump paste from 1.0.12 to 1.0.13 (vectordotdev#17846) [51d8497](answerbook/vector@51d8497) - GitHub * **deps**: Bump paste from 1.0.13 to 1.0.14 (vectordotdev#17991) [a36d36e](answerbook/vector@a36d36e) - GitHub * **deps**: Bump pin-project from 1.1.1 to 1.1.2 (vectordotdev#17837) [17e6632](answerbook/vector@17e6632) - GitHub * **deps**: Bump pin-project from 1.1.2 to 1.1.3 (vectordotdev#18169) [e125eee](answerbook/vector@e125eee) - GitHub * **deps**: Bump proc-macro2 from 1.0.63 to 1.0.64 (vectordotdev#17922) [22b6c2b](answerbook/vector@22b6c2b) - GitHub * **deps**: Bump proc-macro2 from 1.0.64 to 1.0.66 (vectordotdev#17989) [fbc0308](answerbook/vector@fbc0308) - GitHub * **deps**: Bump quote from 1.0.29 to 1.0.31 (vectordotdev#17990) [6e552f0](answerbook/vector@6e552f0) - GitHub * **deps**: Bump quote from 1.0.31 to 1.0.32 (vectordotdev#18069) [dc2348a](answerbook/vector@dc2348a) - GitHub * **deps**: Bump rdkafka from 0.32.2 to 0.33.2 (vectordotdev#17891) [c8deeda](answerbook/vector@c8deeda) - GitHub * **deps**: Bump redis from 0.23.0 to 0.23.1 (vectordotdev#18107) [48abad4](answerbook/vector@48abad4) - GitHub * **deps**: Bump redis from 0.23.1 to 0.23.2 (vectordotdev#18234) [ec3b440](answerbook/vector@ec3b440) - GitHub * **deps**: Bump regex from 1.8.4 to 1.9.0 (vectordotdev#17874) [cb950b0](answerbook/vector@cb950b0) - GitHub * **deps**: Bump regex from 1.9.0 to 1.9.1 (vectordotdev#17915) [bc5822c](answerbook/vector@bc5822c) - GitHub * **deps**: Bump regex from 1.9.1 to 1.9.3 (vectordotdev#18167) [00037b0](answerbook/vector@00037b0) - GitHub * **deps**: Bump rmp-serde from 1.1.1 to 1.1.2 (vectordotdev#18054) [497fdce](answerbook/vector@497fdce) - GitHub * **deps**: Bump roaring from 0.10.1 to 0.10.2 (vectordotdev#18079) [f6c53d0](answerbook/vector@f6c53d0) - GitHub * **deps**: Bump ryu from 1.0.13 to 1.0.14 (vectordotdev#17848) [4613b36](answerbook/vector@4613b36) - GitHub * **deps**: Bump ryu from 1.0.14 to 1.0.15 (vectordotdev#17993) [f53c687](answerbook/vector@f53c687) - GitHub * **deps**: Bump schannel from 0.1.21 to 0.1.22 (vectordotdev#17850) [ae59be6](answerbook/vector@ae59be6) - GitHub * **deps**: Bump security-framework from 2.9.1 to 2.9.2 (vectordotdev#18051) [b305334](answerbook/vector@b305334) - GitHub * **deps**: Bump semver from 1.0.17 to 1.0.18 (vectordotdev#17998) [ca368d8](answerbook/vector@ca368d8) - GitHub * **deps**: Bump semver from 5.7.1 to 5.7.2 in /website (vectordotdev#17937) [784f3fe](answerbook/vector@784f3fe) - GitHub * **deps**: Bump serde from 1.0.167 to 1.0.168 (vectordotdev#17920) [3989791](answerbook/vector@3989791) - GitHub * **deps**: Bump serde from 1.0.168 to 1.0.171 (vectordotdev#17976) [66f4838](answerbook/vector@66f4838) - GitHub * **deps**: Bump serde from 1.0.171 to 1.0.173 (vectordotdev#18032) [b36c531](answerbook/vector@b36c531) - GitHub * **deps**: Bump serde from 1.0.173 to 1.0.174 (vectordotdev#18050) [437cad6](answerbook/vector@437cad6) - GitHub * **deps**: Bump serde from 1.0.174 to 1.0.175 (vectordotdev#18071) [16a42ed](answerbook/vector@16a42ed) - GitHub * **deps**: Bump serde from 1.0.175 to 1.0.180 (vectordotdev#18127) [e6f2ccc](answerbook/vector@e6f2ccc) - GitHub * **deps**: Bump serde from 1.0.180 to 1.0.181 (vectordotdev#18155) [2c51c5c](answerbook/vector@2c51c5c) - GitHub * **deps**: Bump serde from 1.0.181 to 1.0.183 (vectordotdev#18171) [6036d5c](answerbook/vector@6036d5c) - GitHub * **deps**: Bump serde_bytes from 0.11.11 to 0.11.12 (vectordotdev#17988) [04f9ddc](answerbook/vector@04f9ddc) - GitHub * **deps**: Bump serde_bytes from 0.11.9 to 0.11.11 (vectordotdev#17898) [b262316](answerbook/vector@b262316) - GitHub * **deps**: Bump serde_json from 1.0.100 to 1.0.102 (vectordotdev#17948) [4a377a7](answerbook/vector@4a377a7) - GitHub * **deps**: Bump serde_json from 1.0.102 to 1.0.103 (vectordotdev#17992) [0ebe7a7](answerbook/vector@0ebe7a7) - GitHub * **deps**: Bump serde_json from 1.0.103 to 1.0.104 (vectordotdev#18095) [00ed120](answerbook/vector@00ed120) - GitHub * **deps**: Bump serde_json from 1.0.99 to 1.0.100 (vectordotdev#17859) [1a427ed](answerbook/vector@1a427ed) - GitHub * **deps**: Bump serde_with from 3.0.0 to 3.1.0 (vectordotdev#18004) [39a2bf5](answerbook/vector@39a2bf5) - GitHub * **deps**: Bump serde_with from 3.1.0 to 3.2.0 (vectordotdev#18162) [be551c8](answerbook/vector@be551c8) - GitHub * **deps**: Bump serde_yaml from 0.9.22 to 0.9.24 (vectordotdev#18007) [3b91662](answerbook/vector@3b91662) - GitHub * **deps**: Bump serde_yaml from 0.9.24 to 0.9.25 (vectordotdev#18040) [7050b7e](answerbook/vector@7050b7e) - GitHub * **deps**: Bump smallvec from 1.10.0 to 1.11.0 (vectordotdev#17880) [46dc18a](answerbook/vector@46dc18a) - GitHub * **deps**: Bump snafu from 0.7.4 to 0.7.5 (vectordotdev#17919) [49714cf](answerbook/vector@49714cf) - GitHub * **deps**: Bump strip-ansi-escapes from 0.1.1 to 0.2.0 (vectordotdev#18203) [8bbe6a6](answerbook/vector@8bbe6a6) - GitHub * **deps**: Bump syn from 2.0.23 to 2.0.25 (vectordotdev#17970) [5dfede4](answerbook/vector@5dfede4) - GitHub * **deps**: Bump syn from 2.0.25 to 2.0.26 (vectordotdev#17994) [caf6103](answerbook/vector@caf6103) - GitHub * **deps**: Bump syn from 2.0.26 to 2.0.27 (vectordotdev#18042) [983a92a](answerbook/vector@983a92a) - GitHub * **deps**: Bump syn from 2.0.27 to 2.0.28 (vectordotdev#18117) [d3e5128](answerbook/vector@d3e5128) - GitHub * **deps**: Bump thiserror from 1.0.40 to 1.0.43 (vectordotdev#17900) [ea0f5b1](answerbook/vector@ea0f5b1) - GitHub * **deps**: Bump thiserror from 1.0.43 to 1.0.44 (vectordotdev#18052) [ee2396f](answerbook/vector@ee2396f) - GitHub * **deps**: Bump tikv-jemallocator from 0.5.0 to 0.5.4 (vectordotdev#18102) [564104e](answerbook/vector@564104e) - GitHub * **deps**: Bump to syn 2, serde_with 3, darling 0.20, and serde_derive_internals 0.28 (vectordotdev#17930) [3921a24](answerbook/vector@3921a24) - GitHub * **deps**: Bump tokio from 1.29.0 to 1.29.1 (vectordotdev#17811) [0454d9d](answerbook/vector@0454d9d) - GitHub * **deps**: Bump tokio from 1.29.1 to 1.30.0 (vectordotdev#18202) [92c2b9c](answerbook/vector@92c2b9c) - GitHub * **deps**: Bump tokio-tungstenite from 0.19.0 to 0.20.0 (vectordotdev#18065) [3968325](answerbook/vector@3968325) - GitHub * **deps**: Bump toml from 0.7.5 to 0.7.6 (vectordotdev#17875) [44d3a8c](answerbook/vector@44d3a8c) - GitHub * **deps**: Bump tower-http from 0.4.1 to 0.4.2 (vectordotdev#18030) [9b4cd44](answerbook/vector@9b4cd44) - GitHub * **deps**: Bump tower-http from 0.4.2 to 0.4.3 (vectordotdev#18055) [f1d4196](answerbook/vector@f1d4196) - GitHub * **deps**: Bump typetag from 0.2.10 to 0.2.11 (vectordotdev#18048) [5bccafe](answerbook/vector@5bccafe) - GitHub * **deps**: Bump typetag from 0.2.11 to 0.2.12 (vectordotdev#18066) [b70074c](answerbook/vector@b70074c) - GitHub * **deps**: Bump typetag from 0.2.8 to 0.2.9 (vectordotdev#17882) [b10d070](answerbook/vector@b10d070) - GitHub * **deps**: Bump typetag from 0.2.9 to 0.2.10 (vectordotdev#17968) [f4b1111](answerbook/vector@f4b1111) - GitHub * **deps**: Bump uuid from 1.4.0 to 1.4.1 (vectordotdev#18001) [60e765d](answerbook/vector@60e765d) - GitHub * **deps**: Bump zstd from 0.12.3+zstd.1.5.2 to 0.12.4 (vectordotdev#18031) [752056c](answerbook/vector@752056c) - GitHub * **deps**: Remove an unneeded advisory ignore (vectordotdev#18226) [01295b0](answerbook/vector@01295b0) - GitHub * **deps**: Swap out bloom crate for bloomy (vectordotdev#17911) [d592b0c](answerbook/vector@d592b0c) - GitHub * **deps**: Swap tui crate for ratatui (vectordotdev#18225) [8838faf](answerbook/vector@8838faf) - GitHub * **deps**: Update to Rust 1.71.0 (vectordotdev#18075) [1dd505f](answerbook/vector@1dd505f) - GitHub * **deps**: Update tokio-util fork to 0.7.8 (vectordotdev#18078) [421b421](answerbook/vector@421b421) - GitHub * **deps**: Upgrade debian usages to use bookworm (vectordotdev#18057) [fecca5e](answerbook/vector@fecca5e) - GitHub * **deps**: Upgrade to Rust 1.71.1 (vectordotdev#18221) [eaed0a8](answerbook/vector@eaed0a8) - GitHub * **deps**: Upgrading version of lading used (vectordotdev#18210) [91e48f6](answerbook/vector@91e48f6) - GitHub * **dev**: Fix package install in Tiltfile (vectordotdev#18198) [f39a0e9](answerbook/vector@f39a0e9) - GitHub * **dev**: Install dd-rust-license-tool from crates.io (vectordotdev#18025) [7d0db6b](answerbook/vector@7d0db6b) - GitHub * **dev**: Mark loki-logproto crate as unpublished (vectordotdev#17979) [5dd2084](answerbook/vector@5dd2084) - GitHub * **docs**: Add macOS troubleshooting section to VRL web playground (vectordotdev#17824) [0fbdb33](answerbook/vector@0fbdb33) - GitHub * **docs**: Fix links in CONTRIBUTING.md (vectordotdev#18061) [250cc95](answerbook/vector@250cc95) - GitHub * **docs**: Remove mentions of deprecated transforms from guides (vectordotdev#17933) [37fb02b](answerbook/vector@37fb02b) - GitHub * **external docs**: update sink tutorials with Data Volume tag changes (vectordotdev#18148) [b2d23a8](answerbook/vector@b2d23a8) - GitHub * Install script supports Apple ARM with Rosetta (vectordotdev#18016) [fd10e69](answerbook/vector@fd10e69) - GitHub * **observability**: add tests to sinks for Data Volume tags (vectordotdev#17853) [4915b42](answerbook/vector@4915b42) - GitHub * **observability**: consolidate `EventCountTags` with `TaggedEventsSent` (vectordotdev#17865) [81f5c50](answerbook/vector@81f5c50) - GitHub * **observability**: count byte_size after transforming event (vectordotdev#17941) [0bf6abd](answerbook/vector@0bf6abd) - GitHub * **observability**: Fix a couple typos with the registered event cache (vectordotdev#17809) [205300b](answerbook/vector@205300b) - GitHub * **releasing**: Add 0.32.0 highlight for legacy OpenSSL provider deprecation (vectordotdev#18263) [1a32e96](answerbook/vector@1a32e96) - Jesse Szwedko * **releasing**: Add known issues for v0.32.0 (vectordotdev#18298) [38e95b5](answerbook/vector@38e95b5) - Jesse Szwedko * **releasing**: Add note about protobuf codec addition for 0.32.0 release (vectordotdev#18275) [91f7612](answerbook/vector@91f7612) - Jesse Szwedko * **releasing**: Add upgrade note for 0.31.0 about S3 path changes (vectordotdev#17934) [f8461cb](answerbook/vector@f8461cb) - GitHub * **releasing**: Bump Vector to 0.32.0 (vectordotdev#17887) [9c0d2f2](answerbook/vector@9c0d2f2) - GitHub * **releasing**: Fix link in v0.31.0 release docs (vectordotdev#17888) [1260c83](answerbook/vector@1260c83) - GitHub * **releasing**: Fix markdown syntax in minor release template (vectordotdev#17890) [0735ffe](answerbook/vector@0735ffe) - GitHub * **releasing**: Prepare v0.31.0 release [aeccd26](answerbook/vector@aeccd26) - Jesse Szwedko * **releasing**: Prepare v0.32.0 release [1b403e1](answerbook/vector@1b403e1) - Jesse Szwedko * **releasing**: Prepare v0.32.1 release [9965884](answerbook/vector@9965884) - Jesse Szwedko * **releasing**: Prepare v0.32.2 release [0982551](answerbook/vector@0982551) - Jesse Szwedko * **releasing**: Regenerate k8s manifests with v0.23.0 of the chart (vectordotdev#17892) [604fea0](answerbook/vector@604fea0) - GitHub * **releasing**: Run hadolint on distributed Dockerfiles (vectordotdev#18224) [ad08d01](answerbook/vector@ad08d01) - GitHub * replace path tuples with actual target paths (vectordotdev#18139) [8068f1d](answerbook/vector@8068f1d) - GitHub * replace various string paths with actual paths (vectordotdev#18109) [d8eefe3](answerbook/vector@d8eefe3) - GitHub * **security**: Make the warning for the deprecated OpenSSL provider more verbose (vectordotdev#18278) [042fb51](answerbook/vector@042fb51) - Jesse Szwedko * separate hanwritten and generated files in web-playground (vectordotdev#17871) [9ec0443](answerbook/vector@9ec0443) - GitHub * stop ignoring topology test (vectordotdev#17953) [a05542a](answerbook/vector@a05542a) - GitHub * update `rustls-webpki` due to security advisory (vectordotdev#18344) [1cb51a4](answerbook/vector@1cb51a4) - Jesse Szwedko * Update `smp` to its latest released version (vectordotdev#18204) [7603d28](answerbook/vector@7603d28) - GitHub ### Features * **adaptive_concurrency**: support configuring the initial ARC limit (vectordotdev#18175) [3b53bcd](answerbook/vector@3b53bcd) - GitHub * add support for `external_id` in AWS assume role (vectordotdev#17743) [689a79e](answerbook/vector@689a79e) - GitHub * **clickhouse sink**: make `database` and `table` templateable (vectordotdev#18005) [536a7f1](answerbook/vector@536a7f1) - GitHub * **codecs**: add support for protobuf decoding (vectordotdev#18019) [a06c711](answerbook/vector@a06c711) - GitHub * **component validation**: validate `component_errors_total` for sources (vectordotdev#17965) [aa60520](answerbook/vector@aa60520) - GitHub * **deps, vrl**: Update VRL to 0.6.0 (vectordotdev#18150) [adfef2e](answerbook/vector@adfef2e) - GitHub * emit an error if the condition return type is not a boolean (vectordotdev#18196) [caf6103](answerbook/vector@caf6103) - GitHub * LogSchema metadata key refacoring (vectordotdev#18099) [a8bb9f4](answerbook/vector@a8bb9f4) - GitHub * Migrate `LogSchema` `source_type_key` to new lookup code (vectordotdev#17947) [d29424d](answerbook/vector@d29424d) - GitHub * Migrate LogSchema::host_key to new lookup code (vectordotdev#17972) [32950d8](answerbook/vector@32950d8) - GitHub * Migrate LogSchema::message_key to new lookup code (vectordotdev#18024) [0f14c0d](answerbook/vector@0f14c0d) - GitHub * Migrate LogSchema::metadata key to new lookup code (vectordotdev#18058) [8663602](answerbook/vector@8663602) - GitHub * migrate to `async_nats` client (vectordotdev#18165) [483e46f](answerbook/vector@483e46f) - GitHub * **new sink**: Adding greptimedb metrics sink (vectordotdev#17198) [98f44ae](answerbook/vector@98f44ae) - GitHub * **new sink**: Initial `datadog_events` sink (vectordotdev#7678) [53fc86a](answerbook/vector@53fc86a) - Jesse Szwedko * Refactor 'event.get()' to use path types (vectordotdev#18160) [e476e12](answerbook/vector@e476e12) - GitHub * Refactor dnstap to use 'OwnedValuePath's (vectordotdev#18212) [ca7fa05](answerbook/vector@ca7fa05) - GitHub * Refactor TraceEvent insert to use TargetPath compatible types (vectordotdev#18090) [f015b29](answerbook/vector@f015b29) - GitHub * replace LogEvent 'String's with '&OwnedTargetPath's (vectordotdev#18084) [065eecb](answerbook/vector@065eecb) - GitHub * replace tuples with &OwnedTargetPath wherever possible (vectordotdev#18097) [28f5c23](answerbook/vector@28f5c23) - GitHub * switch to crates.io release of Azure SDK (vectordotdev#18166) [3c535ec](answerbook/vector@3c535ec) - GitHub ### Miscellaneous * Merge pull request vectordotdev#379 from answerbook/feature/LOG-18882 [8bd9860](answerbook/vector@8bd9860) - GitHub [LOG-18882](https://logdna.atlassian.net/browse/LOG-18882) * Merge branch 'master' into feature/LOG-18882 [d217387](answerbook/vector@d217387) - Darin Spivey [LOG-18882](https://logdna.atlassian.net/browse/LOG-18882) * Merge tag 'v0.32.2' into feature/LOG-18882 [c05f969](answerbook/vector@c05f969) - Darin Spivey [LOG-18882](https://logdna.atlassian.net/browse/LOG-18882) * Managed by Terraform provider [92e320a](answerbook/vector@92e320a) - Terraform * 0.32.0.cue typo (vectordotdev#18270) [0f7d6e6](answerbook/vector@0f7d6e6) - Jesse Szwedko * add PGO information (vectordotdev#18369) [3040ae2](answerbook/vector@3040ae2) - Jesse Szwedko * check VRL conditions return type at compile time (vectordotdev#17894) [fa489f8](answerbook/vector@fa489f8) - GitHub * **ci**: combine build steps for integration test workflows (vectordotdev#17724) [911477a](answerbook/vector@911477a) - GitHub * describe the difference between configuration fields and runtime flags (vectordotdev#17784) [01e2dfa](answerbook/vector@01e2dfa) - GitHub * **elasticsearch sink**: Allow empty data_stream fields (vectordotdev#18193) [1dd7bb1](answerbook/vector@1dd7bb1) - GitHub * **file source**: fix some typos (vectordotdev#18401) [1164f55](answerbook/vector@1164f55) - Jesse Szwedko * Fix "Bring your own toolbox" in `DEVELOPING.md` (vectordotdev#18014) [115bd7b](answerbook/vector@115bd7b) - GitHub * Fix schema.log_namespace and telemetry.tags documentation (vectordotdev#17961) [50736e2](answerbook/vector@50736e2) - GitHub * **internal docs**: Fix basic sink tutorial issues (vectordotdev#18136) [5a6ce73](answerbook/vector@5a6ce73) - GitHub * **lua transform**: Emit events with the `source_id` set (vectordotdev#17870) [bc1b83a](answerbook/vector@bc1b83a) - GitHub * **observability**: add fixed tag option to `RegisteredEventCache` (vectordotdev#17814) [bc86222](answerbook/vector@bc86222) - GitHub * **prometheus_scrape source**: run requests in parallel with timeouts (vectordotdev#18021) [a9df958](answerbook/vector@a9df958) - GitHub
Hi
addresses: #9744
please note some of the 'TODOs' where I would your feedback.
This PR adds support for choosing a protobuf decoder for a source(e.g kafka)
The user provides a protobuf desc file and a 'message type', each message within the topic should be of 'message type'