Re: Failing to deploy service

2018-04-04 Thread Neeraj Vaidya
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

2018-04-04 Thread Neeraj Vaidya
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

2018-04-04 Thread Denis Mekhanikov
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

2018-04-04 Thread Neeraj Vaidya
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

2018-04-04 Thread Denis Mekhanikov
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

2018-04-04 Thread 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 
> 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

2018-04-04 Thread Denis Mekhanikov
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

2018-04-03 Thread 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)