private void ReleaseAllTableLock() { string message = "Begin release all table lock."; mLogHelper.LogMessage(mClientKey, message, LogType.ReadWriteTableLock); lock (mReadLockList) { foreach (string name in mReadLockList) { mTableUnitManager.ReleaseReadTableLock(name); message = string.Format("Table Lock Error: {0} ReadLock.", name); mLogHelper.LogMessage(mClientKey, message, LogType.ReadWriteTableLock); } mReadLockList.Clear(); } lock (mWriteLockList) { foreach (string name in mWriteLockList) { mTableUnitManager.ReleaseWriteTableLock(name); message = string.Format("Table Lock Error: {0} WriteLock.", name); mLogHelper.LogMessage(mClientKey, message, LogType.ReadWriteTableLock); } mWriteLockList.Clear(); } message = "End release all table lock."; mLogHelper.LogMessage(mClientKey, message, LogType.ReadWriteTableLock); }
public int[] UTUniteTable(string tblname, string todbname, string[] dblist) { string dbs = TableHelper.ArrayToString(dblist); string message = string.Format("Begin unite table. tblname = {0}, dbnames = {1}.", tblname, dbs); mLogHelper.LogMessage(mClientKey, message, LogType.Modify); int[] nRet = new int[] { -1, -1 }; bool bExist = true; foreach (string db in dblist) { if (!UTExistDatabase(db)) { bExist = false; } } if (UTExistDatabase(todbname) && bExist) { foreach (string db in dblist) { TableUnitManager mgr = TableHelper.GetTableUnitManangerByDbname(db); if (db == todbname) { mgr.AcquireWriteTableLock(tblname); mUniteWriteLockList.Add(tblname); message = string.Format("AcquireWriteTableLock: dbname = {0}, tblname = {1}.", db, tblname); } else { mgr.AcquireReadTableLock(tblname); mUniteReadLockList.Add(tblname); message = string.Format("AcquireReadTableLock: dbname = {0}, tblname = {1}.", db, tblname); } mLogHelper.LogMessage(mClientKey, message, LogType.ReadWriteTableLock); } try { nRet = AppTableUnite.UniteTables(tblname, todbname, dblist); message = string.Format("End unit table. modify {0} rows, add {1} rows.", nRet[1], nRet[0]); mLogHelper.LogMessage(mClientKey, message, LogType.Modify); } catch (Exception ex) { throw ex; } finally { foreach (string db in dblist) { TableUnitManager mgr = TableHelper.GetTableUnitManangerByDbname(db); if (db == todbname) { mgr.ReleaseWriteTableLock(tblname); mUniteWriteLockList.RemoveAt(0); message = string.Format("ReleaseWriteTableLock: dbname = {0}, tblname = {1}.", db, tblname); } else { mgr.ReleaseReadTableLock(tblname); mUniteReadLockList.RemoveAt(0); message = string.Format("ReleaseWriteTableLock: dbname = {0}, tblname = {1}.", db, tblname); } mLogHelper.LogMessage(mClientKey, message, LogType.ReadWriteTableLock); } } } return(nRet); }