From dc0e73b1aa492850d47cc3952662fa2a5c261adb Mon Sep 17 00:00:00 2001 From: Stepan Usatiuk Date: Sat, 22 Mar 2025 14:57:01 +0100 Subject: [PATCH] KleppmannTree: fix failed moves being recorded in op log --- .../com/usatiuk/kleppmanntree/KleppmannTree.java | 2 +- .../kleppmanntree/KleppmanTreeSimpleTest.java | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/dhfs-parent/kleppmanntree/src/main/java/com/usatiuk/kleppmanntree/KleppmannTree.java b/dhfs-parent/kleppmanntree/src/main/java/com/usatiuk/kleppmanntree/KleppmannTree.java index 06e74d5b..ffae8d88 100644 --- a/dhfs-parent/kleppmanntree/src/main/java/com/usatiuk/kleppmanntree/KleppmannTree.java +++ b/dhfs-parent/kleppmanntree/src/main/java/com/usatiuk/kleppmanntree/KleppmannTree.java @@ -167,8 +167,8 @@ public class KleppmannTree, PeerIdT ex public void move(NodeIdT newParent, MetaT newMeta, NodeIdT child, boolean failCreatingIfExists) { var createdMove = createMove(newParent, newMeta, child); - _opRecorder.recordOp(createdMove); applyOp(_peers.getSelfId(), createdMove, failCreatingIfExists); + _opRecorder.recordOp(createdMove); } public void applyExternalOp(PeerIdT from, OpMove op) { diff --git a/dhfs-parent/kleppmanntree/src/test/java/com/usatiuk/kleppmanntree/KleppmanTreeSimpleTest.java b/dhfs-parent/kleppmanntree/src/test/java/com/usatiuk/kleppmanntree/KleppmanTreeSimpleTest.java index eb651b08..598f4d7d 100644 --- a/dhfs-parent/kleppmanntree/src/test/java/com/usatiuk/kleppmanntree/KleppmanTreeSimpleTest.java +++ b/dhfs-parent/kleppmanntree/src/test/java/com/usatiuk/kleppmanntree/KleppmanTreeSimpleTest.java @@ -96,7 +96,7 @@ public class KleppmanTreeSimpleTest { void undoWithRenameTest(boolean opOrder) { var d1id = testNode1._storageInterface.getNewNodeId(); var d2id = testNode2._storageInterface.getNewNodeId(); - var d3id = testNode2._storageInterface.getNewNodeId(); + var d3id = testNode3._storageInterface.getNewNodeId(); testNode1._tree.move(testNode1._storageInterface.getRootId(), new TestNodeMetaDir("Test1"), d1id); testNode2._tree.move(testNode1._storageInterface.getRootId(), new TestNodeMetaDir("Test1"), d2id); testNode3._tree.move(testNode1._storageInterface.getRootId(), new TestNodeMetaDir("Test1"), d3id); @@ -137,4 +137,14 @@ public class KleppmanTreeSimpleTest { Assertions.assertIterableEquals(List.of("Test1", "Test1.conflict." + d1id, "Test1.conflict." + d2id), testNode3._storageInterface.getById(testNode3._storageInterface.getRootId()).children().keySet()); } + + @Test + void noFailedOpRecordTest() { + var d1id = testNode1._storageInterface.getNewNodeId(); + var d2id = testNode1._storageInterface.getNewNodeId(); + testNode1._tree.move(testNode1._storageInterface.getRootId(), new TestNodeMetaDir("Test1"), d1id); + Assertions.assertThrows(AlreadyExistsException.class, () -> testNode1._tree.move(testNode1._storageInterface.getRootId(), new TestNodeMetaDir("Test1"), d2id)); + var r1 = testNode1.getRecorded(); + Assertions.assertEquals(1, r1.size()); + } }