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)