Hi all,
I’ve started getting an exception after migrating to Livy 0.7.1 / JDK 17.
The issue is related to the presence of a LocalDateTime object as a field of my
Job. To be mentioned that I’ve tried the same with a String/Integer instead of
LocalDateTime and everything works great.
Here is the job:
public class TestJob implements Job<String> {
private final LocalDateTime timestamp;
public TestJob(LocalDateTime timestamp) {
this.timestamp = timestamp;
}
And here is the exception that I get:
Exception in thread "main" java.util.concurrent.ExecutionException:
java.lang.RuntimeException: org.apache.livy.shaded.kryo.kryo.KryoException:
java.time.DateTimeException: Invalid value for MonthOfYear (valid values 1 -
12): 0
Serialization trace:
timestamp (com.adswizz.ds.attribution.TestJob)
at
org.apache.livy.shaded.kryo.kryo.serializers.ObjectField.read(ObjectField.java:144)
at
org.apache.livy.shaded.kryo.kryo.serializers.FieldSerializer.read(FieldSerializer.java:543)
at
org.apache.livy.shaded.kryo.kryo.Kryo.readClassAndObject(Kryo.java:813)
at
org.apache.livy.client.common.Serializer.deserialize(Serializer.java:67)
at org.apache.livy.rsc.driver.BypassJob.call(BypassJob.java:39)
at org.apache.livy.rsc.driver.BypassJob.call(BypassJob.java:27)
at org.apache.livy.rsc.driver.JobWrapper.call(JobWrapper.java:64)
at
org.apache.livy.rsc.driver.BypassJobWrapper.call(BypassJobWrapper.java:45)
at
org.apache.livy.rsc.driver.BypassJobWrapper.call(BypassJobWrapper.java:27)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:840)
Caused by: java.time.DateTimeException: Invalid value for MonthOfYear (valid
values 1 - 12): 0
at
java.base/java.time.temporal.ValueRange.checkValidValue(ValueRange.java:319)
at
java.base/java.time.temporal.ChronoField.checkValidValue(ChronoField.java:718)
at java.base/java.time.LocalDate.of(LocalDate.java:271)
at
org.apache.livy.shaded.kryo.kryo.serializers.TimeSerializers$LocalDateSerializer.read(TimeSerializers.java:129)
at
org.apache.livy.shaded.kryo.kryo.serializers.TimeSerializers$LocalDateTimeSerializer.read(TimeSerializers.java:144)
at
org.apache.livy.shaded.kryo.kryo.serializers.TimeSerializers$LocalDateTimeSerializer.read(TimeSerializers.java:133)
at org.apache.livy.shaded.kryo.kryo.Kryo.readObjectOrNull(Kryo.java:782)
at
org.apache.livy.shaded.kryo.kryo.serializers.ObjectField.read(ObjectField.java:132)
... 12 more
Thanks in advance for any idea/suggestion.