[
https://issues.apache.org/jira/browse/AVRO-3102?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Stephen Flavin updated AVRO-3102:
---------------------------------
Description:
*Steps to replicate:*
1. Use the maven plugin with the following avdl
{noformat}
@namespace("org.example")
protocol TestService {
record MaybeLogicalTypes {
union {null, date} dateType = null;
union {null, time_ms} timeMsType = null;
union {null, timestamp_ms} timestampMsType = null;
}
MaybeLogicalTypes getMaybeLogicalTypes();
}{noformat}
2. Implement the TestService that returns a MaybeLogicalTypes object with the
values populated and start a server e.g.
{code:java}
Responder responder = new SpecificResponder(TestService.class,
testServiceImpl);
Server server = new NettyServer(responder,
new InetSocketAddress("127.0.0.1", port));
server.start();
{code}
3. Run the client code to request a MaybeLogicalTypes object.
{code:java}
SpecificRequestor.getClient(TestService.class, new
HttpTransceiver(url)).getMaybeLogicalTypes(){code}
The client will error when any of the fields are populated, e.g. timestamp_ms
{noformat}
org.apache.avro.AvroRuntimeException: Unknown datum type java.time.Instant:
2021-03-31T11:26:20.123888Z
at
org.apache.avro.ipc.specific.SpecificRequestor.readError(SpecificRequestor.java:160)
~[avro-ipc-1.10.2.jar:1.10.2]
at
org.apache.avro.ipc.Requestor$Response.getResponse(Requestor.java:566)
~[avro-ipc-1.10.2.jar:1.10.2]
at
org.apache.avro.ipc.Requestor$TransceiverCallback.handleResult(Requestor.java:366)
~[avro-ipc-1.10.2.jar:1.10.2]
at
org.apache.avro.ipc.Requestor$TransceiverCallback.handleResult(Requestor.java:330)
~[avro-ipc-1.10.2.jar:1.10.2]
at
org.apache.avro.ipc.Transceiver.transceive(Transceiver.java:73)
~[avro-ipc-1.10.2.jar:1.10.2]
at
org.apache.avro.ipc.Requestor.request(Requestor.java:152)
~[avro-ipc-1.10.2.jar:1.10.2]
at
org.apache.avro.ipc.Requestor.request(Requestor.java:101)
~[avro-ipc-1.10.2.jar:1.10.2]
at
org.apache.avro.ipc.specific.SpecificRequestor.invoke(SpecificRequestor.java:108)
~[avro-ipc-1.10.2.jar:1.10.2]
{noformat}
was:
*Steps to replicate:*
1. Use the maven plugin with the following avdl
{noformat}
@namespace("org.example")
protocol TestService {
record MaybeLogicalTypes {
union {null, date} dateType = null;
union {null, time_ms} timeMsType = null;
union {null, timestamp_ms} timestampMsType = null;
}
MaybeLogicalTypes getMaybeLogicalTypes();
}{noformat}
2. Implement the TestService that returns a MaybeLogicalTypes object with the
values populated and start a server e.g.
{code:java}
Responder responder = new SpecificResponder(TestService.class,
testServiceImpl);
Server server = new NettyServer(responder,
new InetSocketAddress("127.0.0.1", port));
server.start();
{code}
3. Run the client code to request a MaybeLogicalTypes object.
{code:java}
SpecificRequestor.getClient(TestService.class, new
HttpTransceiver(url)).getMaybeLogicalTypes(){code}
The client will error when any of the fields are populated
{noformat}
org.apache.avro.AvroRuntimeException: Unknown datum type java.time.Instant:
2021-03-31T11:26:20.123888Z
at
org.apache.avro.ipc.specific.SpecificRequestor.readError(SpecificRequestor.java:160)
~[avro-ipc-1.10.2.jar:1.10.2]
at
org.apache.avro.ipc.Requestor$Response.getResponse(Requestor.java:566)
~[avro-ipc-1.10.2.jar:1.10.2]
at
org.apache.avro.ipc.Requestor$TransceiverCallback.handleResult(Requestor.java:366)
~[avro-ipc-1.10.2.jar:1.10.2]
at
org.apache.avro.ipc.Requestor$TransceiverCallback.handleResult(Requestor.java:330)
~[avro-ipc-1.10.2.jar:1.10.2]
at
org.apache.avro.ipc.Transceiver.transceive(Transceiver.java:73)
~[avro-ipc-1.10.2.jar:1.10.2]
at
org.apache.avro.ipc.Requestor.request(Requestor.java:152)
~[avro-ipc-1.10.2.jar:1.10.2]
at
org.apache.avro.ipc.Requestor.request(Requestor.java:101)
~[avro-ipc-1.10.2.jar:1.10.2]
at
org.apache.avro.ipc.specific.SpecificRequestor.invoke(SpecificRequestor.java:108)
~[avro-ipc-1.10.2.jar:1.10.2]
{noformat}
> Avro Java IPC SpecificRequestor fails to convert union null + logical type
> fields
> ---------------------------------------------------------------------------------
>
> Key: AVRO-3102
> URL: https://issues.apache.org/jira/browse/AVRO-3102
> Project: Apache Avro
> Issue Type: Bug
> Components: java, logical types
> Affects Versions: 1.10.2
> Environment: Avro Version
> * Avro IPC [1.10.2]
> * Avro maven plugin [1.10.2]
> Java Version [11]
> Reporter: Stephen Flavin
> Priority: Minor
>
> *Steps to replicate:*
> 1. Use the maven plugin with the following avdl
> {noformat}
> @namespace("org.example")
> protocol TestService {
> record MaybeLogicalTypes {
> union {null, date} dateType = null;
> union {null, time_ms} timeMsType = null;
> union {null, timestamp_ms} timestampMsType = null;
> }
> MaybeLogicalTypes getMaybeLogicalTypes();
> }{noformat}
> 2. Implement the TestService that returns a MaybeLogicalTypes object with the
> values populated and start a server e.g.
> {code:java}
> Responder responder = new SpecificResponder(TestService.class,
> testServiceImpl);
> Server server = new NettyServer(responder,
> new InetSocketAddress("127.0.0.1", port));
> server.start();
> {code}
> 3. Run the client code to request a MaybeLogicalTypes object.
> {code:java}
> SpecificRequestor.getClient(TestService.class, new
> HttpTransceiver(url)).getMaybeLogicalTypes(){code}
> The client will error when any of the fields are populated, e.g. timestamp_ms
> {noformat}
>
> org.apache.avro.AvroRuntimeException: Unknown datum type java.time.Instant:
> 2021-03-31T11:26:20.123888Z
> at
> org.apache.avro.ipc.specific.SpecificRequestor.readError(SpecificRequestor.java:160)
> ~[avro-ipc-1.10.2.jar:1.10.2]
> at
> org.apache.avro.ipc.Requestor$Response.getResponse(Requestor.java:566)
> ~[avro-ipc-1.10.2.jar:1.10.2]
> at
> org.apache.avro.ipc.Requestor$TransceiverCallback.handleResult(Requestor.java:366)
> ~[avro-ipc-1.10.2.jar:1.10.2]
> at
> org.apache.avro.ipc.Requestor$TransceiverCallback.handleResult(Requestor.java:330)
> ~[avro-ipc-1.10.2.jar:1.10.2]
> at
> org.apache.avro.ipc.Transceiver.transceive(Transceiver.java:73)
> ~[avro-ipc-1.10.2.jar:1.10.2]
> at
> org.apache.avro.ipc.Requestor.request(Requestor.java:152)
> ~[avro-ipc-1.10.2.jar:1.10.2]
> at
> org.apache.avro.ipc.Requestor.request(Requestor.java:101)
> ~[avro-ipc-1.10.2.jar:1.10.2]
> at
> org.apache.avro.ipc.specific.SpecificRequestor.invoke(SpecificRequestor.java:108)
> ~[avro-ipc-1.10.2.jar:1.10.2]
> {noformat}
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)