コード例 #1
0
    private static async Task CommitAndVerifyTransactionAsync(
        KuduClient client, KuduTransaction transaction)
    {
        var tsBeforeCommit = client.LastPropagatedTimestamp;
        await transaction.CommitAsync();

        Assert.Equal(tsBeforeCommit, client.LastPropagatedTimestamp);

        await transaction.WaitForCommitAsync();

        var tsAfterCommit = client.LastPropagatedTimestamp;

        Assert.True(tsAfterCommit > tsBeforeCommit);

        // A sanity check: calling WaitForCommitAsync() again after the commit phase
        // has been finalized doesn't change last propagated timestamp at the
        // client side.
        for (int i = 0; i < 10; ++i)
        {
            await transaction.WaitForCommitAsync();

            Assert.Equal(tsAfterCommit, client.LastPropagatedTimestamp);
            await Task.Delay(10);
        }
    }
コード例 #2
0
    private static KuduTransaction MakeFakeTransaction(
        KuduClient client, KuduTransaction transaction)
    {
        var buf = transaction.Serialize();
        var pb  = TxnTokenPB.Parser.ParseFrom(buf);

        Assert.True(pb.HasTxnId);
        var txnId = pb.TxnId;

        Assert.True(txnId > KuduClient.InvalidTxnId);

        var fakeTxnId = txnId + 123;
        var message   = new TxnTokenPB
        {
            TxnId           = fakeTxnId,
            EnableKeepalive = false,
            KeepaliveMillis = 0
        };

        var fakeTxnBuf = ProtobufHelper.ToByteArray(message);

        return(client.NewTransactionFromToken(fakeTxnBuf));
    }