The message "Failed to deserialize object
[typeName=io.grpc.internal.InternalHandlerRegistry]"
means InternalHandlerRegistry is being sent between the nodes - which it
shouldn't be.
What you need to do is to find where is it being sent. You shouldn't pass
any gRPC to any Ignite configuration, or, I believe, to any Ignite method.
Also, be careful with compute jobs that use lambdas and anonymous classes.
By their nature they catch objects around them too easy, so often you'll
see a compute job accidentally bringing some context over the network. The
best way to avoid it is to use `public static` classes instead of anonymous
classes and lambdas - verbose but bulletproof.

If you still have an issue with this please share more complete code and
config example. A small reproducer on github would be ideal.

Stan

On Mon, Aug 26, 2019 at 4:09 PM Pascoe Scholle <pascoescho...@gmail.com>
wrote:

> Hi Stan,
>
> Thanks for your response. I have tried this, but it has not fixed the
> issue.
> The grpc server class was moved into the service where the interface
> methods "init","execute" and "cancel" perform an initialization of the
> serve, as well start and stopping respectively. But this was already
> implemented.
>
> Does this issue not have something to do with class loading? The second
> node that is started doesn't have any information of the custom classes for
> serialization. I have also moved all JARS of these custom classes into the
> libs folder in ignite but that has also not helped.
>
> On Fri, Aug 23, 2019 at 6:56 PM Stanislav Lukyanov <stanlukya...@gmail.com>
> wrote:
>
>> 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
>>>
>>

Reply via email to