public StateMachine.State handleEvent(CloseEvent e) { LOG.debug("CONNECTED STATE: CloseEvent"); timeoutExecutor.stop(); closeChannelAndErrorRequests(); fsm.deferEvent(e); return new ClosingState(fsm); }
builder.setCommitRequest(commitbuilder.build()); RequestEvent request = new RequestEvent(builder.build(), requestMaxRetries); fsm.sendEvent(request); return new ForwardingTSOFuture<>(request);
new ThreadFactoryBuilder().setNameFormat("tsofsm-%d").build()); fsm = new StateMachine.FsmImpl(fsmExecutor); fsm.setInitState(new DisconnectedState(fsm));
new ThreadFactoryBuilder().setNameFormat("tsofsm-%d").build()); fsm = new StateMachine.FsmImpl(fsmExecutor); fsm.setInitState(new DisconnectedState(fsm));
public TSOFuture<Void> close() { final CloseEvent closeEvent = new CloseEvent(); fsm.sendEvent(closeEvent); closeEvent.addListener(new Runnable() { @Override
public TSOFuture<Void> close() { final CloseEvent closeEvent = new CloseEvent(); fsm.sendEvent(closeEvent); closeEvent.addListener(new Runnable() { @Override
private void queueRetryOrError(StateMachine.Fsm fsm, RequestEvent e) { if (e.getRetriesLeft() > 0) { e.decrementRetries(); if (e.getRequest().hasCommitRequest()) { TSOProto.CommitRequest commitRequest = e.getRequest().getCommitRequest(); if (!commitRequest.getIsRetry()) { // Create a new retry for the commit request TSOProto.Request.Builder builder = TSOProto.Request.newBuilder(); TSOProto.CommitRequest.Builder commitBuilder = TSOProto.CommitRequest.newBuilder(); commitBuilder.mergeFrom(commitRequest); commitBuilder.setIsRetry(true); builder.setCommitRequest(commitBuilder.build()); e.setRequest(builder.build()); } } fsm.sendEvent(e); } else { e.error( new ServiceUnavailableException("Number of retries exceeded. This API request failed permanently")); } }
private void queueRetryOrError(StateMachine.Fsm fsm, RequestEvent e) { if (e.getRetriesLeft() > 0) { e.decrementRetries(); if (e.getRequest().hasCommitRequest()) { TSOProto.CommitRequest commitRequest = e.getRequest().getCommitRequest(); if (!commitRequest.getIsRetry()) { // Create a new retry for the commit request TSOProto.Request.Builder builder = TSOProto.Request.newBuilder(); TSOProto.CommitRequest.Builder commitBuilder = TSOProto.CommitRequest.newBuilder(); commitBuilder.mergeFrom(commitRequest); commitBuilder.setIsRetry(true); builder.setCommitRequest(commitBuilder.build()); e.setRequest(builder.build()); } } fsm.sendEvent(e); } else { e.error( new ServiceUnavailableException("Number of retries exceeded. This API request failed permanently")); } }
/** * @see TSOProtocol#commit(long, Set) */ @Override public TSOFuture<Long> commit(long transactionId, Set<? extends CellId> cells) { TSOProto.Request.Builder builder = TSOProto.Request.newBuilder(); TSOProto.CommitRequest.Builder commitbuilder = TSOProto.CommitRequest.newBuilder(); commitbuilder.setStartTimestamp(transactionId); for (CellId cell : cells) { commitbuilder.addCellId(cell.getCellId()); } builder.setCommitRequest(commitbuilder.build()); RequestEvent request = new RequestEvent(builder.build(), requestMaxRetries); fsm.sendEvent(request); return new ForwardingTSOFuture<>(request); }
public StateMachine.State handleEvent(UserEvent e) { fsm.deferEvent(e); return this; }
public StateMachine.State handleEvent(RequestEvent e) { fsm.deferEvent(e); return tryToConnectToTSOServer(); }
public StateMachine.State handleEvent(UserEvent e) { fsm.deferEvent(e); return this; }
public StateMachine.State handleEvent(UserEvent e) { fsm.deferEvent(e); return this; }
public StateMachine.State handleEvent(UserEvent e) { fsm.deferEvent(e); return this; }
public StateMachine.State handleEvent(UserEvent e) { fsm.deferEvent(e); return this; }
public StateMachine.State handleEvent(UserEvent e) { fsm.deferEvent(e); return this; }
public StateMachine.State handleEvent(RequestEvent e) { fsm.deferEvent(e); return tryToConnectToTSOServer(); }
@Override public void operationComplete(ChannelFuture future) { if (!future.isSuccess()) { fsm.sendEvent(new ErrorEvent(future.getCause())); } } });
@Override public void channelClosed(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception { LOG.debug("HANDLER (CHANNEL CLOSED): Connection {}. Sending channel closed event to FSM", e); fsm.sendEvent(new ChannelClosedEvent(new ConnectionException())); }
@Override public void operationComplete(ChannelFuture future) { if (!future.isSuccess()) { fsm.sendEvent(new ErrorEvent(future.getCause())); } } });