use of akka.pattern.AskTimeoutException in project controller by opendaylight.
the class RemoteTransactionContextSupport method createTransactionContext.
private void createTransactionContext(final Throwable failure, final Object response) {
// Create the TransactionContext from the response or failure. Store the new
// TransactionContext locally until we've completed invoking the
// TransactionOperations. This avoids thread timing issues which could cause
// out-of-order TransactionOperations. Eg, on a modification operation, if the
// TransactionContext is non-null, then we directly call the TransactionContext.
// However, at the same time, the code may be executing the cached
// TransactionOperations. So to avoid thus timing, we don't publish the
// TransactionContext until after we've executed all cached TransactionOperations.
TransactionContext localTransactionContext;
if (failure != null) {
LOG.debug("Tx {} Creating NoOpTransaction because of error", getIdentifier(), failure);
Throwable resultingEx = failure;
if (failure instanceof AskTimeoutException) {
resultingEx = new ShardLeaderNotRespondingException(String.format("Could not create a %s transaction on shard %s. The shard leader isn't responding.", parent.getType(), shardName), failure);
} else if (!(failure instanceof NoShardLeaderException)) {
resultingEx = new Exception(String.format("Error creating %s transaction on shard %s", parent.getType(), shardName), failure);
}
localTransactionContext = new NoOpTransactionContext(resultingEx, getIdentifier());
} else if (CreateTransactionReply.isSerializedType(response)) {
localTransactionContext = createValidTransactionContext(CreateTransactionReply.fromSerializable(response));
} else {
IllegalArgumentException exception = new IllegalArgumentException(String.format("Invalid reply type %s for CreateTransaction", response.getClass()));
localTransactionContext = new NoOpTransactionContext(exception, getIdentifier());
}
transactionContextWrapper.executePriorTransactionOperations(localTransactionContext);
}
Aggregations