Hi, It looks like the issue is that you're ending up sending an instance of your gRPC server inside your service. This approach is generally incorrect. What you should do is - not pass gRPC to the service instance - add an init() method implementation to your service - in your init() start your gRPC server
Stan On Thu, Aug 22, 2019 at 10:52 AM Pascoe Scholle <pascoescho...@gmail.com> wrote: > Hi there, > > How long does it usually take, for a post to be seen on the forum? Maybe I > made a mistake so I will provide my question here. Excuse me if I am being > impatient: > > > ========================================= > Good afternoon everyone, > > I have recently run into an issue and I think the problem lies in the > server node configuration. I will attache the output of the stack trace at > the bottom, however I first wish to explain what the software does and how > we are using ignite. > > I start multiple server nodes with peerClassEnabled set to true, using a > TcpDiscoveryVmIpFinder and dont set anything other than a port range for > the ipFinder. > > Using the REST protocol a ComputeTaskAdapter task is executed which starts > a service and this in turn starts a grpc server, I have placed some scala > code to show what I mean. > > class StartService extends ComputeTaskAdapter[String, Any]{ > var ignite: Ignite = null; > @IgniteInstanceResource > def setIgnite(someIgnite: Ignite): Unit = { > ignite = someIgnite > } > > def map(...)={ > ... > // port is an integer > val server = new GrpcServer(ignite, port); > > val service = new ServiceImpl(name, server); > /* > within the method execute of the Service interface, server.start() is > called > */ > > val serviceconfig = new ServiceConfiguration(); > serviceconfig.setName(name); > serviceconfig.setTotalCount(1); > serviceconfig.setMaxPerNodeCount(1); > ignite.services().deploy(serviceconfig); > ... > } > > } > > this task returns a map with some non important variables. > > The grpc server takes the ignite instance created within the above > mentioned computeTask as a variable, I am not sure if this could be the > cause of the issue. > > Using grpc protocol, we create a ComputeTask which is executed by the grpc > server some more code below: > > class GrpcServer(val ignite:Ignite, val port:Int) extends ..Some Grpc > stuff..{ > > def someGrpcProtocol(request: Message):Future[String]={ > val newTask = new SomeTask(); > > ignite.compute(ignite.cluster()).execute(newTask, someinput); > Future("Request is being processed"); > } > > } > > > If a single server node is started, the program runs without problems. > However, adding more nodes and trying to execute the new tasks on a remote > node or on a node that has a certain attribute gives me a massive stack > trace in the face. > Basically, if I want to execute a task on a node where the service and > grpc server do not reside, the exception happens. > > I have placed all custom classes within a jar that lies in the libs folder > of the ignite-bin project. > We are currently on version 2.7 > > If you require anything else just let me know, ill be on it asap. > > Thanks for any help that may come my way. > > Cheers! > > Here is most of the stack trace: > class org.apache.ignite.binary.BinaryObjectException: Failed to read field > [name=server] > at > org.apache.ignite.internal.binary.BinaryFieldAccessor.read(BinaryFieldAccessor.java:192) > at > org.apache.ignite.internal.binary.BinaryClassDescriptor.read(BinaryClassDescriptor.java:875) > at > org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1764) > at > org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1716) > at > org.apache.ignite.internal.binary.BinaryReaderExImpl.readField(BinaryReaderExImpl.java:1984) > at > org.apache.ignite.internal.binary.BinaryFieldAccessor$DefaultFinalClassAccessor.read0(BinaryFieldAccessor.java:703) > at > org.apache.ignite.internal.binary.BinaryFieldAccessor.read(BinaryFieldAccessor.java:188) > at > org.apache.ignite.internal.binary.BinaryClassDescriptor.read(BinaryClassDescriptor.java:875) > at > org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1764) > at > org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1716) > at > org.apache.ignite.internal.binary.BinaryReaderExImpl.readField(BinaryReaderExImpl.java:1984) > at > org.apache.ignite.internal.binary.BinaryFieldAccessor$DefaultFinalClassAccessor.read0(BinaryFieldAccessor.java:703) > at > org.apache.ignite.internal.binary.BinaryFieldAccessor.read(BinaryFieldAccessor.java:188) > at > org.apache.ignite.internal.binary.BinaryClassDescriptor.read(BinaryClassDescriptor.java:875) > at > org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1764) > at > org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1716) > at > org.apache.ignite.internal.binary.GridBinaryMarshaller.deserialize(GridBinaryMarshaller.java:313) > at > org.apache.ignite.internal.binary.BinaryMarshaller.unmarshal0(BinaryMarshaller.java:102) > at > org.apache.ignite.marshaller.AbstractNodeNameAwareMarshaller.unmarshal(AbstractNodeNameAwareMarshaller.java:82) > at > org.apache.ignite.internal.util.IgniteUtils.unmarshal(IgniteUtils.java:10140) > at > org.apache.ignite.internal.processors.job.GridJobWorker.initialize(GridJobWorker.java:440) > at > org.apache.ignite.internal.processors.job.GridJobProcessor.processJobExecuteRequest(GridJobProcessor.java:1119) > at > org.apache.ignite.internal.processors.job.GridJobProcessor$JobExecutionListener.onMessage(GridJobProcessor.java:1923) > at > org.apache.ignite.internal.managers.communication.GridIoManager.invokeListener(GridIoManager.java:1569) > at > org.apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:1197) > at > org.apache.ignite.internal.managers.communication.GridIoManager.access$4200(GridIoManager.java:127) > at > org.apache.ignite.internal.managers.communication.GridIoManager$9.run(GridIoManager.java:1093) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) > at java.lang.Thread.run(Thread.java:748) > Caused by: class org.apache.ignite.binary.BinaryObjectException: Failed to > deserialize object [typeName=io.grpc.internal.ServerImpl] > at > org.apache.ignite.internal.binary.BinaryClassDescriptor.read(BinaryClassDescriptor.java:914) > at > org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1764) > at > org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1716) > at > org.apache.ignite.internal.binary.BinaryReaderExImpl.readField(BinaryReaderExImpl.java:1984) > at > org.apache.ignite.internal.binary.BinaryFieldAccessor$DefaultFinalClassAccessor.read0(BinaryFieldAccessor.java:703) > at > org.apache.ignite.internal.binary.BinaryFieldAccessor.read(BinaryFieldAccessor.java:188) > ... 29 more > Caused by: class org.apache.ignite.binary.BinaryObjectException: Failed to > read field [name=registry] > at > org.apache.ignite.internal.binary.BinaryFieldAccessor.read(BinaryFieldAccessor.java:192) > at > org.apache.ignite.internal.binary.BinaryClassDescriptor.read(BinaryClassDescriptor.java:875) > ... 34 more > Caused by: class org.apache.ignite.binary.BinaryObjectException: Failed to > deserialize object [typeName=io.grpc.internal.InternalHandlerRegistry] > at > org.apache.ignite.internal.binary.BinaryClassDescriptor.read(BinaryClassDescriptor.java:914) > at > org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1764) > at > org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1716) > at > org.apache.ignite.internal.binary.BinaryReaderExImpl.readField(BinaryReaderExImpl.java:1984) > at > org.apache.ignite.internal.binary.BinaryFieldAccessor$DefaultFinalClassAccessor.read0(BinaryFieldAccessor.java:703) > at > org.apache.ignite.internal.binary.BinaryFieldAccessor.read(BinaryFieldAccessor.java:188) > ... 35 more > > ======================================= > > Thanks and kind regards, > Pascoe >