grpc error messages are not properly passed on to the client.
This error on the server:
linkahead | java.lang.IllegalArgumentException: No enum constant org.caosdb.server.entity.StatementStatus.SOMEWHAT
linkahead | at java.base/java.lang.Enum.valueOf(Enum.java:240)
linkahead | at org.caosdb.server.entity.StatementStatus.valueOf(StatementStatus.java:43)
linkahead | at org.caosdb.server.entity.Entity.setStatementStatus(Entity.java:478)
linkahead | at org.caosdb.server.entity.wrapper.EntityWrapper.setStatementStatus(EntityWrapper.java:125)
linkahead | at org.caosdb.server.grpc.EntityTransactionServiceImpl.convert(EntityTransactionServiceImpl.java:474)
linkahead | at org.caosdb.server.grpc.EntityTransactionServiceImpl.lambda$convertProperties$2(EntityTransactionServiceImpl.java:451)
linkahead | at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
linkahead | at java.base/java.util.Collections$UnmodifiableCollection.forEach(Collections.java:1085)
linkahead | at org.caosdb.server.grpc.EntityTransactionServiceImpl.convertProperties(EntityTransactionServiceImpl.java:449)
linkahead | at org.caosdb.server.grpc.EntityTransactionServiceImpl.convert(EntityTransactionServiceImpl.java:438)
linkahead | at org.caosdb.server.grpc.EntityTransactionServiceImpl.insert(EntityTransactionServiceImpl.java:347)
linkahead | at org.caosdb.server.grpc.EntityTransactionServiceImpl.singleTransaction(EntityTransactionServiceImpl.java:302)
linkahead | at org.caosdb.server.grpc.EntityTransactionServiceImpl.transaction(EntityTransactionServiceImpl.java:292)
linkahead | at org.caosdb.server.grpc.EntityTransactionServiceImpl.multiTransaction(EntityTransactionServiceImpl.java:508)
linkahead | at org.caosdb.api.entity.v1alpha1.EntityTransactionServiceGrpc$MethodHandlers.invoke(EntityTransactionServiceGrpc.java:231)
linkahead | at io.grpc.stub.ServerCalls$UnaryServerCallHandler$UnaryServerCallListener.onHalfClose(ServerCalls.java:182)
linkahead | at io.grpc.PartialForwardingServerCallListener.onHalfClose(PartialForwardingServerCallListener.java:35)
linkahead | at io.grpc.ForwardingServerCallListener.onHalfClose(ForwardingServerCallListener.java:23)
linkahead | at io.grpc.ForwardingServerCallListener$SimpleForwardingServerCallListener.onHalfClose(ForwardingServerCallListener.java:40)
linkahead | at io.grpc.Contexts$ContextualizedServerCallListener.onHalfClose(Contexts.java:86)
linkahead | at io.grpc.internal.ServerCallImpl$ServerStreamListenerImpl.halfClosed(ServerCallImpl.java:331)
linkahead | at io.grpc.internal.ServerImpl$JumpToApplicationThreadServerStreamListener$1HalfClosed.runInContext(ServerImpl.java:814)
linkahead | at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37)
linkahead | at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:123)
linkahead | at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
linkahead | at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
linkahead | at java.base/java.lang.Thread.run(Thread.java:829)
is by the client only seen as:
The attempt to execute this transaction was not successful because an error occured in the transport or RPC protocol layer. Original error: 2 -
This looks as if the client does not fill the message details properly.
Edited by Daniel Hornung