Best way to send email notification

@antonio.perez
I was looking at https://github.com/temporalio/samples-java/blob/main/core/src/main/java/io/temporal/samples/batch/iterator/IteratorBatchWorkflowImpl.java

In below code snippet, let’s say if processRecord failed then its going to retry (say unlimited). Then it means promise will not return result. So technically it will not process next batch until we get success from this. Is this assumption correct?

    for (SingleRecord record : records) {
      // Uses human friendly child id.
      String childId = Workflow.getInfo().getWorkflowId() + "/" + record.getId();
      RecordProcessorWorkflow processor =
          Workflow.newChildWorkflowStub(
              RecordProcessorWorkflow.class,
              ChildWorkflowOptions.newBuilder().setWorkflowId(childId).build());
      Promise<Void> result = Async.procedure(processor::processRecord, record);
      results.add(result);
    }
    // Waits for all children to complete.
    Promise.allOf(results).get();

Yes, in this case, a single workflow failing can block the next iteration. See the sliding window example that doesn’t have this issue.