Bug 2055: Handle Tx create in TransactionProxy resiliently
Modified TransactionProxy to utilize the FindPrimaryShard
functionality
to wait until the shard is initialized. Also added retries to
the CreateTransaction operation to wait a period of time for the
shard
to elect a leader. This makes it more resilient to avoid transient
timing/sequencing failures, particularly on startup.
In addition, the FindPrimaryShard and CreateTransaction operations
are now
done async (non-blocking). The futures are combined to yield the
CreateTransactionReply which is passed to a new class
TransactionFutureCallback on completion. The
TransactionFutureCallback
class creates and stores the TransactionContext which subsequent
read/write/delete/ready transaction operations can access. If a
transaction operation occurs before CreateTransaction completes, the
operation is cached in TransactionFutureCallback and executed when
the CreateTransaction future completes.
Change-Id: Id9cdc9641038922d6209c44d924bd168658a71fb
Signed-off-by: tpantelis <tpanteli@brocade.com>
14 files changed: