Beispiel #1
0
            public ByteBuffer Find(ByteBuffer key)
            {
                using TikvConnection connection = new TikvConnection(Database.DatabaseUrl);
                connection.Open();
                using TikvTransaction transaction = connection.BeginTransaction();
                var result = Tikv.Driver.Get(transaction.TransactionId, WithKeyspace(key));

                transaction.Commit();
                return(result);
            }
Beispiel #2
0
            public long Walk(Func <byte[], byte[], bool> callback)
            {
                using TikvConnection connection = new TikvConnection(Database.DatabaseUrl);
                connection.Open();
                using TikvTransaction transaction = connection.BeginTransaction();
                long result = Tikv.Driver.Scan(transaction.TransactionId, KeyPrefix, callback);

                transaction.Commit();
                return(result);
            }
Beispiel #3
0
 public override void Flush(Checkpoint sync, Action flushAction)
 {
     try
     {
         for (int i = 0; i < 60; ++i)
         {
             using TikvConnection connection = new TikvConnection(DatabaseUrl);
             connection.Open();
             CheckpointTikvConnection = connection;
             var Transaction = connection.BeginTransaction();
             try
             {
                 flushAction();
                 if (null != sync) // null for test
                 {
                     CommitReady.Set();
                     sync.WaitAllReady();
                 }
                 Transaction.Commit();
                 return;
             }
             catch (Exception ex)
             {
                 CommitReady.Reset();
                 Transaction.Rollback();
                 logger.Warn(ex, "Checkpoint error.");
             }
             Thread.Sleep(1000);
         }
         logger.Fatal("Checkpoint too many try.");
         Environment.Exit(54321);
     }
     finally
     {
         CheckpointTikvConnection = null;
     }
 }
Beispiel #4
0
 internal TikvTransaction(TikvConnection conn)
 {
     Connection    = conn;
     TransactionId = Tikv.Driver.Begin(conn.ClientId);
 }