コード例 #1
0
        public void DatabaseShouldBeDropped()
        {
            _env.MaxDatabases = 2;
            _env.Open();
            _txn = _env.BeginTransaction();
            var db = _txn.OpenDatabase("notmaster", new DatabaseConfiguration {
                Flags = DatabaseOpenFlags.Create
            });

            _txn.Commit();
            _txn.Dispose();
            db.Dispose();

            _txn = _env.BeginTransaction();
            db   = _txn.OpenDatabase("notmaster");

            db.Drop(_txn);
            _txn.Commit();
            _txn.Dispose();

            _txn = _env.BeginTransaction();

            var ex = Assert.Throws <LightningException>(() => _txn.OpenDatabase("notmaster"));

            Assert.Equal(ex.StatusCode, -30798);
        }
コード例 #2
0
        private void CommitInternal(ITransaction transaction)
        {
            Stopwatch sw = new Stopwatch();

            ValidateTransaction(transaction);
            LightningTransaction lmdbTransaction = (LightningTransaction)transaction.InnerObject;

            sw.Start();
            lmdbTransaction.Commit();
            sw.Stop();

            ChangeDataSize(((LMDBTransaction)transaction).Size);

            if (!transaction.IsReadOnly)
            {
                if (_readerTransaction != null)
                {
                    lock (_readerTransactionLock)
                    {
                        if (_readerTransaction != null)
                        {
                            _readerTransaction.MarkForCommit();
                            //_readerTransaction = null;
                        }
                    }
                }
            }

            if (LoggerManager.Instance.StorageLogger != null)
            {
                LoggerManager.Instance.StorageLogger.Debug("LMDBPersistanceProvider", "LMDB Commit Time: " + sw.ElapsedMilliseconds + " (ms)");
            }
        }
コード例 #3
0
        public void Cleanup()
        {
            _txn.Commit();
            _env.Close();

            if (Directory.Exists(_path))
            {
                Directory.Delete(_path, true);
            }
        }
コード例 #4
0
        public void TransactionShouldChangeStateOnCommit()
        {
            //arrange
            _txn = _env.BeginTransaction();

            //act
            _txn.Commit();

            //assert
            Assert.AreEqual(LightningTransactionState.Commited, _txn.State);
        }
コード例 #5
0
        public void TransactionShouldChangeStateOnCommit()
        {
            //arrange
            _txn = _env.BeginTransaction();

            //act
            _txn.Commit();

            //assert
            Assert.AreEqual(LightningTransactionState.Commited, _txn.State);
        }
コード例 #6
0
        private void SaveKV(LightningTransaction tx, byte[] key, double value)
        {
            var byteValue = BitConverter.GetBytes(value);

            using (var db = tx.OpenDatabase("kv", new DatabaseConfiguration {
                Flags = DatabaseOpenFlags.Create
            }))
            {
                tx.Put(db, key, byteValue);
                tx.Commit();
            }
        }
コード例 #7
0
        public void ChildTransactionShouldBeAbortedIfParentIsCommited()
        {
            //arrange
            _txn = _env.BeginTransaction();
            var child = _txn.BeginTransaction();

            //act
            _txn.Commit();

            //assert
            Assert.AreEqual(LightningTransactionState.Aborted, child.State);
        }
コード例 #8
0
        public void TruncatingTheDatabase()
        {
            _env.Open();
            _txn = _env.BeginTransaction();
            var db = _txn.OpenDatabase();

            _txn.Put(db, "hello", "world");
            _txn.Commit();
            _txn.Dispose();
            _txn = _env.BeginTransaction();
            db   = _txn.OpenDatabase();
            db.Truncate(_txn);
            _txn.Commit();
            _txn.Dispose();
            _txn = _env.BeginTransaction();
            db   = _txn.OpenDatabase();
            var result = _txn.Get(db, UTF8.GetBytes("hello"));

            Assert.Equal(MDBResultCode.NotFound, result.resultCode);
        }
コード例 #9
0
        public void TruncatingTheDatabase()
        {
            _env.Open();
            _txn = _env.BeginTransaction();
            var db = _txn.OpenDatabase();

            _txn.Put(db, "hello", "world");
            _txn.Commit();
            _txn.Dispose();
            _txn = _env.BeginTransaction();
            db   = _txn.OpenDatabase();
            db.Truncate(_txn);
            _txn.Commit();
            _txn.Dispose();
            _txn = _env.BeginTransaction();
            db   = _txn.OpenDatabase();
            var result = _txn.Get(db, UTF8.GetBytes("hello"));

            Assert.Null(result);
        }
