Don't retry runtime operation if close called on the client. (#313)

* Don't retry if close called on the client.

* Encapsulate closeCalled

* add this.
This commit is contained in:
Serkant Karaca 2018-09-27 15:25:22 -07:00 коммит произвёл GitHub
Родитель ba780ef864
Коммит 4fc6c60288
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
3 изменённых файлов: 7 добавлений и 2 удалений

Просмотреть файл

@ -87,7 +87,7 @@ namespace Microsoft.Azure.EventHubs.Amqp
{
// Evaluate retry condition?
TimeSpan? retryInterval = this.RetryPolicy.GetNextRetryInterval(ex, timeoutHelper.RemainingTime(), ++retryCount);
if (retryInterval != null)
if (retryInterval != null && !this.EventHubClient.CloseCalled)
{
await Task.Delay(retryInterval.Value).ConfigureAwait(false);
shouldRetry = true;

Просмотреть файл

@ -105,7 +105,7 @@ namespace Microsoft.Azure.EventHubs.Amqp
{
// Evaluate retry condition?
TimeSpan? retryInterval = this.RetryPolicy.GetNextRetryInterval(ex, timeoutHelper.RemainingTime(), ++retryCount);
if (retryInterval != null)
if (retryInterval != null && !this.EventHubClient.CloseCalled)
{
await Task.Delay(retryInterval.Value).ConfigureAwait(false);
shouldRetry = true;

Просмотреть файл

@ -18,6 +18,7 @@ namespace Microsoft.Azure.EventHubs
public abstract class EventHubClient : ClientEntity
{
EventDataSender innerSender;
bool closeCalled = false;
internal EventHubClient(EventHubsConnectionStringBuilder csb)
: base($"{nameof(EventHubClient)}{ClientEntity.GetNextId()}({csb.EntityPath})")
@ -241,6 +242,8 @@ namespace Microsoft.Azure.EventHubs
/// <returns></returns>
public sealed override async Task CloseAsync()
{
this.closeCalled = true;
EventHubsEventSource.Log.ClientCloseStart(this.ClientId);
try
{
@ -560,6 +563,8 @@ namespace Microsoft.Azure.EventHubs
set;
}
internal bool CloseCalled { get => this.closeCalled; }
internal EventDataSender CreateEventSender(string partitionId = null)
{
return this.OnCreateEventSender(partitionId);