if (msg instanceof TSOProto.Request) { TSOProto.Request request = (TSOProto.Request) msg; if (request.hasHandshakeRequest()) { checkHandshake(ctx, request.getHandshakeRequest()); return; if (request.hasTimestampRequest()) { requestProcessor.timestampRequest(ctx.getChannel(), MonitoringContextFactory.getInstance(config,metrics)); } else if (request.hasCommitRequest()) { TSOProto.CommitRequest cr = request.getCommitRequest(); requestProcessor.commitRequest(cr.getStartTimestamp(), cr.getCellIdList(), ctx.getChannel(), MonitoringContextFactory.getInstance(config,metrics)); } else if (request.hasFenceRequest()) { TSOProto.FenceRequest fr = request.getFenceRequest(); requestProcessor.fenceRequest(fr.getTableId(), ctx.getChannel(),
TSOProto.Request.Builder builder = TSOProto.Request.newBuilder(); TSOProto.CommitRequest.Builder commitbuilder = TSOProto.CommitRequest.newBuilder(); commitbuilder.setStartTimestamp(transactionId);
if (msg instanceof TSOProto.Request) { TSOProto.Request request = (TSOProto.Request) msg; if (request.hasHandshakeRequest()) { checkHandshake(ctx, request.getHandshakeRequest()); return; if (request.hasTimestampRequest()) { requestProcessor.timestampRequest(ctx.getChannel(), new MonitoringContext(metrics)); } else if (request.hasCommitRequest()) { TSOProto.CommitRequest cr = request.getCommitRequest(); requestProcessor.commitRequest(cr.getStartTimestamp(), cr.getCellIdList(),
if (msg instanceof TSOProto.Request) { TSOProto.Request request = (TSOProto.Request) msg; if (request.hasHandshakeRequest()) { checkHandshake(ctx, request.getHandshakeRequest()); return; if (request.hasTimestampRequest()) { requestProcessor.timestampRequest(ctx.getChannel(), new MonitoringContext(metrics)); } else if (request.hasCommitRequest()) { TSOProto.CommitRequest cr = request.getCommitRequest(); requestProcessor.commitRequest(cr.getStartTimestamp(), cr.getCellIdList(),
private void sendRequest(final StateMachine.Fsm fsm, RequestEvent request) { TSOProto.Request req = request.getRequest(); if (req.hasTimestampRequest()) { timestampRequests.add(new RequestAndTimeout(request, newTimeout(new TimestampRequestTimeoutEvent()))); } else if (req.hasCommitRequest()) { TSOProto.CommitRequest commitReq = req.getCommitRequest(); commitRequests.put(commitReq.getStartTimestamp(), new RequestAndTimeout( request, newTimeout(new CommitRequestTimeoutEvent(commitReq.getStartTimestamp())))); } else if (req.hasFenceRequest()) { TSOProto.FenceRequest fenceReq = req.getFenceRequest(); fenceRequests.put(fenceReq.getTableId(), new RequestAndTimeout( request, newTimeout(new FenceRequestTimeoutEvent(fenceReq.getTableId())))); } else { request.error(new IllegalArgumentException("Unknown request type")); return; } ChannelFuture f = channel.write(req); f.addListener(new ChannelFutureListener() { @Override public void operationComplete(ChannelFuture future) { if (!future.isSuccess()) { fsm.sendEvent(new ErrorEvent(future.getCause())); } } }); }
private void sendRequest(final StateMachine.Fsm fsm, RequestEvent request) { TSOProto.Request req = request.getRequest(); if (req.hasTimestampRequest()) { timestampRequests.add(new RequestAndTimeout(request, newTimeout(new TimestampRequestTimeoutEvent()))); } else if (req.hasCommitRequest()) { TSOProto.CommitRequest commitReq = req.getCommitRequest(); commitRequests.put(commitReq.getStartTimestamp(), new RequestAndTimeout( request, newTimeout(new CommitRequestTimeoutEvent(commitReq.getStartTimestamp())))); } else { request.error(new IllegalArgumentException("Unknown request type")); return; } ChannelFuture f = channel.write(req); f.addListener(new ChannelFutureListener() { @Override public void operationComplete(ChannelFuture future) { if (!future.isSuccess()) { fsm.sendEvent(new ErrorEvent(future.getCause())); } } }); }
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 Builder toBuilder() { return newBuilder(this); }
public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(org.apache.omid.proto.TSOProto.Request prototype) {
public Builder mergeFrom(org.apache.omid.proto.TSOProto.Request other) { if (other == org.apache.omid.proto.TSOProto.Request.getDefaultInstance()) return this; if (other.hasTimestampRequest()) { mergeTimestampRequest(other.getTimestampRequest()); } if (other.hasCommitRequest()) { mergeCommitRequest(other.getCommitRequest()); } if (other.hasHandshakeRequest()) { mergeHandshakeRequest(other.getHandshakeRequest()); } if (other.hasFenceRequest()) { mergeFenceRequest(other.getFenceRequest()); } this.mergeUnknownFields(other.getUnknownFields()); return this; }
public static Builder newBuilder(org.apache.omid.proto.TSOProto.Request prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); }
public org.apache.omid.proto.TSOProto.Request getDefaultInstanceForType() { return org.apache.omid.proto.TSOProto.Request.getDefaultInstance(); }
public ChannelPipeline getPipeline() throws Exception { ChannelPipeline pipeline = Channels.pipeline(); // Max packet length is 10MB. Transactions with so many cells // that the packet is rejected will receive a ServiceUnavailableException. // 10MB is enough for 2 million cells in a transaction though. pipeline.addLast("lengthbaseddecoder", new LengthFieldBasedFrameDecoder(10 * 1024 * 1024, 0, 4, 0, 4)); pipeline.addLast("lengthprepender", new LengthFieldPrepender(4)); pipeline.addLast("protobufdecoder", new ProtobufDecoder(TSOProto.Request.getDefaultInstance())); pipeline.addLast("protobufencoder", new ProtobufEncoder()); pipeline.addLast("handler", handler); return pipeline; } }
public ChannelPipeline getPipeline() throws Exception { ChannelPipeline pipeline = Channels.pipeline(); // Max packet length is 10MB. Transactions with so many cells // that the packet is rejected will receive a ServiceUnavailableException. // 10MB is enough for 2 million cells in a transaction though. pipeline.addLast("lengthbaseddecoder", new LengthFieldBasedFrameDecoder(10 * 1024 * 1024, 0, 4, 0, 4)); pipeline.addLast("lengthprepender", new LengthFieldPrepender(4)); pipeline.addLast("protobufdecoder", new ProtobufDecoder(TSOProto.Request.getDefaultInstance())); pipeline.addLast("protobufencoder", new ProtobufEncoder()); pipeline.addLast("handler", handler); return pipeline; } }
/** * @see TSOProtocol#getFence(long) */ @Override public TSOFuture<Long> getFence(long tableId) { TSOProto.Request.Builder builder = TSOProto.Request.newBuilder(); TSOProto.FenceRequest.Builder fenceReqBuilder = TSOProto.FenceRequest.newBuilder(); fenceReqBuilder.setTableId(tableId); builder.setFenceRequest(fenceReqBuilder.build()); RequestEvent request = new RequestEvent(builder.build(), requestMaxRetries); fsm.sendEvent(request); return new ForwardingTSOFuture<>(request); }
HandshakingState(StateMachine.Fsm fsm, Channel channel) { super(fsm); LOG.debug("NEW STATE: HANDSHAKING"); this.channel = channel; TSOProto.HandshakeRequest.Builder handshake = TSOProto.HandshakeRequest.newBuilder(); // Add the required handshake capabilities when necessary handshake.setClientCapabilities(TSOProto.Capabilities.newBuilder().build()); channel.write(TSOProto.Request.newBuilder().setHandshakeRequest(handshake.build()).build()); timeout = newTimeout(); }
public ChannelPipeline getPipeline() throws Exception { ChannelPipeline pipeline = Channels.pipeline(); // Max packet length is 10MB. Transactions with so many cells // that the packet is rejected will receive a ServiceUnavailableException. // 10MB is enough for 2 million cells in a transaction though. pipeline.addLast("lengthbaseddecoder", new LengthFieldBasedFrameDecoder(10 * 1024 * 1024, 0, 4, 0, 4)); pipeline.addLast("lengthprepender", new LengthFieldPrepender(4)); pipeline.addLast("protobufdecoder", new ProtobufDecoder(TSOProto.Request.getDefaultInstance())); pipeline.addLast("protobufencoder", new ProtobufEncoder()); pipeline.addLast("handler", handler); return pipeline; } }
public String toString() { String info = "Request type "; if (event.getRequest().hasTimestampRequest()) { info += "[Timestamp]"; } else if (event.getRequest().hasCommitRequest()) { info += "[Commit] Start TS ->" + event.getRequest().getCommitRequest().getStartTimestamp(); } else { info += "NONE"; } return info; } }