Hi there,
When I start my ignite client, I got the following message:
[15:59:04,435][ERROR][tcp-client-disco-msg-worker-#4%127.0.0.1%][TcpDiscoverySpi]
Runtime error caught during grid runnable execution: IgniteSpiThread
[name=tcp-client-disco-msg-worker-#4%127.0.0.1%]
java.lang.AssertionError
at
org.apache.ignite.spi.discovery.tcp.ClientImpl$MessageWorker.updateMetrics(ClientImpl.java:2012)
at
org.apache.ignite.spi.discovery.tcp.ClientImpl$MessageWorker.processHeartbeatMessage(ClientImpl.java:1895)
at
org.apache.ignite.spi.discovery.tcp.ClientImpl$MessageWorker.processDiscoveryMessage(ClientImpl.java:1558)
at
org.apache.ignite.spi.discovery.tcp.ClientImpl$MessageWorker.body(ClientImpl.java:1477)
at org.apache.ignite.spi.IgniteSpiThread.run(IgniteSpiThread.java:62)
~
And there is no more info show in the log file, any idea what's going on ?
I followed into the core code and find that this is due to an assertion check
failed:
/**
* @param nodeId Node ID.
* @param metrics Metrics.
* @param cacheMetrics Cache metrics.
* @param tstamp Timestamp.
*/
private void updateMetrics(UUID nodeId,
ClusterMetrics metrics,
Map<Integer, CacheMetrics> cacheMetrics,
long tstamp)
{
assert nodeId != null;
assert metrics != null;
assert cacheMetrics != null;
....
Which is called from private void
processHeartbeatMessage(TcpDiscoveryHeartbeatMessage msg),
TcpDiscoveryHeartbeatMessage should contains cacheMetrics initialization.
But failed on my client side.
My ignite configuration is defined as:
TcpDiscoveryVmIpFinder ipFinder = new TcpDiscoveryVmIpFinder(false);
List<String> addrs = new ArrayList<String>();
addrs.add(IGNITE_NEW_ADDRESS);
ipFinder.setAddresses(addrs);
TcpDiscoverySpi discoverySpi = new TcpDiscoverySpi();
discoverySpi.setIpFinder(ipFinder);
discoverySpi.setLocalPort(ThreadLocalRandom.current().nextInt(48500,
48520 + 1));
discoverySpi.setJoinTimeout(30000);
discoverySpi.setSocketTimeout(30000);
igniteCCF.setDiscoverySpi(discoverySpi);
TcpCommunicationSpi commSpi = new TcpCommunicationSpi();
commSpi.setSharedMemoryPort(-1);
commSpi.setLocalPort(ThreadLocalRandom.current().nextInt(49530,
49550 + 1));
igniteCCF.setCommunicationSpi(commSpi);
// create ignite instance
ignite = Ignition.start(igniteCCF);
Any configuration I should change? Or add?
Best regards,
Kevin