You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@avro.apache.org by "ASF subversion and git services (Jira)" <ji...@apache.org> on 2024/07/08 11:30:00 UTC
[jira] [Commented] (AVRO-3904) [rust] Sometimes when calculating schema compatibility the code panics but maybe it should not
[ https://issues.apache.org/jira/browse/AVRO-3904?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17863757#comment-17863757 ]
ASF subversion and git services commented on AVRO-3904:
-------------------------------------------------------
Commit 708daa2b42ae6c37343cb8ad987303aaf8476afa in avro's branch refs/heads/branch-1.11 from Marcos Schroh
[ https://gitbox.apache.org/repos/asf?p=avro.git;h=708daa2b4 ]
AVRO-3904: [Rust] return a Result when checking schema compatibility so the end users will have feedback in case or errors
Co-authored-by: Marcos Schroh <ma...@kpn.com>
(cherry picked from commit 1cea6907a24773bdc5d7282fdd90e92b6aef0ab3)
> [rust] Sometimes when calculating schema compatibility the code panics but maybe it should not
> ----------------------------------------------------------------------------------------------
>
> Key: AVRO-3904
> URL: https://issues.apache.org/jira/browse/AVRO-3904
> Project: Apache Avro
> Issue Type: Improvement
> Components: rust
> Reporter: Marcos Schroh
> Assignee: Christophe Le Saec
> Priority: Minor
> Labels: pull-request-available, rust
> Fix For: 1.12.0, 1.11.4
>
> Time Spent: 7h 20m
> Remaining Estimate: 0h
>
> When calculating the *schema compatibility can read* (schema A can read or not an event written using a schema B) we expect a *true* or *false* result, but in some cases the code *panics with a message* (reason of schema not being compatible) which I think it should not.
> Example:
> {code:js}
> let schema_1 = Schema::parse_str(
> r#"{
> "type": "record",
> "name": "StatisticsMap",
> "fields": [
> {"name": "success", "type": {"type": "map", "values": "int"}}
> ]
> }"#)?;
> let schema_2 = Schema::parse_str(
> r#"{
> "type": "record",
> "name": "StatisticsMap",
> "fields": [
> {"name": "success", "type": ["null", {"type": "map", "values": "int"}], "default": null}
> ]
> }"#)?
> assert!(SchemaCompatibility::can_read(&schema_1, &schema_2)); # true as expected
> assert!(SchemaCompatibility::can_read(&schema_2, &schema_1)); # expected result false!!
> The application panicked (crashed).
> Message: internal error: entered unreachable code: writers_schema should have been Schema::Map
>
> {code}
> PS: If the intention is to give feedback to end users when schemas are not compatible then it makes sense the panic (maybe a Result should be better?) but the feedback should be present every time that the result is {*}false{*}, which is not the case.
> I have a PR ready to fix this in case that we want to change the current behaviour
--
This message was sent by Atlassian Jira
(v8.20.10#820010)