Exemplo n.º 1
0
        /// <summary>
        /// Abort a transaction is used when begin and has no changes yet - no writes, no checks
        /// </summary>
        public void Abort()
        {
            if (_level == 0)
            {
                return;
            }

            if (_level == 1)
            {
                _disk.UnLock();

                _level = 0;
            }
            else
            {
                _level--;
            }
        }
Exemplo n.º 2
0
        private void DoRecovery(BinaryReader reader)
        {
            // open disk service
            using (var disk = new DiskService(_connectionString))
            {
                disk.Lock();

                // while pages, read from redo, write on disk
                while (reader.BaseStream.Position != reader.BaseStream.Length)
                {
                    var page = this.ReadPageJournal(reader);

                    disk.WritePage(page);
                }

                reader.Close();

                disk.UnLock();
            }
        }