Будет ли Cloud Dataflow генерировать исключения при выполнении автоматического масштабирования? - PullRequest
0 голосов
/ 04 июля 2019

В настоящее время мы используем Dataflow для запуска потокового задания. В этой работе мы выполняем транзакции хранилища данных в следующей форме:

Entity task;
Transaction txn = datastore.newTransaction();
try {
  task = txn.get(taskKey);
  update(task);
  txn.put(task);
  txn.commit();
} finally {
  if (txn.isActive()) {
    txn.rollback();
  }
}

В случае увеличения / уменьшения мы видим множество исключений, которые активируют rollback. Это будет означать, что транзакция все еще активна и оператор commit никогда не выполнялся. Однако мы не видим исключений хранилища данных в этом случае.

Мы подозреваем, что Dataflow отменяет активную обработку элементов и повторяет их в масштабированном конвейере. Это тогда бросило бы необработанное исключение и выполнило бы шаги finally. Для некоторых элементов это будет до commit, что объясняет поведение.

Кроме того, исключение может не отображаться потоком данных, поскольку они являются внутренними.

Если вышеприведенное не так, может показаться, что реализация транзакции является ошибочной, что, разумеется, мы считаем правильным.

Правильно ли рассуждение? Или есть другое объяснение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...