@Override
 public void processRecords(List<Record> records, IRecordProcessorCheckpointer checkpointer) {
   try {
     if (!protocol.processRecords(records, checkpointer)) {
       throw new RuntimeException("Child process failed to process records");
     }
   } catch (Throwable t) {
     stopProcessing("Encountered an error while trying to process records", t);
   }
 }