无法重现SqlAzureExecutionStrategy异常

时间:2016-01-08 11:42:19

标签: c# sql-server azure exception

我有JPA 2.1 spec例外,我无法重现它。根据文档,它用于 SqlAzureExecutionStrategy 失败,因此复制它可能很困难。

我已经在Azure中破坏了这个过程,所以我希望有一些日志可以告诉我更多细节。我在门户网站上找不到类似的东西。这些信息在哪里?

1 个答案:

答案 0 :(得分:0)

我自己没试过(所以我在这里可能完全错了 - 如果我,请告诉我:))。

此外,我的理解是,您要测试的是您已定义的执行策略是否正常,重试次数和重试之间的延迟。

你的观察是正确的,因为事情不在你的掌控之中,很难模拟瞬态错误。但是,查看文档和一些示例,您可以执行的操作是覆盖SqlAzureExecutionStrategy.ShouldRetryOn并插入自定义逻辑以进行失败。因此,您可以将Failed Login尝试作为暂时性错误添加,然后查看此事是否适合您(就重试和重试延迟而言)。

请考虑此示例(source),其中作者将SqlError with Number == -2视为暂时性错误。

protected override bool ShouldRetryOn(Exception exception)
{
  bool shouldRetry = false;

  SqlException sqlException = exception as SqlException;
  if (sqlException != null)
  {
    foreach (SqlError error in sqlException.Errors)
    {
      if (error.Number == -2)
        shouldRetry = true;
    }
  }

  shouldRetry = shouldRetry || base.ShouldRetryOn(exception);

  Logger.WriteLog("ShouldRetryOn: " + shouldRetry);
  return shouldRetry;
}