From 42c4b6e651ec73915efdb3f119d870dfabd39227 Mon Sep 17 00:00:00 2001 From: Andrea Cavalli Date: Tue, 9 Nov 2021 15:57:16 +0100 Subject: [PATCH] Add a discard hook --- .../dbengine/database/disk/LLLocalDictionary.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/it/cavallium/dbengine/database/disk/LLLocalDictionary.java b/src/main/java/it/cavallium/dbengine/database/disk/LLLocalDictionary.java index 8530bb5..0215960 100644 --- a/src/main/java/it/cavallium/dbengine/database/disk/LLLocalDictionary.java +++ b/src/main/java/it/cavallium/dbengine/database/disk/LLLocalDictionary.java @@ -419,7 +419,15 @@ public class LLLocalDictionary implements LLDictionary { existsAlmostCertainly, UpdateAtomicResultMode.DELTA); return ((UpdateAtomicResultDelta) result).delta(); }).onErrorMap(cause -> new IOException("Failed to read or write", cause)), - keySend -> Mono.fromRunnable(keySend::close)); + keySend -> Mono.fromRunnable(keySend::close)).doOnDiscard(UpdateAtomicResult.class, uar -> { + if (uar instanceof UpdateAtomicResultDelta delta) { + delta.delta().close(); + } else if (uar instanceof UpdateAtomicResultCurrent cur) { + cur.current().close(); + } else if (uar instanceof UpdateAtomicResultPrevious cur) { + cur.previous().close(); + } + }); } @Override