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 <[email protected]> wrote:

 Subject: Re: Failing to deploy service
 To: [email protected]
 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
 <[email protected]>:
 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 <[email protected]>
 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.<init>(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)
 
 
 
 

Reply via email to