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); }
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); }
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; } }