Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }