title: Hazelcast best practices to failover in parallel processing
body: <p>I'm new to Hazelcast. So have a question about best failure handling practices during parallel processing:</p>
  
  <p><em>Mastering Hazelcast, section 6.6, p. 96:</em></p>
  
  <blockquote>
    <p><em>Work-queue has no high availability</em>: Each member will create one or
    more local ThreadPoolExecutors with ordinary work-queues that do the
    real work. When a task is submitted, it will be put on the work-queue
    of that ThreadPoolExecutor and will not be backed up by Hazelcast. If
    something would happen with that member, all unprocessed work will be
    lost.</p>
  </blockquote>
  
  <p><strong>Task:</strong></p>
  
  <p>Suppose I've got 1 master node and 2 slaves. I launch time consuming task with </p>
  
  <pre><code>executor.submitToAllMembers (new TimeConsumingTask())
  </code></pre>
  
  <p>So each node is processing something. And while they all are processing something one of the slaves fails</p>
  
  <p><strong>Questions:</strong> </p>
  
  <ol>
  <li><em>That's not possible to rerun the failed member work on another node, right?</em></li>
  <li><em>Is there any other (preferably better) approach than rerun the whole job set across the whole cluster?</em> (In case if <code>TimeConsumingTask</code> is <code>Runnable</code>)</li>
  <li><em>Is there any other (preferably better) approach than rerun the whole job set across the whole cluster?</em> (In case if <code>TimeConsumingTask</code> is <code>Callable</code> and I want to get a <code>Future</code> as a cluster computation result)</li>
  </ol>