Uploaded image for project: 'Kudu'
  1. Kudu
  2. KUDU-1698

Kudu C++ client: add a new unit test to make sure default_rpc_timeout and session timeout are separate entities

    XMLWordPrintableJSON

Details

    • Task
    • Status: Resolved
    • Minor
    • Resolution: Fixed
    • None
    • n/a
    • client, test

    Description

      We need a new unit test that makes sure there is a difference between top-level operation timeout and per-call RPC timeout in Kudu C++ client library. Prior to change introduced in 5195ce573850653e0e53094cdd35a1da93d33444 it was the same (which was a bug).

      The test should:

      • set per-call RPC timeout when creating KuduClient object
      • set KuduSession::SetTimeoutMillis() for the target session: the value should be 2 times of per-call RPC timeout or such.
      • create a tablet with replication factor of 2 at least.
      • find current tablet replica leader and pause it (send SIGSTOP)
      • make a write into the table
      • make sure the write operation was successful

      Prior to change introduced in 5195ce573850653e0e53094cdd35a1da93d33444 such a test would fail because the C++ client used the full operation deadline on every RPC call.

      I.e., it would wait till the call to current leader times out, and that would consume time budget of the whole operation. Once RPC timeout is less thatn the timeout for the whole write operation, the call to the frozen tablet server should timeout, and the client should re-discover a new tablet replicate leader and complete the write operation successfully.

      Attachments

        Activity

          People

            abakai Bakai Ádám
            aserbin Alexey Serbin
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: