Can different nodes have different collisionSpi settings? What setting would take effect - the collisionSpi used to start the grid or the setting on the node executing the job or the setting on the node that submitted the task?

I recently encountered a log file that could only have been generated if two jobs were executing on a node concurrently. I have three nodes. Two are started via ignite.bat and configured with parallelJobsNumber=1.

Due to some recent changes the third node lost its collisionSpi configuration. Notice in java code below that the collisionSpi on that node isn't specified.

The behavior I'm seeing suggests that it is the grid configuration on the node submitting the task that matters - is that the case?

Two nodes started with this:

<bean id="grid.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
        <property name="marshaller">
<bean class="org.apache.ignite.marshaller.optimized.OptimizedMarshaller">
                <property name="requireSerializable" value="false"/>
            </bean>
        </property>

        <property name="collisionSpi">
<bean class="org.apache.ignite.spi.collision.fifoqueue.FifoQueueCollisionSpi">
                <property name="parallelJobsNumber" value="1"/>
            </bean>
        </property>
        <property name="metricsLogFrequency" value="0"/>
    </bean>

The third node starts and submits a task via something similar to:

try {
    IgniteConfiguration igniteConfig = new IgniteConfiguration();
    igniteConfig.setMarshaller(new OptimizedMarshaller());
    Ignite grid = Ignition.start(igniteConfig);
    ClusterGroup forRemotes = grid.cluster().forRemotes();
    MyComputeTask task = new MyComputeTask();
    IgniteCompute withAsync = grid.compute(forRemotes).withAsync();
    withAsync.execute(task, options);
    future = withAsync.future();
    Boolean retval1 = Boolean.FALSE;
    try {
        retval1 = future.get();
    } catch (IgniteException e) {
        e.printStackTrace();
    }
    retval = retval1;

} catch (IgniteException e) {
    e.printStackTrace();
} finally {
    Ignition.stop(true);
}


Reply via email to