DB Connection pooling is now used on all requests (including ones outside of transactions)

main
Inga 🏳‍🌈 15 years ago
parent 406cdf2076
commit 4373412fa9
  1. 2
      Builder/IISMainHandler/build.txt
  2. 2
      Builder/IISUploadHandler/build.txt
  3. 29
      MySQLConnector/Connection.cs

@ -12,7 +12,7 @@ namespace FLocal.MySQLConnector {
internal readonly IDBTraits traits;
private DbConnection connection;
// private DbConnection connection;
private string connectionString;
private HashSet<Transaction> transactions;
@ -20,8 +20,9 @@ namespace FLocal.MySQLConnector {
public Connection(string connectionString, IDBTraits traits) {
this.traits = traits;
this.connectionString = connectionString;
this.connection = this.traits.createConnection(this.connectionString);
this.connection.Open();
using(DbConnection connection = this.createConnection()) {
//just testing we can open a connection
}
this.transactions = new HashSet<Transaction>();
}
@ -32,7 +33,6 @@ namespace FLocal.MySQLConnector {
}
private List<Dictionary<string, string>> _LoadByIds(DbCommand command, ITableSpec table, List<string> ids, bool forUpdate) {
lock(this) {
command.CommandType = System.Data.CommandType.Text;
ParamsHolder paramsHolder = new ParamsHolder();
@ -74,11 +74,10 @@ namespace FLocal.MySQLConnector {
}
return result;
}
}
public List<Dictionary<string, string>> LoadByIds(ITableSpec table, List<string> ids) {
lock(this) {
using(DbCommand command = this.connection.CreateCommand()) {
using(DbConnection connection = this.createConnection()) {
using(DbCommand command = connection.CreateCommand()) {
return this._LoadByIds(command, table, ids, false);
}
}
@ -151,16 +150,16 @@ namespace FLocal.MySQLConnector {
}
public List<string> LoadIdsByConditions(ITableSpec table, FLocal.Core.DB.conditions.AbstractCondition conditions, Diapasone diapasone, JoinSpec[] joins, SortSpec[] sorts, bool allowHugeLists) {
lock(this) {
using(DbCommand command = this.connection.CreateCommand()) {
using(DbConnection connection = this.createConnection()) {
using(DbCommand command = connection.CreateCommand()) {
return this._LoadIdsByConditions(command, table, conditions, diapasone, joins, sorts, allowHugeLists);
}
}
}
public long GetCountByConditions(ITableSpec table, FLocal.Core.DB.conditions.AbstractCondition conditions, JoinSpec[] joins) {
lock(this) {
using(DbCommand command = this.connection.CreateCommand()) {
using(DbConnection connection = this.createConnection()) {
using(DbCommand command = connection.CreateCommand()) {
command.CommandType = System.Data.CommandType.Text;
@ -238,7 +237,7 @@ namespace FLocal.MySQLConnector {
public List<string> LoadIdsByConditions(FLocal.Core.DB.Transaction _transaction, ITableSpec table, FLocal.Core.DB.conditions.AbstractCondition conditions, Diapasone diapasone, JoinSpec[] joins, SortSpec[] sorts, bool allowHugeLists) {
Transaction transaction = (Transaction)_transaction;
lock(this) {
lock(transaction) {
using(DbCommand command = transaction.sqlconnection.CreateCommand()) {
command.Transaction = transaction.sqltransaction;
return this._LoadIdsByConditions(command, table, conditions, diapasone, joins, sorts, allowHugeLists);
@ -316,9 +315,9 @@ namespace FLocal.MySQLConnector {
}
this.transactions.Clear();
this.transactions = null;
this.connection.Close();
this.connection.Dispose();
this.connection = null;
// this.connection.Close();
// this.connection.Dispose();
// this.connection = null;
}
}

Loading…
Cancel
Save