in client/Apache.ShenYu.Client/Utils/Zookeeper/ZookeeperClient.cs [100:134]
public async Task<T> RetryUntilConnected<T>(Func<Task<T>> callable)
{
var operationStartTime = DateTime.Now;
while (true)
{
try
{
return await callable();
}
catch (KeeperException.ConnectionLossException)
{
#if NET40
await TaskEx.Yield();
#else
await Task.Yield();
#endif
this.WaitForRetry();
}
catch (KeeperException.SessionExpiredException)
{
#if NET40
await TaskEx.Yield();
#else
await Task.Yield();
#endif
this.WaitForRetry();
}
if (DateTime.Now - operationStartTime > _options.OperatingSpanTimeout)
{
throw new TimeoutException(
$"Operation cannot be retried because of retry timeout ({_options.OperatingSpanTimeout.TotalMilliseconds} milli seconds)");
}
}
}