- 优化 连接池不可用、定时检查;

This commit is contained in:
2881099
2022-05-28 22:09:45 +08:00
parent 67b4e8fbe1
commit 4c7de1da8a
25 changed files with 222 additions and 372 deletions

View File

@ -34,12 +34,8 @@ namespace FreeSql.Odbc.Default
{
if (exception != null && exception is OdbcException)
{
if (obj.Value.Ping() == false)
{
base.SetUnavailable(exception);
}
base.SetUnavailable(exception, obj.LastGetTimeCopy);
}
base.Return(obj, isRecreate);
}
@ -56,7 +52,7 @@ namespace FreeSql.Odbc.Default
public int AsyncGetCapacity { get; set; } = 10000;
public bool IsThrowGetTimeoutException { get; set; } = true;
public bool IsAutoDisposeWithSystem { get; set; } = true;
public int CheckAvailableInterval { get; set; } = 5;
public int CheckAvailableInterval { get; set; } = 2;
public int Weight { get; set; } = 1;
static ConcurrentDictionary<string, int> dicConnStrIncr = new ConcurrentDictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
@ -124,9 +120,8 @@ namespace FreeSql.Odbc.Default
if (obj.Value == null)
{
if (_pool.SetUnavailable(new Exception("连接字符串错误")) == true)
throw new Exception($"【{this.Name}】连接字符串错误,请检查。");
return;
_pool.SetUnavailable(new Exception("连接字符串错误"), obj.LastGetTimeCopy);
throw new Exception($"【{this.Name}】连接字符串错误,请检查。");
}
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && obj.Value.Ping() == false)
@ -138,8 +133,9 @@ namespace FreeSql.Odbc.Default
}
catch (Exception ex)
{
if (_pool.SetUnavailable(ex) == true)
if (_pool.SetUnavailable(ex, obj.LastGetTimeCopy) == true)
throw new Exception($"【{this.Name}】Block access and wait for recovery: {ex.Message}");
throw ex;
}
}
}
@ -155,9 +151,8 @@ namespace FreeSql.Odbc.Default
if (obj.Value == null)
{
if (_pool.SetUnavailable(new Exception("连接字符串错误")) == true)
throw new Exception($"【{this.Name}】连接字符串错误,请检查。");
return;
_pool.SetUnavailable(new Exception("连接字符串错误"), obj.LastGetTimeCopy);
throw new Exception($"【{this.Name}】连接字符串错误,请检查。");
}
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
@ -169,8 +164,9 @@ namespace FreeSql.Odbc.Default
}
catch (Exception ex)
{
if (_pool.SetUnavailable(ex) == true)
if (_pool.SetUnavailable(ex, obj.LastGetTimeCopy) == true)
throw new Exception($"【{this.Name}】Block access and wait for recovery: {ex.Message}");
throw ex;
}
}
}