You may want to update to protobuf-java 3.17 at least and see if it's still
an issue.

On Fri, Jun 25, 2021, 3:40 PM Jamu <[email protected]> wrote:

>
> Hi there, I hope that you are doing well!
>
> I'm encountering some NullPointerException when trying to deserialize my
> protobuf message using the parseFrom method from my generated class (you
> can have a look at the stack below). Code has been generated using protoc
> 3.7.0, and we are currently using protobuf 3.8.0 libraries at runtime.
>
> at
> com.ds.bus.message.BusMessageProtos$Item.<init>(BusMessageProtos.java:4429)
> at
> com.ds.bus.message.BusMessageProtos$Item$1.parsePartialFrom(BusMessageProtos.java:5317)
> at
> com.ds.bus.message.BusMessageProtos$Item$1.parsePartialFrom(BusMessageProtos.java:5311)
> at
> com.google.protobuf.CodedInputStream$ArrayDecoder.readMessage(CodedInputStream.java:886)
> at
> com.ds.bus.message.BusMessageProtos$Order.<init>(BusMessageProtos.java:3221)
> at
> com.ds.bus.message.BusMessageProtos$Order$1.parsePartialFrom(BusMessageProtos.java:4311)
> at
> com.ds.bus.message.BusMessageProtos$Order$1.parsePartialFrom(BusMessageProtos.java:4305)
> at
> com.google.protobuf.CodedInputStream$ArrayDecoder.readMessage(CodedInputStream.java:886)
> at
> com.ds.bus.message.BusMessageProtos$Message.<init>(BusMessageProtos.java:982)
> at
> com.ds.bus.message.BusMessageProtos$Message$1.parsePartialFrom(BusMessageProtos.java:2127)
> at
> com.ds.bus.message.BusMessageProtos$Message$1.parsePartialFrom(BusMessageProtos.java:2121)
> at
> com.google.protobuf.AbstractParser.parsePartialFrom(AbstractParser.java:100)
> at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:120)
> at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:125)
> at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:48)
> at
> com.ds.bus.message.BusMessageProtos$Message.parseFrom(BusMessageProtos.java:1334)
> at
> com.ds.bus.message.data.ChunkStore.getAndRemoveAllCompleted(ChunkStore.java:93)
>
>
> NullPointerException are not happening all the time. Usually, it works at
> the beginning and at some point everything fall apart and all
> deserialization are ending in a NullPointerException. This issue is only
> happening in production after some time, I tried to replicate the problem
> locally and failed to do so.
>
> Could it be an issue fixed in a more recent releases or already seen by
> someone ?
> Any input would be appreciated :)
>
> Thanks in advance for your help!
>
> ================== Full proto file
>
> // [START declaration]
> syntax = "proto3";
>
> import "google/protobuf/timestamp.proto";
> package com.ds.bus.message;
> // [END declaration]
>
> // [START options options_declaration]
> option java_package = "com.ds.bus.message";
> option java_outer_classname = "BusMessageProtos";
> option optimize_for = SPEED;
> // [END options_declaration]
>
> // [START messages]
>
> message Chunk {
>     string identifier = 1;
>     uint32 chunk_id = 2;
>     uint32 nb_chunks = 3;
>     bytes  serialized_message = 4;
> }
>
> message Message {
>     string identifier = 1;
>     oneof order {
>         Order simple_order = 2;
>         Transaction transaction_order = 3;
>         Notification notification = 4;
>     }
> }
>
> message Transaction {
>     string identifier = 1;
>     repeated Order orders = 4;
> }
>
> message Order {
>     string identifier = 1;
>     Order.Operation operation = 2;
>     enum Operation {
>         PUT = 0;
>         DELETE = 1;
>     }
>     map<string, Value> parameters = 3;
>     Item item = 4;
> }
>
> message Item {
>     string identifier = 1;
>     string type = 2;
>     map<string, Value> attributes = 3;
> }
>
> // Supported values for attributes
> message Value {
>      oneof value {
>          double double   = 1;
>          float  float    = 2;
>          uint32 integer  = 3;
>          uint64 long     = 4;
>          bool   boolean  = 5;
>          string string   = 6;
>          bytes  bytes    = 7;
>          ValueList list  = 8;
>          ValueMap map    = 9;
>      }
> }
>
> message ValueList {
>     repeated Value values = 1;
> }
>
> message ValueMap {
>     map<string, Value> values = 1;
> }
>
> message Notification {
>     string message = 1;
>     string type = 2;
>     Kind kind = 3;
>     google.protobuf.Timestamp timestamp = 4;
>     Context context = 5;
>     Task task = 6;
>     repeated Source sources = 7;
>     Target target = 8;
> }
>
> enum Kind {
>     SUCCESS = 0;
>     WARNING = 1;
>     ERROR = 2;
> }
>
> message Task {
>     string activity = 1;
>     string processor = 2;
> }
>
> message Context {
>     string tenant = 1;
>     string user = 2;
> }
>
> message Source {
>     string type = 1;
>     map<string, string> attributes = 2;
> }
>
> message Target {
>     string type = 1;
>     map<string, string> attributes = 2;
> }
> // [END messages]
>
> ========= Prod environment details
>
> Eclipse OpenJ9 VM AdoptOpenJDK (build openj9-0.21.0, JRE 11 Linux 
> amd64-64-Bit Compressed References 20200715_697 (JIT enabled, AOT enabled)
>
> OpenJ9   - 34cf4c075
> OMR      - 113e54219
> JCL      - 95bb504fbb based on jdk-11.0.8+10)
>
> Protobuf 3.8.0
>
> --
> You received this message because you are subscribed to the Google Groups
> "Protocol Buffers" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/protobuf/e1f3c3cc-6a86-46a9-81d3-b7d002065aeen%40googlegroups.com
> <https://groups.google.com/d/msgid/protobuf/e1f3c3cc-6a86-46a9-81d3-b7d002065aeen%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/protobuf/CAD7-yfv_VT3y5jnXP%3DkDs52NW%2BpG1KxOp%3DshJXPnYvu9OpYpVw%40mail.gmail.com.

Reply via email to