code: @Override
      public void run(final Iterable<Object[]> buffer) throws Exception {
  
          try (UpdateableDatastoreConnection con = datastore.openConnection()) {
              final Column[] whereColumns =
                      con.getSchemaNavigator().convertToColumns(schemaName, tableName, conditionColumnNames);
              final UpdateableDataContext dc = con.getUpdateableDataContext();
              dc.executeUpdate((BatchUpdateScript) callback -> {
                  int deleteCount = 0;
                  for (final Object[] rowData : buffer) {
                      RowDeletionBuilder deletionBuilder = callback.deleteFrom(tableName);
  
                      for (int i = 0; i < whereColumns.length; i++) {
                          final Object value = rowData[i];
                          final Column whereColumn = whereColumns[i];
                          final FilterItem filterItem =
                                  new FilterItem(new SelectItem(whereColumn), OperatorType.EQUALS_TO, value);
  
                          deletionBuilder = deletionBuilder.where(filterItem);
                      }
  
                      if (logger.isDebugEnabled()) {
                          logger.debug("Updating: {}", Arrays.toString(rowData));
                      }
  
                      try {
                          deletionBuilder.execute();
                          deleteCount++;
                          _updatedRowCount.incrementAndGet();
                      } catch (final RuntimeException e) {
                          errorOccurred(rowData, e);
                      }
                  }
  
                  if (deleteCount > 0) {
                      _componentContext.publishMessage(new ExecutionLogMessage(deleteCount + " deletes executed"));
                  }
              });
          }
      }
docs: Method invoked when flushing the buffer