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)