[
https://issues.apache.org/jira/browse/AVRO-3752?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Fedor Telnov updated AVRO-3752:
-------------------------------
Description:
I'm going to speak about Rust implementation(crate) of Avro named
"apache-avro"([crates.io|[https://crates.io/crates/apache-avro]).]
Currently, union resolving is implemented as "iterate through listed schemas
and find the first that matches given value". Process of finding requires
schemas validation against that value. Validation method contains single
"error!" macro invocation.
So, even if union contains relevant schema as variant, previous bad matches
would throw error! log macro. In result, with big unions, you get a flooded
logs.
My proposition is to write separate "validate" method that won't invoke error!
macro and use it during union resolution.
UPD: It seems that problem only occurs when complex types are included in union
schema, see example in comments.
was:
I'm going to speak about Rust implementation(crate) of Avro named
"apache-avro"([crates.io|[https://crates.io/crates/apache-avro]).]
Currently, union resolving is implemented as "iterate through listed schemas
and find the first that matches given value". Process of finding requires
schemas validation against that value. Validation method contains single
"error!" macro invocation.
So, even if union contains relevant schema as variant, previous bad matches
would throw error! log macro. In result, with big unions, you get a flooded
logs.
My proposition is to write separate "validate" method that won't invoke error!
macro and use it during union resolution.
> [Rust] Logging flood during Union resolving
> -------------------------------------------
>
> Key: AVRO-3752
> URL: https://issues.apache.org/jira/browse/AVRO-3752
> Project: Apache Avro
> Issue Type: Improvement
> Components: rust
> Reporter: Fedor Telnov
> Priority: Minor
>
> I'm going to speak about Rust implementation(crate) of Avro named
> "apache-avro"([crates.io|[https://crates.io/crates/apache-avro]).]
> Currently, union resolving is implemented as "iterate through listed schemas
> and find the first that matches given value". Process of finding requires
> schemas validation against that value. Validation method contains single
> "error!" macro invocation.
> So, even if union contains relevant schema as variant, previous bad matches
> would throw error! log macro. In result, with big unions, you get a flooded
> logs.
> My proposition is to write separate "validate" method that won't invoke
> error! macro and use it during union resolution.
> UPD: It seems that problem only occurs when complex types are included in
> union schema, see example in comments.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)