From 930eb38b9bf3f9ba755144de10dfa9f6f97b9ebb Mon Sep 17 00:00:00 2001 From: Stepan Usatiuk Date: Wed, 14 May 2025 11:41:11 +0200 Subject: [PATCH] Objects: cleanup ReadTrackingSourceWrapper --- .../objects/transaction/TransactionImpl.java | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/dhfs-parent/objects/src/main/java/com/usatiuk/objects/transaction/TransactionImpl.java b/dhfs-parent/objects/src/main/java/com/usatiuk/objects/transaction/TransactionImpl.java index fdf8448e..16b9df50 100644 --- a/dhfs-parent/objects/src/main/java/com/usatiuk/objects/transaction/TransactionImpl.java +++ b/dhfs-parent/objects/src/main/java/com/usatiuk/objects/transaction/TransactionImpl.java @@ -23,14 +23,16 @@ class TransactionImpl implements Transaction, AutoCloseable { private boolean _writeTrack = false; private Map> _newWrites = new HashMap<>(); - private interface ReadTrackingInternalCrap { + /** + * Identifies the source of the read: whether it's from the source or written from the transaction. + */ + private interface ReadTrackingSourceWrapper { boolean fromSource(); JData obj(); } - // FIXME: - private record ReadTrackingInternalCrapSource(JDataVersionedWrapper wrapped) implements ReadTrackingInternalCrap { + private record ReadTrackingSourceWrapperSource(JDataVersionedWrapper wrapped) implements ReadTrackingSourceWrapper { @Override public boolean fromSource() { return true; @@ -42,7 +44,7 @@ class TransactionImpl implements Transaction, AutoCloseable { } } - private record ReadTrackingInternalCrapTx(JData obj) implements ReadTrackingInternalCrap { + private record ReadTrackingSourceWrapperTx(JData obj) implements ReadTrackingSourceWrapper { @Override public boolean fromSource() { return false; @@ -107,21 +109,21 @@ class TransactionImpl implements Transaction, AutoCloseable { @Override public CloseableKvIterator getIterator(IteratorStart start, JObjectKey key) { Log.tracev("Getting tx iterator with start={0}, key={1}", start, key); - return new ReadTrackingIterator(new TombstoneSkippingIterator(start, key, + return new ReadTrackingIterator(new TombstoneSkippingIterator(start, key, ListUtils.prependAndMap( new MappingKvIterator<>(new NavigableMapKvIterator<>(_writes, start, key), t -> switch (t) { case TxRecord.TxObjectRecordWrite write -> - new DataWrapper(new ReadTrackingInternalCrapTx(write.data())); + new DataWrapper(new ReadTrackingSourceWrapperTx(write.data())); case TxRecord.TxObjectRecordDeleted deleted -> - new TombstoneImpl(); + new TombstoneImpl(); case null, default -> null; }), _snapshot.getIterator(start, key), - itin -> new MappingKvIterator, MaybeTombstone>(itin, + itin -> new MappingKvIterator, MaybeTombstone>(itin, d -> switch (d) { case Data w -> - new DataWrapper<>(new ReadTrackingInternalCrapSource(w.value())); + new DataWrapper<>(new ReadTrackingSourceWrapperSource(w.value())); case Tombstone t -> new TombstoneImpl<>(); case null, default -> null; })))); @@ -178,9 +180,9 @@ class TransactionImpl implements Transaction, AutoCloseable { } private class ReadTrackingIterator implements CloseableKvIterator { - private final CloseableKvIterator _backing; + private final CloseableKvIterator _backing; - public ReadTrackingIterator(CloseableKvIterator backing) { + public ReadTrackingIterator(CloseableKvIterator backing) { _backing = backing; } @@ -202,7 +204,7 @@ class TransactionImpl implements Transaction, AutoCloseable { @Override public Pair prev() { var got = _backing.prev(); - if (got.getValue() instanceof ReadTrackingInternalCrapSource(JDataVersionedWrapper wrapped)) { + if (got.getValue() instanceof ReadTrackingSourceWrapperSource(JDataVersionedWrapper wrapped)) { _readSet.putIfAbsent(got.getKey(), Optional.of(wrapped)); } return Pair.of(got.getKey(), got.getValue().obj()); @@ -231,7 +233,7 @@ class TransactionImpl implements Transaction, AutoCloseable { @Override public Pair next() { var got = _backing.next(); - if (got.getValue() instanceof ReadTrackingInternalCrapSource(JDataVersionedWrapper wrapped)) { + if (got.getValue() instanceof ReadTrackingSourceWrapperSource(JDataVersionedWrapper wrapped)) { _readSet.putIfAbsent(got.getKey(), Optional.of(wrapped)); } return Pair.of(got.getKey(), got.getValue().obj());