Steps to reproduce
.proto file using the lite option2020-09-28 10:02:08.579 WARN 66543 --- [entExecutor-3-1] com.linecorp.armeria.server.Server : Failed to notify a server listener: com.linecorp.armeria.server.docs.DocService$1@26c8dae7
java.lang.NullPointerException: null
at com.linecorp.armeria.internal.server.grpc.GrpcDocServicePlugin.generateSpecification(GrpcDocServicePlugin.java:188) ~[armeria-grpc-1.1.0.jar:na]
at com.linecorp.armeria.server.docs.DocService.lambda$generate$1(DocService.java:201) ~[armeria-1.1.0.jar:na]
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) ~[na:na]
at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948) ~[na:na]
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) ~[na:na]
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) ~[na:na]
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) ~[na:na]
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:na]
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) ~[na:na]
at com.linecorp.armeria.server.docs.DocService.generate(DocService.java:203) ~[armeria-1.1.0.jar:na]
at com.linecorp.armeria.server.docs.DocService.access$100(DocService.java:88) ~[armeria-1.1.0.jar:na]
at com.linecorp.armeria.server.docs.DocService$1.serverStarting(DocService.java:182) ~[armeria-1.1.0.jar:na]
at com.linecorp.armeria.server.Server$ServerStartStopSupport.notifyStarting(Server.java:652) ~[armeria-1.1.0.jar:na]
at com.linecorp.armeria.server.Server$ServerStartStopSupport.notifyStarting(Server.java:400) ~[armeria-1.1.0.jar:na]
at com.linecorp.armeria.common.util.StartStopSupport.notifyListeners(StartStopSupport.java:371) ~[armeria-1.1.0.jar:na]
at com.linecorp.armeria.common.util.StartStopSupport.lambda$start0$3(StartStopSupport.java:184) ~[armeria-1.1.0.jar:na]
at io.netty.util.concurrent.GlobalEventExecutor$TaskRunner.run(GlobalEventExecutor.java:243) ~[netty-common-4.1.52.Final.jar:4.1.52.Final]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.52.Final.jar:4.1.52.Final]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.52.Final.jar:4.1.52.Final]
at java.base/java.lang.Thread.run(Thread.java:832) ~[na:na]
If I remember correctly, proto lite removes support for reflection and doesn't include the descriptor in the protos, which are what we use to power the docs service. I think this is similar for gRPC reflection service, which supports some functionality, but nothing that requires the proto definitions, for proto lite.
Since proto lite is mostly for Android users by having the smaller code size, I'd expect servers to always have the full proto - are you able to use full proto with your server? Generally servers should use full proto even when Android uses lite proto I think.
At least we should not raise an exception 馃槅
are you able to use full proto with your server?
Actually ran into this issue due to a wrong dependency issue 馃槄 (which generated lite when I wasn't intending to do so)
Like trustin said, the hope is 1) leave a trace so that others can find this issue and diagnose what's going on quickly 2) maybe ignore such services and render DosService
Most helpful comment
At least we should not raise an exception 馃槅