aweisberg commented on code in PR #3463: URL: https://github.com/apache/cassandra/pull/3463#discussion_r1838345982
########## src/java/org/apache/cassandra/service/accord/txn/TxnKeyRead.java: ########## @@ -60,60 +64,58 @@ public class TxnKeyRead extends AbstractKeySorted<TxnNamedRead> implements TxnRead { - public static final TxnKeyRead EMPTY = new TxnKeyRead(new TxnNamedRead[0], Keys.EMPTY, null); + public static final TxnKeyRead EMPTY = new TxnKeyRead(new TxnNamedRead[0], null); private static final long EMPTY_SIZE = ObjectSizes.measure(EMPTY); - public static final String CAS_READ_NAME = "CAS_READ"; - public static final TxnDataName CAS_READ = new TxnDataName(TxnDataName.Kind.CAS_READ, CAS_READ_NAME); - - @Nonnull - private final Keys txnKeys; - // Cassandra's consistency level used by Accord to safely read data written outside of Accord @Nullable private final ConsistencyLevel cassandraConsistencyLevel; - public TxnKeyRead(@Nonnull TxnNamedRead[] items, @Nonnull Keys txnKeys, @Nullable ConsistencyLevel cassandraConsistencyLevel) + private TxnKeyRead(@Nonnull TxnNamedRead[] items, @Nullable ConsistencyLevel cassandraConsistencyLevel) { super(items); + checkNotNull(items, "items is null"); checkArgument(cassandraConsistencyLevel == null || SUPPORTED_READ_CONSISTENCY_LEVELS.contains(cassandraConsistencyLevel), "Unsupported consistency level for read"); - this.txnKeys = txnKeys; this.cassandraConsistencyLevel = cassandraConsistencyLevel; } - public TxnKeyRead(@Nonnull List<TxnNamedRead> items, @Nonnull Keys txnKeys, @Nullable ConsistencyLevel cassandraConsistencyLevel) + private TxnKeyRead(@Nonnull List<TxnNamedRead> items, @Nullable ConsistencyLevel cassandraConsistencyLevel) { super(items); + checkNotNull(items, "items is null"); checkArgument(cassandraConsistencyLevel == null || SUPPORTED_READ_CONSISTENCY_LEVELS.contains(cassandraConsistencyLevel), "Unsupported consistency level for read"); - this.txnKeys = txnKeys; this.cassandraConsistencyLevel = cassandraConsistencyLevel; } - public static TxnKeyRead createTxnRead(@Nonnull List<TxnNamedRead> items, @Nonnull Keys txnKeys, @Nullable ConsistencyLevel consistencyLevel) + public static TxnKeyRead createTxnRead(@Nonnull List<TxnNamedRead> items, @Nullable ConsistencyLevel consistencyLevel) { - return new TxnKeyRead(items, txnKeys, consistencyLevel); + items.sort(Comparator.comparing(TxnNamedRead::key)); + return new TxnKeyRead(items, consistencyLevel); } public static TxnKeyRead createSerialRead(List<SinglePartitionReadCommand> readCommands, ConsistencyLevel consistencyLevel) { List<TxnNamedRead> reads = new ArrayList<>(readCommands.size()); for (int i = 0; i < readCommands.size(); i++) - reads.add(new TxnNamedRead(TxnDataName.user(String.valueOf(i)), readCommands.get(i))); - Keys keys = Keys.of(reads, TxnNamedRead::key); - return new TxnKeyRead(reads, keys, consistencyLevel); + reads.add(new TxnNamedRead(txnDataName(USER, i), readCommands.get(i))); + reads.sort(Comparator.comparing(TxnNamedRead::key)); Review Comment: I can make it static. I don't know if allocates. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: pr-unsubscr...@cassandra.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: pr-unsubscr...@cassandra.apache.org For additional commands, e-mail: pr-h...@cassandra.apache.org