コード例 #10
0
        public void CanCommitTransactionToNamedDatabase()
        {
            using (var db = _txn.OpenDatabase("test", new DatabaseConfiguration {
                Flags = DatabaseOpenFlags.Create
            }))
            {
                _txn.Put(db, "key1", "value");

                _txn.Commit();
            }

            using (var txn2 = _env.BeginTransaction())
            {
                using (var db = txn2.OpenDatabase("test"))
                {
                    var value = txn2.Get(db, "key1");
                    Assert.Equal("value", value);
                }
            }
        }
コード例 #11
0
 public static bool PutVulnerabilities(List <OSSIndexVulnerability> vulnerabilities)
 {
     if (!Environment.IsOpened)
     {
         Environment.MapSize = 2L * 1024L * 1024L * 1024L;
         Environment.Open(EnvironmentOpenFlags.None);
     }
     using (LightningTransaction tx = Environment.BeginTransaction())
         using (LightningDatabase db = tx.OpenDatabase(null, new DatabaseConfiguration {
             Flags = DatabaseOpenFlags.Create
         }))
         {
             try
             {
                 foreach (OSSIndexVulnerability v in vulnerabilities)
                 {
                     /*
                      * using (MemoryStream ms = new MemoryStream())
                      * using (BsonWriter writer = new BsonWriter(ms))
                      * {
                      *  JsonSerializer serializer = new JsonSerializer();
                      *  serializer.Serialize(writer, v);
                      * }
                      */
                     tx.Put(db, Encoding.UTF8.GetBytes(string.IsNullOrEmpty(v.Vid) ? v.Url : v.Vid + "#" + v.Group), Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(v)));
                 }
                 tx.Commit();
                 logger.Debug("Committed {0} vulnerabilities to database.", vulnerabilities.Count);
                 return(true);
             }
             catch (LightningException e)
             {
                 logger.Error("Exception thrown attempting to write vulnerabilities to database.");
                 logger.Error(e);
                 return(false);
             }
         }
 }
コード例 #12
0
        public void ChildTransactionShouldBeAbortedIfParentIsCommited()
        {
            //arrange
            _txn = _env.BeginTransaction();
            var child = _txn.BeginTransaction();

            //act
            _txn.Commit();

            //assert
            Assert.AreEqual(LightningTransactionState.Aborted, child.State);
        }
コード例 #13
0
        public void TruncatingTheDatabase()
        {
            _env.Open();
            _txn = _env.BeginTransaction();
            var db = _txn.OpenDatabase();

            _txn.Put(db, "hello", "world");
            _txn.Commit();
            _txn.Dispose();
            _txn = _env.BeginTransaction();
            db = _txn.OpenDatabase();
            db.Truncate(_txn);
            _txn.Commit();
            _txn.Dispose();
            _txn = _env.BeginTransaction();
            db = _txn.OpenDatabase();
            var result = _txn.Get(db, UTF8.GetBytes("hello"));

            Assert.Null(result);
        }
コード例 #14
0
 public void Commit() => _tx.Commit();
コード例 #15
0
 void ITransaction.Commit()
 {
     using (_transaction)
         _transaction.Commit();
 }
コード例 #16
0
ファイル: LmdbEnv.cs プロジェクト: vitormixd/geyser-net
 public void Commit()
 {
     TraceStart("mdb_txn_commit");
     _tx.Commit();
     TraceStop("mdb_txn_commit");
 }
コード例 #17
0
        public void DatabaseShouldBeDropped()
        {
            _env.MaxDatabases = 2;
            _env.Open();
            _txn = _env.BeginTransaction();
            var db = _txn.OpenDatabase("notmaster", new DatabaseConfiguration {Flags = DatabaseOpenFlags.Create});
            _txn.Commit();
            _txn.Dispose();
            db.Dispose();

            _txn = _env.BeginTransaction();
            db = _txn.OpenDatabase("notmaster");

            db.Drop(_txn);
            _txn.Commit();
            _txn.Dispose();

            _txn = _env.BeginTransaction();

            var ex = Assert.Throws<LightningException>(() => _txn.OpenDatabase("notmaster"));

            Assert.Equal(ex.StatusCode, -30798);
        }