in transaction-client/src/main/java/org/apache/omid/tso/client/TSOClient.java [261:302]
public TSOFuture<Long> commit(long transactionId, Set<? extends CellId> cells, Set<? extends CellId> conflictFreeWriteSet) {
TSOProto.Request.Builder builder = TSOProto.Request.newBuilder();
TSOProto.CommitRequest.Builder commitbuilder = TSOProto.CommitRequest.newBuilder();
commitbuilder.setStartTimestamp(transactionId);
HashSet<Long> rowLevelWriteSet = new HashSet<Long>();
HashSet<Long> tableIDs = new HashSet<Long>();
rowLevelWriteSet.clear();
for (CellId cell : cells) {
long id;
switch (conflictDetectionLevel) {
case ROW:
id = cell.getRowId();
if (rowLevelWriteSet.contains(id)) {
continue;
} else {
rowLevelWriteSet.add(id);
}
break;
case CELL:
id = cell.getCellId();
break;
default:
id = 0;
assert (false);
}
commitbuilder.addCellId(id);
tableIDs.add(cell.getTableId());
}
for (CellId cell : conflictFreeWriteSet) {
tableIDs.add(cell.getTableId());
}
commitbuilder.addAllTableId(tableIDs);
tableIDs.clear();
builder.setCommitRequest(commitbuilder.build());
RequestEvent request = new RequestEvent(builder.build(), requestMaxRetries);
fsm.sendEvent(request);
return new ForwardingTSOFuture<>(request);
}