diff --git a/src/main/java/it/cavallium/dbengine/database/collections/DatabaseMapDictionary.java b/src/main/java/it/cavallium/dbengine/database/collections/DatabaseMapDictionary.java index a940545..10a6e4a 100644 --- a/src/main/java/it/cavallium/dbengine/database/collections/DatabaseMapDictionary.java +++ b/src/main/java/it/cavallium/dbengine/database/collections/DatabaseMapDictionary.java @@ -355,10 +355,12 @@ public class DatabaseMapDictionary extends DatabaseMapDictionaryDeep Mono .fromCallable(() -> serializeEntry(entry.getKey(), entry.getValue())) .doOnDiscard(Entry.class, uncastedEntry -> { - //noinspection unchecked - var castedEntry = (Entry) uncastedEntry; - castedEntry.getKey().release(); - castedEntry.getValue().release(); + if (uncastedEntry.getKey() instanceof ByteBuf byteBuf) { + byteBuf.release(); + } + if (uncastedEntry.getValue() instanceof ByteBuf byteBuf) { + byteBuf.release(); + } }) ); return dictionary @@ -372,12 +374,15 @@ public class DatabaseMapDictionary extends DatabaseMapDictionaryDeep> serializedEntries = entries .flatMap(entry -> Mono .fromCallable(() -> Tuples.of(serializeSuffix(entry.getT1()), entry.getT2())) - .doOnDiscard(Entry.class, uncastedEntry -> { - //noinspection unchecked - var castedEntry = (Tuple2) uncastedEntry; - castedEntry.getT1().release(); - }) - ); + ) + .doOnDiscard(Tuple2.class, uncastedEntry -> { + if (uncastedEntry.getT1() instanceof ByteBuf byteBuf) { + byteBuf.release(); + } + if (uncastedEntry.getT2() instanceof ByteBuf byteBuf) { + byteBuf.release(); + } + }); var serializedUpdater = getSerializedUpdater(updater); return dictionary.updateMulti(serializedEntries, serializedUpdater) .map(result -> new ExtraKeyOperationResult<>(deserializeSuffix(result.key()), @@ -419,11 +424,13 @@ public class DatabaseMapDictionary extends DatabaseMapDictionaryDeep { - //noinspection unchecked - var castedEntry = (Entry) entry; - castedEntry.getKey().release(); - castedEntry.getValue().release(); + .doOnDiscard(Entry.class, uncastedEntry -> { + if (uncastedEntry.getKey() instanceof ByteBuf byteBuf) { + byteBuf.release(); + } + if (uncastedEntry.getValue() instanceof ByteBuf byteBuf) { + byteBuf.release(); + } }) .doFirst(range::retain) .doAfterTerminate(range::release); diff --git a/src/main/java/it/cavallium/dbengine/database/collections/DatabaseMapDictionaryDeep.java b/src/main/java/it/cavallium/dbengine/database/collections/DatabaseMapDictionaryDeep.java index e3dab72..a4751ba 100644 --- a/src/main/java/it/cavallium/dbengine/database/collections/DatabaseMapDictionaryDeep.java +++ b/src/main/java/it/cavallium/dbengine/database/collections/DatabaseMapDictionaryDeep.java @@ -480,10 +480,10 @@ public class DatabaseMapDictionaryDeep> implem }) ) .doOnDiscard(Collection.class, discardedCollection -> { - //noinspection unchecked - var rangeKeys = (Collection) discardedCollection; - for (ByteBuf rangeKey : rangeKeys) { - rangeKey.release(); + for (Object o : discardedCollection) { + if (o instanceof ByteBuf byteBuf) { + byteBuf.release(); + } } }); } else {