From c27f7d4e2bd408fb70e8ce607d01cfcfb98793b8 Mon Sep 17 00:00:00 2001 From: Andrea Cavalli Date: Wed, 20 Jul 2022 02:00:08 +0200 Subject: [PATCH] Bugfixes --- .../collections/DatabaseMapDictionaryDeep.java | 14 ++++++++------ .../disk/LLLocalReactiveRocksIterator.java | 15 ++++++++++++--- 2 files changed, 20 insertions(+), 9 deletions(-) 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 0b59116..5b9bbf7 100644 --- a/src/main/java/it/cavallium/dbengine/database/collections/DatabaseMapDictionaryDeep.java +++ b/src/main/java/it/cavallium/dbengine/database/collections/DatabaseMapDictionaryDeep.java @@ -442,11 +442,13 @@ public class DatabaseMapDictionaryDeep> extend var fullRange = tuple.getT2(); try { if (firstKey.isPresent()) { - try (var key1Buf = deepMap.alloc.allocate(keySuffix1Serializer.getSerializedBinaryLength())) { - keySuffix1Serializer.serialize(firstKey.get(), key1Buf); - sink.next(LLRange.of(key1Buf.send(), fullRange.getMax())); - } catch (SerializationException e) { - sink.error(e); + try (fullRange) { + try (var key1Buf = deepMap.alloc.allocate(keySuffix1Serializer.getSerializedBinaryLength())) { + keySuffix1Serializer.serialize(firstKey.get(), key1Buf); + sink.next(LLRange.of(key1Buf.send(), fullRange.getMax())); + } catch (SerializationException e) { + sink.error(e); + } } } else { sink.next(fullRange); @@ -457,7 +459,7 @@ public class DatabaseMapDictionaryDeep> extend } catch (Throwable ex2) { LOG.error(ex2); } - throw ex; + sink.error(ex); } }), false, false) .concatMapIterable(entry -> { diff --git a/src/main/java/it/cavallium/dbengine/database/disk/LLLocalReactiveRocksIterator.java b/src/main/java/it/cavallium/dbengine/database/disk/LLLocalReactiveRocksIterator.java index ecc446f..c483ae6 100644 --- a/src/main/java/it/cavallium/dbengine/database/disk/LLLocalReactiveRocksIterator.java +++ b/src/main/java/it/cavallium/dbengine/database/disk/LLLocalReactiveRocksIterator.java @@ -89,14 +89,23 @@ public abstract class LLLocalReactiveRocksIterator { rocksIterator.next(); } sink.next(getEntry(key, value)); - } finally { + } catch (Throwable ex) { if (value != null && value.isAccessible()) { - value.close(); + try { + value.close(); + } catch (Throwable ex2) { + logger.error(ex2); + } } + throw ex; } } catch (Throwable ex) { if (key.isAccessible()) { - key.close(); + try { + key.close(); + } catch (Throwable ex2) { + logger.error(ex2); + } } throw ex; }