public TSOFuture commit()

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);
    }