Hello!

You should probably start KafkaStreamer on remote node when the service is
initialized (init()), instead of starting it in e.g. constructor and trying
to send it to remote node.

Avoid putting fat instances in the fields of service/compute/predicate
classes.

Regards,
-- 
Ilya Kasnacheev


чт, 2 июл. 2020 г. в 10:42, Maxim Volkomorov <2201...@gmail.com>:

> I have 1 DataNod and 1 Service with streaming. I have a filter for service:
>
> <property name="nodeFilter">
> <bean class="common.filters.KafkaStreamerServiceFilter"/>
> </property>
>
> public boolean apply(ClusterNode node) {
> Boolean dataNode = node.attribute("kafkastreamer.service.node");
>
> return dataNode != null && dataNode;
> }
>
>
> I have a marshalling error java.io.NotSerializableException:
> org.apache.ignite.stream.kafka.KafkaStreamer using KafkaStreamer in my
> Service:
>
> private KafkaStreamer<String, String> kafkaStreamer = new
> KafkaStreamer<>();
>
> I only can start service with:
>
> private static KafkaStreamer<String, String> kafkaStreamer = new
> KafkaStreamer<>();
>
> Is it because Ignite trying data transfer KafkaStreamer instance between
> nodes?
>
> Log:
>
> [2020-07-02 10:27:47,552][ERROR][main][IgniteServiceProcessor] Failed to
> marshal service with configured marshaller [name=KafkaStreamerService,
> srvc=services.kafkastreamer.KafkaStreamerService@3dedb4a6,
> marsh=JdkMarshaller [clsFilter=null]]
> class org.apache.ignite.IgniteCheckedException: Failed to serialize
> object: services.kafkastreamer.KafkaStreamerService@3dedb4a6
> at
> org.apache.ignite.marshaller.jdk.JdkMarshaller.marshal0(JdkMarshaller.java:102)
> at
> org.apache.ignite.marshaller.jdk.JdkMarshaller.marshal0(JdkMarshaller.java:109)
> at
> org.apache.ignite.marshaller.AbstractNodeNameAwareMarshaller.marshal(AbstractNodeNameAwareMarshaller.java:57)
> at
> org.apache.ignite.internal.util.IgniteUtils.marshal(IgniteUtils.java:10386)
> at
> org.apache.ignite.internal.processors.service.IgniteServiceProcessor.prepareServiceConfigurations(IgniteServiceProcessor.java:583)
> at
> org.apache.ignite.internal.processors.service.IgniteServiceProcessor.staticallyConfiguredServices(IgniteServiceProcessor.java:1541)
> at
> org.apache.ignite.internal.processors.service.IgniteServiceProcessor.collectJoiningNodeData(IgniteServiceProcessor.java:354)
> at
> org.apache.ignite.internal.managers.discovery.GridDiscoveryManager$5.collect(GridDiscoveryManager.java:861)
> at
> org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi.collectExchangeData(TcpDiscoverySpi.java:2032)
> at
> org.apache.ignite.spi.discovery.tcp.ServerImpl.joinTopology(ServerImpl.java:1029)
> at
> org.apache.ignite.spi.discovery.tcp.ServerImpl.spiStart(ServerImpl.java:427)
> at
> org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi.spiStart(TcpDiscoverySpi.java:2099)
> at
> org.apache.ignite.internal.managers.GridManagerAdapter.startSpi(GridManagerAdapter.java:299)
> at
> org.apache.ignite.internal.managers.discovery.GridDiscoveryManager.start(GridDiscoveryManager.java:943)
> at
> org.apache.ignite.internal.IgniteKernal.startManager(IgniteKernal.java:1960)
> at org.apache.ignite.internal.IgniteKernal.start(IgniteKernal.java:1276)
> at
> org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start0(IgnitionEx.java:2045)
> at
> org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start(IgnitionEx.java:1703)
> at org.apache.ignite.internal.IgnitionEx.start0(IgnitionEx.java:1117)
> at
> org.apache.ignite.internal.IgnitionEx.startConfigurations(IgnitionEx.java:1035)
> at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:921)
> at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:820)
> at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:690)
> at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:659)
> at org.apache.ignite.Ignition.start(Ignition.java:346)
> at
> app.KafkaStreamerServiceNodeStartup.main(KafkaStreamerServiceNodeStartup.java:40)
> Caused by: java.io.NotSerializableException:
> org.apache.ignite.stream.kafka.KafkaStreamer
> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)
> at
> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
> at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
> at
> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
> at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
> at
> org.apache.ignite.marshaller.jdk.JdkMarshaller.marshal0(JdkMarshaller.java:97)
> ... 25 more
>

Reply via email to