Re: Failing to deploy service
In addition to marking LOG as @transient, I also made it lazy val so that it does not result in initialization order issues. Regards, Neeraj On Wed, 4/4/18, Neeraj Vaidya <neeraj.vai...@yahoo.co.in> wrote: Subject: Re: Failing to deploy service To: "Denis Mekhanikov" <dmekhani...@gmail.com> Cc: user@ignite.apache.org Date: Wednesday, 4 April, 2018, 10:50 AM Hi Denis, By making the Logger a part of the companion object, it works. However, it also works if I keep the LOG field part of the Service implementation class but annotate it as @transient. Regards, Neeraj On Wed, 4/4/18, Denis Mekhanikov <dmekhani...@gmail.com> wrote: Subject: Re: Failing to deploy service To: "Neeraj Vaidya" <neeraj.vai...@yahoo.co.in> Cc: user@ignite.apache.org Date: Wednesday, 4 April, 2018, 9:19 AM Neeraj, Thanks for sharing the details!I'll try to reproduce this issue. If you put a logger into a field of the service class, it will be serialized together with the service, which doesn't make much sense.You should make the logger a part of a companion object, so it won't be sent over network. Denis ср, 4 апр. 2018 г. в 12:02, Neeraj Vaidya <neeraj.vai...@yahoo.co.in>: Hi Denis, Thanks for your responses. Here is the class I am using. It is also there in github : https://github.com/en-vee/axlrate/blob/axlrate-release-1/axlrate/axlrate-charging/src/main/scala/org/hypercomp/axlrate/charging/loader/AxlRateChargingService.scala When I comment out the LOG member and replace all debug statements with println statements, it works fine. It appears that this is causing the difference. The LOG member is just a wrapper over some Log over slf4j/logback API. And it in turn contains a member called "marker". package org.hypercomp.axlrate.charging.loader import org.hypercomp.axlrate.utils.imdg.AxlRateImdgIgniteService import org.hypercomp.axlrate.core.logging.AxlRateLogger import org.hypercomp.axlrate.utils.imdg.AxlRateImdgMessage class AxlRateChargingService() extends AxlRateImdgIgniteService[AxlRateImdgMessage] { val LOG = AxlRateLogger(classOf[AxlRateChargingService]) override val execute:()=>Unit = () => { LOG.process.debug("Starting execute method") } override val initialize:()=>Unit = () => { LOG.process.debug("Initializing.") } override val cancel:()=>Unit = () => { LOG.process.debug("Stopping service") } } Regards, Neeraj -------- On Wed, 4/4/18, Denis Mekhanikov <dmekhani...@gmail.com> wrote: Subject: Re: Failing to deploy service To: user@ignite.apache.org Date: Wednesday, 4 April, 2018, 7:43 AM Neeraj, There is no such restriction, as far as I know.What do you mean by "using"? Could you provide this class? Denis ср, 4 апр. 2018 г. в 10:32, Neeraj Vaidya <neeraj.vai...@yahoo.co.in>: On analysing further it seems the field id indicated as “marker” below is actually a member of one of the class instances used inside the service classes. Is there anything restriction as such about using custom classes in a service implementation ? Sent from my iPhone > On 4 Apr 2018, at 15:06, Neeraj Vaidya <neeraj.vai...@yahoo.co.in> wrote: > > Hi, > > I am trying to deploy a service during ignite node startup. But I noticed 2 peculiar behaviours. I am loading the class using > Note that I am using a single-node cluster. Thus, the service class is present on the classpath of the node where I am trying to deploy this service. > > Observation-1 > - > When the service class is part of the same (scala) package as the class which contains the main method and also starts the ignite cluster, the service gets deployed successfully. > > Observation-2 > --- > However, when the service class is NOT part of the same (scala) package as the class which contains the main method and also starts the ignite cluster, the service DOES NOT deployed successfully. > > I am providing the user the ability to configure the Service class via a configuration file i.e.
Re: Failing to deploy service
Hi Denis, By making the Logger a part of the companion object, it works. However, it also works if I keep the LOG field part of the Service implementation class but annotate it as @transient. Regards, Neeraj On Wed, 4/4/18, Denis Mekhanikov <dmekhani...@gmail.com> wrote: Subject: Re: Failing to deploy service To: "Neeraj Vaidya" <neeraj.vai...@yahoo.co.in> Cc: user@ignite.apache.org Date: Wednesday, 4 April, 2018, 9:19 AM Neeraj, Thanks for sharing the details!I'll try to reproduce this issue. If you put a logger into a field of the service class, it will be serialized together with the service, which doesn't make much sense.You should make the logger a part of a companion object, so it won't be sent over network. Denis ср, 4 апр. 2018 г. в 12:02, Neeraj Vaidya <neeraj.vai...@yahoo.co.in>: Hi Denis, Thanks for your responses. Here is the class I am using. It is also there in github : https://github.com/en-vee/axlrate/blob/axlrate-release-1/axlrate/axlrate-charging/src/main/scala/org/hypercomp/axlrate/charging/loader/AxlRateChargingService.scala When I comment out the LOG member and replace all debug statements with println statements, it works fine. It appears that this is causing the difference. The LOG member is just a wrapper over some Log over slf4j/logback API. And it in turn contains a member called "marker". package org.hypercomp.axlrate.charging.loader import org.hypercomp.axlrate.utils.imdg.AxlRateImdgIgniteService import org.hypercomp.axlrate.core.logging.AxlRateLogger import org.hypercomp.axlrate.utils.imdg.AxlRateImdgMessage class AxlRateChargingService() extends AxlRateImdgIgniteService[AxlRateImdgMessage] { val LOG = AxlRateLogger(classOf[AxlRateChargingService]) override val execute:()=>Unit = () => { LOG.process.debug("Starting execute method") } override val initialize:()=>Unit = () => { LOG.process.debug("Initializing.") } override val cancel:()=>Unit = () => { LOG.process.debug("Stopping service") } } Regards, Neeraj On Wed, 4/4/18, Denis Mekhanikov <dmekhani...@gmail.com> wrote: Subject: Re: Failing to deploy service To: user@ignite.apache.org Date: Wednesday, 4 April, 2018, 7:43 AM Neeraj, There is no such restriction, as far as I know.What do you mean by "using"? Could you provide this class? Denis ср, 4 апр. 2018 г. в 10:32, Neeraj Vaidya <neeraj.vai...@yahoo.co.in>: On analysing further it seems the field id indicated as “marker” below is actually a member of one of the class instances used inside the service classes. Is there anything restriction as such about using custom classes in a service implementation ? Sent from my iPhone > On 4 Apr 2018, at 15:06, Neeraj Vaidya <neeraj.vai...@yahoo.co.in> wrote: > > Hi, > > I am trying to deploy a service during ignite node startup. But I noticed 2 peculiar behaviours. I am loading the class using > Note that I am using a single-node cluster. Thus, the service class is present on the classpath of the node where I am trying to deploy this service. > > Observation-1 > - > When the service class is part of the same (scala) package as the class which contains the main method and also starts the ignite cluster, the service gets deployed successfully. > > Observation-2 > --- > However, when the service class is NOT part of the same (scala) package as the class which contains the main method and also starts the ignite cluster, the service DOES NOT deployed successfully. > > I am providing the user the ability to configure the Service class via a configuration file i.e. the configuration file will contain an entry which will contain a key : > serviceClass = "org.hypercomp.axlrate.charging.loader.AxlRateChargingService" > serviceName = "AXLRATE_CHARGING_MODULE" > ... > ... > > Then in the scala code, I am instantiating the service class above using Class.forName(serviceClass).newInstance.asInstanceOf[] Not sure if this is a great idea, but it works when the class is part of the same package as the class containing the main(args: Array[String]) method. > > The stack trace I see is as follows [Note all classes prefixed with org.hy
Re: Failing to deploy service
Neeraj, Thanks for sharing the details! I'll try to reproduce this issue. If you put a logger into a field of the service class, it will be serialized together with the service, which doesn't make much sense. You should make the logger a part of a companion object, so it won't be sent over network. Denis ср, 4 апр. 2018 г. в 12:02, Neeraj Vaidya <neeraj.vai...@yahoo.co.in>: > Hi Denis, Thanks for your responses. > Here is the class I am using. It is also there in github : > https://github.com/en-vee/axlrate/blob/axlrate-release-1/axlrate/axlrate-charging/src/main/scala/org/hypercomp/axlrate/charging/loader/AxlRateChargingService.scala > > When I comment out the LOG member and replace all debug statements with > println statements, it works fine. > It appears that this is causing the difference. The LOG member is just a > wrapper over some Log over slf4j/logback API. And it in turn contains a > member called "marker". > > package org.hypercomp.axlrate.charging.loader > > import org.hypercomp.axlrate.utils.imdg.AxlRateImdgIgniteService > import org.hypercomp.axlrate.core.logging.AxlRateLogger > import org.hypercomp.axlrate.utils.imdg.AxlRateImdgMessage > > class AxlRateChargingService() extends > AxlRateImdgIgniteService[AxlRateImdgMessage] { > > val LOG = AxlRateLogger(classOf[AxlRateChargingService]) > > override val execute:()=>Unit = () => { > LOG.process.debug("Starting execute method") > } > > override val initialize:()=>Unit = () => { > LOG.process.debug("Initializing.") > } > > override val cancel:()=>Unit = () => { > LOG.process.debug("Stopping service") > } > } > > > Regards, > Neeraj > > > On Wed, 4/4/18, Denis Mekhanikov <dmekhani...@gmail.com> wrote: > > Subject: Re: Failing to deploy service > To: user@ignite.apache.org > Date: Wednesday, 4 April, 2018, 7:43 AM > > Neeraj, > There is > no such restriction, as far as I know.What do you > mean by "using"? Could you provide this > class? > Denis > ср, 4 апр. 2018 г. в 10:32, Neeraj Vaidya > <neeraj.vai...@yahoo.co.in>: > On > analysing further it seems the field id indicated as > “marker” below is actually a member of one of the class > instances used inside the service classes. Is there anything > restriction as such about using custom classes in a service > implementation ? > > > > Sent from my iPhone > > > > > On 4 Apr 2018, at 15:06, Neeraj Vaidya <neeraj.vai...@yahoo.co.in> > wrote: > > > > > > Hi, > > > > > > I am trying to deploy a service during ignite node > startup. But I noticed 2 peculiar behaviours. I am loading > the class using > > > Note that I am using a single-node cluster. Thus, the > service class is present on the classpath of the node where > I am trying to deploy this service. > > > > > > Observation-1 > > > - > > > When the service class is part of the same (scala) > package as the class which contains the main method and also > starts the ignite cluster, the service gets deployed > successfully. > > > > > > Observation-2 > > > --- > > > However, when the service class is NOT part of the same > (scala) package as the class which contains the main method > and also starts the ignite cluster, the service DOES NOT > deployed successfully. > > > > > > I am providing the user the ability to configure the > Service class via a configuration file i.e. the > configuration file will contain an entry which will contain > a key : > > > serviceClass = > "org.hypercomp.axlrate.charging.loader.AxlRateChargingService" > > > serviceName = "AXLRATE_CHARGING_MODULE" > > > ... > > > ... > > > > > > Then in the scala code, I am instantiating the service > class above using > Class.forName(serviceClass).newInstance.asInstanceOf[] > Not sure if this is a great idea, but it works when the > class is part of the same package as the class containing > the main(args: Array[String]) method. > > > > > > The stack trace I see is as follows [Note all classes > prefixed with org.hypercomp are my custom classes]. : > > > > > > [14:12:54,906][SEVERE][main][GridServiceProcessor] > Failed to marshal service with configured marshaller > [name=AXLRATE_CHARGING_MODULE, > srvc=org.hypercomp.axlrate.charging.loader.AxlRateChargingService@b91d8c4 > , > ma
Re: Failing to deploy service
Hi Denis, Thanks for your responses. Here is the class I am using. It is also there in github : https://github.com/en-vee/axlrate/blob/axlrate-release-1/axlrate/axlrate-charging/src/main/scala/org/hypercomp/axlrate/charging/loader/AxlRateChargingService.scala When I comment out the LOG member and replace all debug statements with println statements, it works fine. It appears that this is causing the difference. The LOG member is just a wrapper over some Log over slf4j/logback API. And it in turn contains a member called "marker". package org.hypercomp.axlrate.charging.loader import org.hypercomp.axlrate.utils.imdg.AxlRateImdgIgniteService import org.hypercomp.axlrate.core.logging.AxlRateLogger import org.hypercomp.axlrate.utils.imdg.AxlRateImdgMessage class AxlRateChargingService() extends AxlRateImdgIgniteService[AxlRateImdgMessage] { val LOG = AxlRateLogger(classOf[AxlRateChargingService]) override val execute:()=>Unit = () => { LOG.process.debug("Starting execute method") } override val initialize:()=>Unit = () => { LOG.process.debug("Initializing.") } override val cancel:()=>Unit = () => { LOG.process.debug("Stopping service") } } Regards, Neeraj On Wed, 4/4/18, Denis Mekhanikov <dmekhani...@gmail.com> wrote: Subject: Re: Failing to deploy service To: user@ignite.apache.org Date: Wednesday, 4 April, 2018, 7:43 AM Neeraj, There is no such restriction, as far as I know.What do you mean by "using"? Could you provide this class? Denis ср, 4 апр. 2018 г. в 10:32, Neeraj Vaidya <neeraj.vai...@yahoo.co.in>: On analysing further it seems the field id indicated as “marker” below is actually a member of one of the class instances used inside the service classes. Is there anything restriction as such about using custom classes in a service implementation ? Sent from my iPhone > On 4 Apr 2018, at 15:06, Neeraj Vaidya <neeraj.vai...@yahoo.co.in> wrote: > > Hi, > > I am trying to deploy a service during ignite node startup. But I noticed 2 peculiar behaviours. I am loading the class using > Note that I am using a single-node cluster. Thus, the service class is present on the classpath of the node where I am trying to deploy this service. > > Observation-1 > - > When the service class is part of the same (scala) package as the class which contains the main method and also starts the ignite cluster, the service gets deployed successfully. > > Observation-2 > --- > However, when the service class is NOT part of the same (scala) package as the class which contains the main method and also starts the ignite cluster, the service DOES NOT deployed successfully. > > I am providing the user the ability to configure the Service class via a configuration file i.e. the configuration file will contain an entry which will contain a key : > serviceClass = "org.hypercomp.axlrate.charging.loader.AxlRateChargingService" > serviceName = "AXLRATE_CHARGING_MODULE" > ... > ... > > Then in the scala code, I am instantiating the service class above using Class.forName(serviceClass).newInstance.asInstanceOf[] Not sure if this is a great idea, but it works when the class is part of the same package as the class containing the main(args: Array[String]) method. > > The stack trace I see is as follows [Note all classes prefixed with org.hypercomp are my custom classes]. : > > [14:12:54,906][SEVERE][main][GridServiceProcessor] Failed to marshal service with configured marshaller [name=AXLRATE_CHARGING_MODULE, srvc=org.hypercomp.axlrate.charging.loader.AxlRateChargingService@b91d8c4, marsh=o.a.i.i.binary.BinaryMarshaller@6ea1bcdc] > class org.apache.ignite.IgniteCheckedException: Duplicate field ID: marker > at org.apache.ignite.internal.util.IgniteUtils.marshal(IgniteUtils.java:9883) > at org.apache.ignite.internal.processors.service.GridServiceProcessor.prepareServiceConfigurations(GridServiceProcessor.java:534) > at org.apache.ignite.internal.processors.service.GridServiceProcessor.deployAll(GridServiceProcessor.java:568) > at org.apache.ignite.internal.IgniteServicesImpl.deployAll(IgniteServicesImpl.java:238) > at org.apache.ignite.internal.IgniteServicesImpl.deploy(IgniteServicesImpl.java:221) > at org.hypercomp.axlrate.utils.imdg.AxlRateImdgManager$AxlRateIgniteImdgManager$.$anonfun$startNode$1(AxlRateImdgManager.scala:80) > at org.hypercomp.axlrate.utils.imdg.AxlRateImdgManager$AxlRateIgniteImdgManager$.$anonfun$startNode$1$adapted(AxlRateImdgManager.scala:
Re: Failing to deploy service
Neeraj, There is no such restriction, as far as I know. What do you mean by "using"? Could you provide this class? Denis ср, 4 апр. 2018 г. в 10:32, Neeraj Vaidya: > On analysing further it seems the field id indicated as “marker” below is > actually a member of one of the class instances used inside the service > classes. Is there anything restriction as such about using custom classes > in a service implementation ? > > Sent from my iPhone > > > On 4 Apr 2018, at 15:06, Neeraj Vaidya > wrote: > > > > Hi, > > > > I am trying to deploy a service during ignite node startup. But I > noticed 2 peculiar behaviours. I am loading the class using > > Note that I am using a single-node cluster. Thus, the service class is > present on the classpath of the node where I am trying to deploy this > service. > > > > Observation-1 > > - > > When the service class is part of the same (scala) package as the class > which contains the main method and also starts the ignite cluster, the > service gets deployed successfully. > > > > Observation-2 > > --- > > However, when the service class is NOT part of the same (scala) package > as the class which contains the main method and also starts the ignite > cluster, the service DOES NOT deployed successfully. > > > > I am providing the user the ability to configure the Service class via a > configuration file i.e. the configuration file will contain an entry which > will contain a key : > > serviceClass = > "org.hypercomp.axlrate.charging.loader.AxlRateChargingService" > > serviceName = "AXLRATE_CHARGING_MODULE" > > ... > > ... > > > > Then in the scala code, I am instantiating the service class above using > Class.forName(serviceClass).newInstance.asInstanceOf[] Not sure if this > is a great idea, but it works when the class is part of the same package as > the class containing the main(args: Array[String]) method. > > > > The stack trace I see is as follows [Note all classes prefixed with > org.hypercomp are my custom classes]. : > > > > [14:12:54,906][SEVERE][main][GridServiceProcessor] Failed to marshal > service with configured marshaller [name=AXLRATE_CHARGING_MODULE, > srvc=org.hypercomp.axlrate.charging.loader.AxlRateChargingService@b91d8c4, > marsh=o.a.i.i.binary.BinaryMarshaller@6ea1bcdc] > > class org.apache.ignite.IgniteCheckedException: Duplicate field ID: > marker > >at > org.apache.ignite.internal.util.IgniteUtils.marshal(IgniteUtils.java:9883) > >at > org.apache.ignite.internal.processors.service.GridServiceProcessor.prepareServiceConfigurations(GridServiceProcessor.java:534) > >at > org.apache.ignite.internal.processors.service.GridServiceProcessor.deployAll(GridServiceProcessor.java:568) > >at > org.apache.ignite.internal.IgniteServicesImpl.deployAll(IgniteServicesImpl.java:238) > >at > org.apache.ignite.internal.IgniteServicesImpl.deploy(IgniteServicesImpl.java:221) > >at > org.hypercomp.axlrate.utils.imdg.AxlRateImdgManager$AxlRateIgniteImdgManager$.$anonfun$startNode$1(AxlRateImdgManager.scala:80) > >at > org.hypercomp.axlrate.utils.imdg.AxlRateImdgManager$AxlRateIgniteImdgManager$.$anonfun$startNode$1$adapted(AxlRateImdgManager.scala:80) > >at scala.collection.immutable.List.foreach(List.scala:389) > >at > org.hypercomp.axlrate.utils.imdg.AxlRateImdgManager$AxlRateIgniteImdgManager$.startNode(AxlRateImdgManager.scala:80) > >at > org.hypercomp.axlrate.utils.imdg.AxlRateImdgManager$.startNode(AxlRateImdgManager.scala:115) > >at > org.hypercomp.axlrate.core.loader.AxlRateBoot$.main(AxlRateBoot.scala:92) > >at > org.hypercomp.axlrate.core.loader.AxlRateBoot.main(AxlRateBoot.scala) > > Caused by: class org.apache.ignite.binary.BinaryObjectException: > Duplicate field ID: marker > >at > org.apache.ignite.internal.binary.BinaryClassDescriptor.(BinaryClassDescriptor.java:312) > >at > org.apache.ignite.internal.binary.BinaryContext.registerUserClassDescriptor(BinaryContext.java:780) > >at > org.apache.ignite.internal.binary.BinaryContext.registerClassDescriptor(BinaryContext.java:752) > >at > org.apache.ignite.internal.binary.BinaryContext.descriptorForClass(BinaryContext.java:623) > >at > org.apache.ignite.internal.binary.BinaryWriterExImpl.marshal0(BinaryWriterExImpl.java:164) > >at > org.apache.ignite.internal.binary.BinaryWriterExImpl.marshal(BinaryWriterExImpl.java:147) > >at > org.apache.ignite.internal.binary.BinaryWriterExImpl.marshal(BinaryWriterExImpl.java:134) > >at > org.apache.ignite.internal.binary.BinaryWriterExImpl.doWriteObject(BinaryWriterExImpl.java:496) > >at > org.apache.ignite.internal.binary.BinaryWriterExImpl.writeObjectField(BinaryWriterExImpl.java:1160) > >at >
Re: Failing to deploy service
On analysing further it seems the field id indicated as “marker” below is actually a member of one of the class instances used inside the service classes. Is there anything restriction as such about using custom classes in a service implementation ? Sent from my iPhone > On 4 Apr 2018, at 15:06, Neeraj Vaidyawrote: > > Hi, > > I am trying to deploy a service during ignite node startup. But I noticed 2 > peculiar behaviours. I am loading the class using > Note that I am using a single-node cluster. Thus, the service class is > present on the classpath of the node where I am trying to deploy this > service. > > Observation-1 > - > When the service class is part of the same (scala) package as the class which > contains the main method and also starts the ignite cluster, the service gets > deployed successfully. > > Observation-2 > --- > However, when the service class is NOT part of the same (scala) package as > the class which contains the main method and also starts the ignite cluster, > the service DOES NOT deployed successfully. > > I am providing the user the ability to configure the Service class via a > configuration file i.e. the configuration file will contain an entry which > will contain a key : > serviceClass = "org.hypercomp.axlrate.charging.loader.AxlRateChargingService" > serviceName = "AXLRATE_CHARGING_MODULE" > ... > ... > > Then in the scala code, I am instantiating the service class above using > Class.forName(serviceClass).newInstance.asInstanceOf[] Not sure if this > is a great idea, but it works when the class is part of the same package as > the class containing the main(args: Array[String]) method. > > The stack trace I see is as follows [Note all classes prefixed with > org.hypercomp are my custom classes]. : > > [14:12:54,906][SEVERE][main][GridServiceProcessor] Failed to marshal service > with configured marshaller [name=AXLRATE_CHARGING_MODULE, > srvc=org.hypercomp.axlrate.charging.loader.AxlRateChargingService@b91d8c4, > marsh=o.a.i.i.binary.BinaryMarshaller@6ea1bcdc] > class org.apache.ignite.IgniteCheckedException: Duplicate field ID: marker >at > org.apache.ignite.internal.util.IgniteUtils.marshal(IgniteUtils.java:9883) >at > org.apache.ignite.internal.processors.service.GridServiceProcessor.prepareServiceConfigurations(GridServiceProcessor.java:534) >at > org.apache.ignite.internal.processors.service.GridServiceProcessor.deployAll(GridServiceProcessor.java:568) >at > org.apache.ignite.internal.IgniteServicesImpl.deployAll(IgniteServicesImpl.java:238) >at > org.apache.ignite.internal.IgniteServicesImpl.deploy(IgniteServicesImpl.java:221) >at > org.hypercomp.axlrate.utils.imdg.AxlRateImdgManager$AxlRateIgniteImdgManager$.$anonfun$startNode$1(AxlRateImdgManager.scala:80) >at > org.hypercomp.axlrate.utils.imdg.AxlRateImdgManager$AxlRateIgniteImdgManager$.$anonfun$startNode$1$adapted(AxlRateImdgManager.scala:80) >at scala.collection.immutable.List.foreach(List.scala:389) >at > org.hypercomp.axlrate.utils.imdg.AxlRateImdgManager$AxlRateIgniteImdgManager$.startNode(AxlRateImdgManager.scala:80) >at > org.hypercomp.axlrate.utils.imdg.AxlRateImdgManager$.startNode(AxlRateImdgManager.scala:115) >at > org.hypercomp.axlrate.core.loader.AxlRateBoot$.main(AxlRateBoot.scala:92) >at > org.hypercomp.axlrate.core.loader.AxlRateBoot.main(AxlRateBoot.scala) > Caused by: class org.apache.ignite.binary.BinaryObjectException: Duplicate > field ID: marker >at > org.apache.ignite.internal.binary.BinaryClassDescriptor.(BinaryClassDescriptor.java:312) >at > org.apache.ignite.internal.binary.BinaryContext.registerUserClassDescriptor(BinaryContext.java:780) >at > org.apache.ignite.internal.binary.BinaryContext.registerClassDescriptor(BinaryContext.java:752) >at > org.apache.ignite.internal.binary.BinaryContext.descriptorForClass(BinaryContext.java:623) >at > org.apache.ignite.internal.binary.BinaryWriterExImpl.marshal0(BinaryWriterExImpl.java:164) >at > org.apache.ignite.internal.binary.BinaryWriterExImpl.marshal(BinaryWriterExImpl.java:147) >at > org.apache.ignite.internal.binary.BinaryWriterExImpl.marshal(BinaryWriterExImpl.java:134) >at > org.apache.ignite.internal.binary.BinaryWriterExImpl.doWriteObject(BinaryWriterExImpl.java:496) >at > org.apache.ignite.internal.binary.BinaryWriterExImpl.writeObjectField(BinaryWriterExImpl.java:1160) >at > org.apache.ignite.internal.binary.BinaryFieldAccessor$DefaultFinalClassAccessor.write(BinaryFieldAccessor.java:663) >at > org.apache.ignite.internal.binary.BinaryClassDescriptor.write(BinaryClassDescriptor.java:793)
Re: Failing to deploy service
Neeraj, Provide the AxlRateChargingSe*rvice* class. There must be something wrong with getters and setters. BinaryMarshaller decides, that your service has two identical fields for some reason. Denis ср, 4 апр. 2018 г. в 8:07, Neeraj Vaidya: > Hi, > > I am trying to deploy a service during ignite node startup. But I noticed > 2 peculiar behaviours. I am loading the class using > Note that I am using a single-node cluster. Thus, the service class is > present on the classpath of the node where I am trying to deploy this > service. > > Observation-1 > - > When the service class is part of the same (scala) package as the class > which contains the main method and also starts the ignite cluster, the > service gets deployed successfully. > > Observation-2 > --- > However, when the service class is NOT part of the same (scala) package as > the class which contains the main method and also starts the ignite > cluster, the service DOES NOT deployed successfully. > > I am providing the user the ability to configure the Service class via a > configuration file i.e. the configuration file will contain an entry which > will contain a key : > serviceClass = > "org.hypercomp.axlrate.charging.loader.AxlRateChargingService" > serviceName = "AXLRATE_CHARGING_MODULE" > ... > ... > > Then in the scala code, I am instantiating the service class above using > Class.forName(serviceClass).newInstance.asInstanceOf[] Not sure if this > is a great idea, but it works when the class is part of the same package as > the class containing the main(args: Array[String]) method. > > The stack trace I see is as follows [Note all classes prefixed with > org.hypercomp are my custom classes]. : > > [14:12:54,906][SEVERE][main][GridServiceProcessor] Failed to marshal > service with configured marshaller [name=AXLRATE_CHARGING_MODULE, > srvc=org.hypercomp.axlrate.charging.loader.AxlRateChargingService@b91d8c4, > marsh=o.a.i.i.binary.BinaryMarshaller@6ea1bcdc] > class org.apache.ignite.IgniteCheckedException: Duplicate field ID: marker > at > org.apache.ignite.internal.util.IgniteUtils.marshal(IgniteUtils.java:9883) > at > org.apache.ignite.internal.processors.service.GridServiceProcessor.prepareServiceConfigurations(GridServiceProcessor.java:534) > at > org.apache.ignite.internal.processors.service.GridServiceProcessor.deployAll(GridServiceProcessor.java:568) > at > org.apache.ignite.internal.IgniteServicesImpl.deployAll(IgniteServicesImpl.java:238) > at > org.apache.ignite.internal.IgniteServicesImpl.deploy(IgniteServicesImpl.java:221) > at > org.hypercomp.axlrate.utils.imdg.AxlRateImdgManager$AxlRateIgniteImdgManager$.$anonfun$startNode$1(AxlRateImdgManager.scala:80) > at > org.hypercomp.axlrate.utils.imdg.AxlRateImdgManager$AxlRateIgniteImdgManager$.$anonfun$startNode$1$adapted(AxlRateImdgManager.scala:80) > at scala.collection.immutable.List.foreach(List.scala:389) > at > org.hypercomp.axlrate.utils.imdg.AxlRateImdgManager$AxlRateIgniteImdgManager$.startNode(AxlRateImdgManager.scala:80) > at > org.hypercomp.axlrate.utils.imdg.AxlRateImdgManager$.startNode(AxlRateImdgManager.scala:115) > at > org.hypercomp.axlrate.core.loader.AxlRateBoot$.main(AxlRateBoot.scala:92) > at > org.hypercomp.axlrate.core.loader.AxlRateBoot.main(AxlRateBoot.scala) > Caused by: class org.apache.ignite.binary.BinaryObjectException: Duplicate > field ID: marker > at > org.apache.ignite.internal.binary.BinaryClassDescriptor.(BinaryClassDescriptor.java:312) > at > org.apache.ignite.internal.binary.BinaryContext.registerUserClassDescriptor(BinaryContext.java:780) > at > org.apache.ignite.internal.binary.BinaryContext.registerClassDescriptor(BinaryContext.java:752) > at > org.apache.ignite.internal.binary.BinaryContext.descriptorForClass(BinaryContext.java:623) > at > org.apache.ignite.internal.binary.BinaryWriterExImpl.marshal0(BinaryWriterExImpl.java:164) > at > org.apache.ignite.internal.binary.BinaryWriterExImpl.marshal(BinaryWriterExImpl.java:147) > at > org.apache.ignite.internal.binary.BinaryWriterExImpl.marshal(BinaryWriterExImpl.java:134) > at > org.apache.ignite.internal.binary.BinaryWriterExImpl.doWriteObject(BinaryWriterExImpl.java:496) > at > org.apache.ignite.internal.binary.BinaryWriterExImpl.writeObjectField(BinaryWriterExImpl.java:1160) > at > org.apache.ignite.internal.binary.BinaryFieldAccessor$DefaultFinalClassAccessor.write(BinaryFieldAccessor.java:663) > at > org.apache.ignite.internal.binary.BinaryClassDescriptor.write(BinaryClassDescriptor.java:793) >
Failing to deploy service
Hi, I am trying to deploy a service during ignite node startup. But I noticed 2 peculiar behaviours. I am loading the class using Note that I am using a single-node cluster. Thus, the service class is present on the classpath of the node where I am trying to deploy this service. Observation-1 - When the service class is part of the same (scala) package as the class which contains the main method and also starts the ignite cluster, the service gets deployed successfully. Observation-2 --- However, when the service class is NOT part of the same (scala) package as the class which contains the main method and also starts the ignite cluster, the service DOES NOT deployed successfully. I am providing the user the ability to configure the Service class via a configuration file i.e. the configuration file will contain an entry which will contain a key : serviceClass = "org.hypercomp.axlrate.charging.loader.AxlRateChargingService" serviceName = "AXLRATE_CHARGING_MODULE" ... ... Then in the scala code, I am instantiating the service class above using Class.forName(serviceClass).newInstance.asInstanceOf[] Not sure if this is a great idea, but it works when the class is part of the same package as the class containing the main(args: Array[String]) method. The stack trace I see is as follows [Note all classes prefixed with org.hypercomp are my custom classes]. : [14:12:54,906][SEVERE][main][GridServiceProcessor] Failed to marshal service with configured marshaller [name=AXLRATE_CHARGING_MODULE, srvc=org.hypercomp.axlrate.charging.loader.AxlRateChargingService@b91d8c4, marsh=o.a.i.i.binary.BinaryMarshaller@6ea1bcdc] class org.apache.ignite.IgniteCheckedException: Duplicate field ID: marker at org.apache.ignite.internal.util.IgniteUtils.marshal(IgniteUtils.java:9883) at org.apache.ignite.internal.processors.service.GridServiceProcessor.prepareServiceConfigurations(GridServiceProcessor.java:534) at org.apache.ignite.internal.processors.service.GridServiceProcessor.deployAll(GridServiceProcessor.java:568) at org.apache.ignite.internal.IgniteServicesImpl.deployAll(IgniteServicesImpl.java:238) at org.apache.ignite.internal.IgniteServicesImpl.deploy(IgniteServicesImpl.java:221) at org.hypercomp.axlrate.utils.imdg.AxlRateImdgManager$AxlRateIgniteImdgManager$.$anonfun$startNode$1(AxlRateImdgManager.scala:80) at org.hypercomp.axlrate.utils.imdg.AxlRateImdgManager$AxlRateIgniteImdgManager$.$anonfun$startNode$1$adapted(AxlRateImdgManager.scala:80) at scala.collection.immutable.List.foreach(List.scala:389) at org.hypercomp.axlrate.utils.imdg.AxlRateImdgManager$AxlRateIgniteImdgManager$.startNode(AxlRateImdgManager.scala:80) at org.hypercomp.axlrate.utils.imdg.AxlRateImdgManager$.startNode(AxlRateImdgManager.scala:115) at org.hypercomp.axlrate.core.loader.AxlRateBoot$.main(AxlRateBoot.scala:92) at org.hypercomp.axlrate.core.loader.AxlRateBoot.main(AxlRateBoot.scala) Caused by: class org.apache.ignite.binary.BinaryObjectException: Duplicate field ID: marker at org.apache.ignite.internal.binary.BinaryClassDescriptor.(BinaryClassDescriptor.java:312) at org.apache.ignite.internal.binary.BinaryContext.registerUserClassDescriptor(BinaryContext.java:780) at org.apache.ignite.internal.binary.BinaryContext.registerClassDescriptor(BinaryContext.java:752) at org.apache.ignite.internal.binary.BinaryContext.descriptorForClass(BinaryContext.java:623) at org.apache.ignite.internal.binary.BinaryWriterExImpl.marshal0(BinaryWriterExImpl.java:164) at org.apache.ignite.internal.binary.BinaryWriterExImpl.marshal(BinaryWriterExImpl.java:147) at org.apache.ignite.internal.binary.BinaryWriterExImpl.marshal(BinaryWriterExImpl.java:134) at org.apache.ignite.internal.binary.BinaryWriterExImpl.doWriteObject(BinaryWriterExImpl.java:496) at org.apache.ignite.internal.binary.BinaryWriterExImpl.writeObjectField(BinaryWriterExImpl.java:1160) at org.apache.ignite.internal.binary.BinaryFieldAccessor$DefaultFinalClassAccessor.write(BinaryFieldAccessor.java:663) at org.apache.ignite.internal.binary.BinaryClassDescriptor.write(BinaryClassDescriptor.java:793)