class Shard extends RaftActor {

    @SuppressWarnings("checkstyle:IllegalCatch")
    private void createTransaction(final CreateTransaction createTransaction) {
        askProtocolEncountered(createTransaction.getTransactionId());

        try {
            if (TransactionType.fromInt(createTransaction.getTransactionType()) != TransactionType.READ_ONLY
                    && failIfIsolatedLeader(getSender())) {
                return;
            }

            ActorRef transactionActor = createTransaction(createTransaction.getTransactionType(),
                createTransaction.getTransactionId());

            getSender().tell(new CreateTransactionReply(Serialization.serializedActorPath(transactionActor),
                    createTransaction.getTransactionId(), createTransaction.getVersion()).toSerializable(), getSelf());
        } catch (Exception e) {
            getSender().tell(new Failure(e), getSelf());
        }
    }

    protected  Shard(final AbstractBuilder<?, ?> builder);

}