use of io.pravega.shared.protocol.netty.FailingReplyProcessor in project pravega by pravega.
the class MockController method createSegmentTx.
private CompletableFuture<Void> createSegmentTx(UUID txId, Segment segment) {
CompletableFuture<Void> result = new CompletableFuture<>();
FailingReplyProcessor replyProcessor = new FailingReplyProcessor() {
@Override
public void connectionDropped() {
result.completeExceptionally(new ConnectionClosedException());
}
@Override
public void wrongHost(WrongHost wrongHost) {
result.completeExceptionally(new UnsupportedOperationException());
}
@Override
public void transactionCreated(TransactionCreated transactionCreated) {
result.complete(null);
}
@Override
public void processingFailure(Exception error) {
result.completeExceptionally(error);
}
@Override
public void authTokenCheckFailed(WireCommands.AuthTokenCheckFailed authTokenCheckFailed) {
result.completeExceptionally(new AuthenticationException(authTokenCheckFailed.toString()));
}
};
sendRequestOverNewConnection(new CreateTransaction(idGenerator.get(), segment.getScopedName(), txId, ""), replyProcessor, result);
return result;
}
use of io.pravega.shared.protocol.netty.FailingReplyProcessor in project pravega by pravega.
the class MockController method deleteSegment.
private boolean deleteSegment(String name, PravegaNodeUri uri) {
CompletableFuture<Boolean> result = new CompletableFuture<>();
FailingReplyProcessor replyProcessor = new FailingReplyProcessor() {
@Override
public void connectionDropped() {
result.completeExceptionally(new ConnectionClosedException());
}
@Override
public void wrongHost(WireCommands.WrongHost wrongHost) {
result.completeExceptionally(new UnsupportedOperationException());
}
@Override
public void segmentDeleted(WireCommands.SegmentDeleted segmentDeleted) {
result.complete(true);
}
@Override
public void noSuchSegment(WireCommands.NoSuchSegment noSuchSegment) {
result.complete(false);
}
@Override
public void processingFailure(Exception error) {
result.completeExceptionally(error);
}
@Override
public void authTokenCheckFailed(WireCommands.AuthTokenCheckFailed authTokenCheckFailed) {
result.completeExceptionally(new AuthenticationException(authTokenCheckFailed.toString()));
}
};
DeleteSegment command = new WireCommands.DeleteSegment(idGenerator.get(), name, "");
sendRequestOverNewConnection(command, replyProcessor, result);
return getAndHandleExceptions(result, RuntimeException::new);
}
use of io.pravega.shared.protocol.netty.FailingReplyProcessor in project pravega by pravega.
the class MockController method createSegment.
private boolean createSegment(String name, PravegaNodeUri uri) {
CompletableFuture<Boolean> result = new CompletableFuture<>();
FailingReplyProcessor replyProcessor = new FailingReplyProcessor() {
@Override
public void connectionDropped() {
result.completeExceptionally(new ConnectionClosedException());
}
@Override
public void wrongHost(WireCommands.WrongHost wrongHost) {
result.completeExceptionally(new UnsupportedOperationException());
}
@Override
public void segmentAlreadyExists(WireCommands.SegmentAlreadyExists segmentAlreadyExists) {
result.complete(false);
}
@Override
public void segmentCreated(WireCommands.SegmentCreated segmentCreated) {
result.complete(true);
}
@Override
public void processingFailure(Exception error) {
result.completeExceptionally(error);
}
@Override
public void authTokenCheckFailed(WireCommands.AuthTokenCheckFailed authTokenCheckFailed) {
result.completeExceptionally(new AuthenticationException(authTokenCheckFailed.toString()));
}
};
CreateSegment command = new WireCommands.CreateSegment(idGenerator.get(), name, WireCommands.CreateSegment.NO_SCALE, 0, "");
sendRequestOverNewConnection(command, replyProcessor, result);
return getAndHandleExceptions(result, RuntimeException::new);
}
use of io.pravega.shared.protocol.netty.FailingReplyProcessor in project pravega by pravega.
the class MockController method commitTxSegment.
private CompletableFuture<Void> commitTxSegment(UUID txId, Segment segment) {
CompletableFuture<Void> result = new CompletableFuture<>();
FailingReplyProcessor replyProcessor = new FailingReplyProcessor() {
@Override
public void connectionDropped() {
result.completeExceptionally(new ConnectionClosedException());
}
@Override
public void wrongHost(WrongHost wrongHost) {
result.completeExceptionally(new UnsupportedOperationException());
}
@Override
public void transactionCommitted(TransactionCommitted transactionCommitted) {
result.complete(null);
}
@Override
public void transactionAborted(TransactionAborted transactionAborted) {
result.completeExceptionally(new TxnFailedException("Transaction already aborted."));
}
@Override
public void processingFailure(Exception error) {
result.completeExceptionally(error);
}
@Override
public void authTokenCheckFailed(WireCommands.AuthTokenCheckFailed authTokenCheckFailed) {
result.completeExceptionally(new AuthenticationException(authTokenCheckFailed.toString()));
}
};
sendRequestOverNewConnection(new CommitTransaction(idGenerator.get(), segment.getScopedName(), txId, ""), replyProcessor, result);
return result;
}
use of io.pravega.shared.protocol.netty.FailingReplyProcessor in project pravega by pravega.
the class SegmentHelper method sealSegment.
/**
* This method sends segment sealed message for the specified segment.
* It owns up the responsibility of retrying the operation on failures until success.
*
* @param scope stream scope
* @param stream stream name
* @param segmentNumber number of segment to be sealed
* @param hostControllerStore host controller store
* @param clientCF connection factory
* @param delegationToken the token to be presented to segmentstore.
* @return void
*/
public CompletableFuture<Boolean> sealSegment(final String scope, final String stream, final int segmentNumber, final HostControllerStore hostControllerStore, final ConnectionFactory clientCF, String delegationToken) {
final Controller.NodeUri uri = getSegmentUri(scope, stream, segmentNumber, hostControllerStore);
final CompletableFuture<Boolean> result = new CompletableFuture<>();
final WireCommandType type = WireCommandType.SEAL_SEGMENT;
final FailingReplyProcessor replyProcessor = new FailingReplyProcessor() {
@Override
public void connectionDropped() {
log.warn("sealSegment {}/{}/{} connectionDropped", scope, stream, segmentNumber);
result.completeExceptionally(new WireCommandFailedException(type, WireCommandFailedException.Reason.ConnectionDropped));
}
@Override
public void wrongHost(WireCommands.WrongHost wrongHost) {
log.warn("sealSegment {}/{}/{} wrongHost", scope, stream, segmentNumber);
result.completeExceptionally(new WireCommandFailedException(type, WireCommandFailedException.Reason.UnknownHost));
}
@Override
public void segmentSealed(WireCommands.SegmentSealed segmentSealed) {
log.info("sealSegment {}/{}/{} segmentSealed", scope, stream, segmentNumber);
result.complete(true);
}
@Override
public void segmentIsSealed(WireCommands.SegmentIsSealed segmentIsSealed) {
log.info("sealSegment {}/{}/{} SegmentIsSealed", scope, stream, segmentNumber);
result.complete(true);
}
@Override
public void processingFailure(Exception error) {
log.error("sealSegment {}/{}/{} failed", scope, stream, segmentNumber, error);
result.completeExceptionally(error);
}
@Override
public void authTokenCheckFailed(WireCommands.AuthTokenCheckFailed authTokenCheckFailed) {
result.completeExceptionally(new WireCommandFailedException(new AuthenticationException(authTokenCheckFailed.toString()), type, WireCommandFailedException.Reason.AuthFailed));
}
};
WireCommands.SealSegment request = new WireCommands.SealSegment(idGenerator.get(), Segment.getScopedName(scope, stream, segmentNumber), delegationToken);
sendRequestAsync(request, replyProcessor, result, clientCF, ModelHelper.encode(uri));
return result;
}
Aggregations