From cd15f8d23db06def613becdd903b15fb029507c2 Mon Sep 17 00:00:00 2001 From: Andrea Cavalli Date: Wed, 22 Feb 2023 16:59:35 +0100 Subject: [PATCH] Fix compilation errors --- .../dbengine/database/LLDictionary.java | 2 +- .../dbengine/database/LLKeyValueDatabase.java | 3 +- .../database/LLMultiDatabaseConnection.java | 9 +- .../disk/CachedIndexSearcherManager.java | 16 +- .../database/disk/LLLocalDictionary.java | 16 +- .../disk/LLLocalKeyValueDatabase.java | 371 +++++++++--------- .../disk/SimpleIndexSearcherManager.java | 10 +- .../database/remote/BufSerializer.java | 4 +- .../remote/CompressionSerializer.java | 4 +- .../database/remote/DurationSerializer.java | 4 +- .../database/remote/LLSnapshotSerializer.java | 4 +- .../database/remote/PathSerializer.java | 4 +- .../String2FieldAnalyzerMapSerializer.java | 2 +- .../String2FieldSimilarityMapSerializer.java | 2 +- .../remote/StringEntrySerializer.java | 4 +- .../database/remote/StringMapSerializer.java | 2 +- .../remote/TextFieldsAnalyzerSerializer.java | 4 +- .../TextFieldsSimilaritySerializer.java | 4 +- .../remote/UpdateReturnModeSerializer.java | 4 +- .../serialization/CodecSerializer.java | 34 +- .../lucene/AlwaysDirectIOFSDirectory.java | 4 +- .../dbengine/lucene/CheckIndexOutput.java | 8 +- .../dbengine/lucene/CheckOutputDirectory.java | 73 +++- .../dbengine/lucene/LuceneUtils.java | 7 +- .../lucene/RandomFieldComparator.java | 6 +- .../DecimalBucketMultiCollectorManager.java | 2 +- .../lucene/collector/FacetsCollector.java | 2 +- .../collector/FastFacetsCollectorManager.java | 10 +- .../FastRandomSamplingFacetsCollector.java | 6 +- .../ScoringShardsCollectorMultiManager.java | 4 +- .../TopDocsCollectorMultiManager.java | 2 +- .../TotalHitCountCollectorManager.java | 2 +- ...cene90NoCompressionStoredFieldsFormat.java | 4 +- .../lucene/mlt/BigCompositeReader.java | 12 +- .../lucene/mlt/MultiMoreLikeThis.java | 16 +- .../searcher/AdaptiveLocalSearcher.java | 6 +- .../searcher/AdaptiveMultiSearcher.java | 6 +- .../searcher/DecimalBucketMultiSearcher.java | 7 +- .../lucene/searcher/LuceneGenerator.java | 8 +- .../lucene/searcher/ShardIndexSearcher.java | 8 +- .../utils/BooleanListJsonAdapter.java | 4 +- .../dbengine/utils/ByteListJsonAdapter.java | 4 +- .../dbengine/utils/CharListJsonAdapter.java | 4 +- .../dbengine/utils/IntListJsonAdapter.java | 4 +- .../dbengine/utils/LongListJsonAdapter.java | 4 +- .../dbengine/utils/MoshiPolymorphic.java | 12 +- .../dbengine/utils/ShortListJsonAdapter.java | 4 +- .../it/cavallium/dbengine/utils/UTFUtils.java | 4 +- .../stream/DataInputOutputImpl.java | 58 +-- .../stream/DataInputOutputStream.java | 30 +- 50 files changed, 427 insertions(+), 397 deletions(-) diff --git a/src/main/java/it/cavallium/dbengine/database/LLDictionary.java b/src/main/java/it/cavallium/dbengine/database/LLDictionary.java index 0fe70d5..aae8d86 100644 --- a/src/main/java/it/cavallium/dbengine/database/LLDictionary.java +++ b/src/main/java/it/cavallium/dbengine/database/LLDictionary.java @@ -54,7 +54,7 @@ public interface LLDictionary extends LLKeyValueDatabaseStructure { Stream getRangeKeys(@Nullable LLSnapshot snapshot, LLRange range, boolean reverse, - boolean smallRange) throws RocksDBException, IOException; + boolean smallRange); Stream> getRangeKeysGrouped(@Nullable LLSnapshot snapshot, LLRange range, diff --git a/src/main/java/it/cavallium/dbengine/database/LLKeyValueDatabase.java b/src/main/java/it/cavallium/dbengine/database/LLKeyValueDatabase.java index 472c043..3bd0b36 100644 --- a/src/main/java/it/cavallium/dbengine/database/LLKeyValueDatabase.java +++ b/src/main/java/it/cavallium/dbengine/database/LLKeyValueDatabase.java @@ -14,8 +14,7 @@ import org.rocksdb.RocksDBException; public interface LLKeyValueDatabase extends LLSnapshottable, LLKeyValueDatabaseStructure, DatabaseProperties, IBackuppable, DatabaseOperations { - LLSingleton getSingleton(byte[] singletonListColumnName, byte[] name, byte @Nullable [] defaultValue) - throws IOException; + LLSingleton getSingleton(byte[] singletonListColumnName, byte[] name, byte @Nullable [] defaultValue); LLDictionary getDictionary(byte[] columnName, UpdateMode updateMode); diff --git a/src/main/java/it/cavallium/dbengine/database/LLMultiDatabaseConnection.java b/src/main/java/it/cavallium/dbengine/database/LLMultiDatabaseConnection.java index a12669e..cdd9d20 100644 --- a/src/main/java/it/cavallium/dbengine/database/LLMultiDatabaseConnection.java +++ b/src/main/java/it/cavallium/dbengine/database/LLMultiDatabaseConnection.java @@ -145,13 +145,8 @@ public class LLMultiDatabaseConnection implements LLDatabaseConnection { var indices = connectionToShardMap.entrySet().stream().flatMap(entry -> { var connectionIndexStructure = indexStructure.setActiveShards(new IntArrayList(entry.getValue())); - LLLuceneIndex connIndex; - try { - connIndex = entry.getKey().getLuceneIndex(clusterName, connectionIndexStructure, - indicizerAnalyzers, indicizerSimilarities, luceneOptions, luceneHacks); - } catch (IOException e) { - throw new CompletionException(e); - } + LLLuceneIndex connIndex = entry.getKey().getLuceneIndex(clusterName, connectionIndexStructure, + indicizerAnalyzers, indicizerSimilarities, luceneOptions, luceneHacks); return entry.getValue().intStream().mapToObj(shard -> new ShardToIndex(shard, connIndex)); }).toList(); diff --git a/src/main/java/it/cavallium/dbengine/database/disk/CachedIndexSearcherManager.java b/src/main/java/it/cavallium/dbengine/database/disk/CachedIndexSearcherManager.java index 1122615..5be2fba 100644 --- a/src/main/java/it/cavallium/dbengine/database/disk/CachedIndexSearcherManager.java +++ b/src/main/java/it/cavallium/dbengine/database/disk/CachedIndexSearcherManager.java @@ -63,7 +63,11 @@ public class CachedIndexSearcherManager extends SimpleResource implements IndexS this.similarity = similarity; this.queryRefreshDebounceTime = queryRefreshDebounceTime; - this.searcherManager = new SearcherManager(indexWriter, applyAllDeletes, writeAllDeletes, SEARCHER_FACTORY); + try { + this.searcherManager = new SearcherManager(indexWriter, applyAllDeletes, writeAllDeletes, SEARCHER_FACTORY); + } catch (IOException e) { + throw new DBException(e); + } refreshSubscription = luceneHeavyTasksScheduler.scheduleAtFixedRate(() -> { try { @@ -98,7 +102,11 @@ public class CachedIndexSearcherManager extends SimpleResource implements IndexS IndexSearcher indexSearcher; boolean fromSnapshot; if (snapshotsManager == null || snapshot == null) { - indexSearcher = searcherManager.acquire(); + try { + indexSearcher = searcherManager.acquire(); + } catch (IOException ex) { + throw new DBException(ex); + } fromSnapshot = false; } else { indexSearcher = snapshotsManager.resolveSnapshot(snapshot).getIndexSearcher(SEARCH_EXECUTOR); @@ -131,6 +139,8 @@ public class CachedIndexSearcherManager extends SimpleResource implements IndexS searcherManager.maybeRefreshBlocking(); } catch (AlreadyClosedException ignored) { + } catch (IOException e) { + throw new DBException(e); } finally { activeRefreshes.decrementAndGet(); } @@ -143,6 +153,8 @@ public class CachedIndexSearcherManager extends SimpleResource implements IndexS searcherManager.maybeRefresh(); } catch (AlreadyClosedException ignored) { + } catch (IOException e) { + throw new DBException(e); } finally { activeRefreshes.decrementAndGet(); } 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 eab321d..cd55194 100644 --- a/src/main/java/it/cavallium/dbengine/database/disk/LLLocalDictionary.java +++ b/src/main/java/it/cavallium/dbengine/database/disk/LLLocalDictionary.java @@ -478,13 +478,7 @@ public class LLLocalDictionary implements LLDictionary { @Override public Stream getMulti(@Nullable LLSnapshot snapshot, Stream keys) { - return keys.map(key -> { - try { - return OptionalBuf.ofNullable(getSync(snapshot, key)); - } catch (IOException e) { - throw new CompletionException(e); - } - }); + return keys.map(key -> OptionalBuf.ofNullable(getSync(snapshot, key))); } @Override @@ -854,12 +848,8 @@ public class LLLocalDictionary implements LLDictionary { }); entries.forEach(entry -> { - try { - if (entry.getKey() != null && entry.getValue() != null) { - this.putInternal(entry.getKey(), entry.getValue()); - } - } catch (IOException ex) { - throw new CompletionException(new DBException("Failed to write range", ex)); + if (entry.getKey() != null && entry.getValue() != null) { + this.putInternal(entry.getKey(), entry.getValue()); } }); } diff --git a/src/main/java/it/cavallium/dbengine/database/disk/LLLocalKeyValueDatabase.java b/src/main/java/it/cavallium/dbengine/database/disk/LLLocalKeyValueDatabase.java index 6f56c62..65a0d92 100644 --- a/src/main/java/it/cavallium/dbengine/database/disk/LLLocalKeyValueDatabase.java +++ b/src/main/java/it/cavallium/dbengine/database/disk/LLLocalKeyValueDatabase.java @@ -861,199 +861,202 @@ public class LLLocalKeyValueDatabase extends Backuppable implements LLKeyValueDa } } - private static OptionsWithCache openRocksDb(@Nullable Path path, DatabaseOptions databaseOptions, RocksDBRefs refs) - throws IOException { - // Get databases directory path - Path databasesDirPath; - if (path != null) { - databasesDirPath = path.toAbsolutePath().getParent(); - // Create base directories - if (Files.notExists(databasesDirPath)) { - Files.createDirectories(databasesDirPath); + private static OptionsWithCache openRocksDb(@Nullable Path path, DatabaseOptions databaseOptions, RocksDBRefs refs) { + try { + // Get databases directory path + Path databasesDirPath; + if (path != null) { + databasesDirPath = path.toAbsolutePath().getParent(); + // Create base directories + if (Files.notExists(databasesDirPath)) { + Files.createDirectories(databasesDirPath); + } + } else { + databasesDirPath = null; } - } else { - databasesDirPath = null; - } - //noinspection ConstantConditions - if (databaseOptions.persistentCaches() != null) { - for (var persistentCache : databaseOptions.persistentCaches()) { - var persistentCachePath = Paths.get(persistentCache.path()); - if (Files.notExists(persistentCachePath)) { - Files.createDirectories(persistentCachePath); - if (!Files.isDirectory(persistentCachePath)) { - throw new IllegalArgumentException( - "Persistent cache \"" + persistentCache.id() + "\" path \"" + persistentCachePath - + "\" is not a directory!"); + //noinspection ConstantConditions + if (databaseOptions.persistentCaches() != null) { + for (var persistentCache : databaseOptions.persistentCaches()) { + var persistentCachePath = Paths.get(persistentCache.path()); + if (Files.notExists(persistentCachePath)) { + Files.createDirectories(persistentCachePath); + if (!Files.isDirectory(persistentCachePath)) { + throw new IllegalArgumentException( + "Persistent cache \"" + persistentCache.id() + "\" path \"" + persistentCachePath + + "\" is not a directory!"); + } } } } - } - // the Options class contains a set of configurable DB options - // that determines the behaviour of the database. - var options = new DBOptions(); - refs.track(options); - options.setEnablePipelinedWrite(true); - var maxSubCompactions = Integer.parseInt(System.getProperty("it.cavallium.dbengine.compactions.max.sub", "-1")); - if (maxSubCompactions >= 0) { - options.setMaxSubcompactions(maxSubCompactions); - } - var customWriteRate = Long.parseLong(System.getProperty("it.cavallium.dbengine.write.delayedrate", "-1")); - if (customWriteRate >= 0) { - options.setDelayedWriteRate(customWriteRate); - } - if (databaseOptions.logPath().isPresent()) { - options.setDbLogDir(databaseOptions.logPath().get()); - } - if (databaseOptions.walPath().isPresent()) { - options.setWalDir(databaseOptions.walPath().get()); - } - options.setCreateIfMissing(true); - options.setSkipStatsUpdateOnDbOpen(true); - options.setCreateMissingColumnFamilies(true); - options.setInfoLogLevel(InfoLogLevel.WARN_LEVEL); - options.setAvoidFlushDuringShutdown(false); // Flush all WALs during shutdown - options.setAvoidFlushDuringRecovery(true); // Flush all WALs during startup - options.setWalRecoveryMode(databaseOptions.absoluteConsistency() - ? WALRecoveryMode.AbsoluteConsistency - : WALRecoveryMode.PointInTimeRecovery); // Crash if the WALs are corrupted.Default: TolerateCorruptedTailRecords - options.setDeleteObsoleteFilesPeriodMicros(20 * 1000000); // 20 seconds - options.setKeepLogFileNum(10); - - requireNonNull(databasesDirPath); - requireNonNull(path.getFileName()); - List paths = convertPaths(databasesDirPath, path.getFileName(), databaseOptions.volumes()) - .stream() - .map(p -> new DbPath(p.path, p.targetSize)) - .toList(); - options.setDbPaths(paths); - options.setMaxOpenFiles(databaseOptions.maxOpenFiles().orElse(-1)); - if (databaseOptions.spinning()) { - // https://nightlies.apache.org/flink/flink-docs-release-1.3/api/java/org/apache/flink/contrib/streaming/state/PredefinedOptions.html - options.setUseFsync(false); - } - - long writeBufferManagerSize; - if (databaseOptions.writeBufferManager().isPresent()) { - writeBufferManagerSize = databaseOptions.writeBufferManager().get(); - } else { - writeBufferManagerSize = 0; - } - - if (isDisableAutoCompactions()) { - options.setMaxBackgroundCompactions(0); - options.setMaxBackgroundJobs(0); - } else { - var backgroundJobs = Integer.parseInt(System.getProperty("it.cavallium.dbengine.jobs.background.num", "-1")); - if (backgroundJobs >= 0) { - options.setMaxBackgroundJobs(backgroundJobs); + // the Options class contains a set of configurable DB options + // that determines the behaviour of the database. + var options = new DBOptions(); + refs.track(options); + options.setEnablePipelinedWrite(true); + var maxSubCompactions = Integer.parseInt(System.getProperty("it.cavallium.dbengine.compactions.max.sub", "-1")); + if (maxSubCompactions >= 0) { + options.setMaxSubcompactions(maxSubCompactions); } - } + var customWriteRate = Long.parseLong(System.getProperty("it.cavallium.dbengine.write.delayedrate", "-1")); + if (customWriteRate >= 0) { + options.setDelayedWriteRate(customWriteRate); + } + if (databaseOptions.logPath().isPresent()) { + options.setDbLogDir(databaseOptions.logPath().get()); + } + if (databaseOptions.walPath().isPresent()) { + options.setWalDir(databaseOptions.walPath().get()); + } + options.setCreateIfMissing(true); + options.setSkipStatsUpdateOnDbOpen(true); + options.setCreateMissingColumnFamilies(true); + options.setInfoLogLevel(InfoLogLevel.WARN_LEVEL); + options.setAvoidFlushDuringShutdown(false); // Flush all WALs during shutdown + options.setAvoidFlushDuringRecovery(true); // Flush all WALs during startup + options.setWalRecoveryMode(databaseOptions.absoluteConsistency() + ? WALRecoveryMode.AbsoluteConsistency + : WALRecoveryMode.PointInTimeRecovery); // Crash if the WALs are corrupted.Default: TolerateCorruptedTailRecords + options.setDeleteObsoleteFilesPeriodMicros(20 * 1000000); // 20 seconds + options.setKeepLogFileNum(10); - Cache blockCache; - //todo: compressed cache will be replaced with SecondaryCache in the future - Cache compressedCache; - final boolean useDirectIO = databaseOptions.useDirectIO(); - final boolean allowMmapReads = !useDirectIO && databaseOptions.allowMemoryMapping(); - final boolean allowMmapWrites = !useDirectIO && (databaseOptions.allowMemoryMapping() - || parseBoolean(System.getProperty("it.cavallium.dbengine.mmapwrites.enable", "false"))); - if (databaseOptions.lowMemory()) { - // LOW MEMORY - options - .setBytesPerSync(0) // default - .setWalBytesPerSync(0) // default - .setIncreaseParallelism(1) - .setDbWriteBufferSize(8 * SizeUnit.MB) - .setWalTtlSeconds(60) - .setMaxTotalWalSize(10 * SizeUnit.GB) - ; - blockCache = CACHE_FACTORY.newCache(writeBufferManagerSize + databaseOptions.blockCache().orElse(8L * SizeUnit.MB)); - refs.track(blockCache); - if (databaseOptions.compressedBlockCache().isPresent()) { - compressedCache = CACHE_FACTORY.newCache(databaseOptions.compressedBlockCache().get()); - refs.track(compressedCache); + requireNonNull(databasesDirPath); + requireNonNull(path.getFileName()); + List paths = convertPaths(databasesDirPath, path.getFileName(), databaseOptions.volumes()) + .stream() + .map(p -> new DbPath(p.path, p.targetSize)) + .toList(); + options.setDbPaths(paths); + options.setMaxOpenFiles(databaseOptions.maxOpenFiles().orElse(-1)); + if (databaseOptions.spinning()) { + // https://nightlies.apache.org/flink/flink-docs-release-1.3/api/java/org/apache/flink/contrib/streaming/state/PredefinedOptions.html + options.setUseFsync(false); + } + + long writeBufferManagerSize; + if (databaseOptions.writeBufferManager().isPresent()) { + writeBufferManagerSize = databaseOptions.writeBufferManager().get(); } else { - compressedCache = null; + writeBufferManagerSize = 0; + } + + if (isDisableAutoCompactions()) { + options.setMaxBackgroundCompactions(0); + options.setMaxBackgroundJobs(0); + } else { + var backgroundJobs = Integer.parseInt(System.getProperty("it.cavallium.dbengine.jobs.background.num", "-1")); + if (backgroundJobs >= 0) { + options.setMaxBackgroundJobs(backgroundJobs); + } + } + + Cache blockCache; + //todo: compressed cache will be replaced with SecondaryCache in the future + Cache compressedCache; + final boolean useDirectIO = databaseOptions.useDirectIO(); + final boolean allowMmapReads = !useDirectIO && databaseOptions.allowMemoryMapping(); + final boolean allowMmapWrites = !useDirectIO && (databaseOptions.allowMemoryMapping() + || parseBoolean(System.getProperty("it.cavallium.dbengine.mmapwrites.enable", "false"))); + if (databaseOptions.lowMemory()) { + // LOW MEMORY + options + .setBytesPerSync(0) // default + .setWalBytesPerSync(0) // default + .setIncreaseParallelism(1) + .setDbWriteBufferSize(8 * SizeUnit.MB) + .setWalTtlSeconds(60) + .setMaxTotalWalSize(10 * SizeUnit.GB) + ; + blockCache = CACHE_FACTORY.newCache(writeBufferManagerSize + databaseOptions.blockCache().orElse(8L * SizeUnit.MB)); + refs.track(blockCache); + if (databaseOptions.compressedBlockCache().isPresent()) { + compressedCache = CACHE_FACTORY.newCache(databaseOptions.compressedBlockCache().get()); + refs.track(compressedCache); + } else { + compressedCache = null; + } + + if (useDirectIO) { + options + // Option to enable readahead in compaction + // If not set, it will be set to 2MB internally + .setCompactionReadaheadSize(2 * SizeUnit.MB) // recommend at least 2MB + // Option to tune write buffer for direct writes + .setWritableFileMaxBufferSize(SizeUnit.MB) + ; + } + if (databaseOptions.spinning()) { + options + // method documentation + .setCompactionReadaheadSize(4 * SizeUnit.MB) + // guessed + .setWritableFileMaxBufferSize(2 * SizeUnit.MB); + } + } else { + // HIGH MEMORY + options + //.setDbWriteBufferSize(64 * SizeUnit.MB) + .setBytesPerSync(64 * SizeUnit.MB) + .setWalBytesPerSync(64 * SizeUnit.MB) + + .setWalTtlSeconds(60) // Auto + .setWalSizeLimitMB(0) // Auto + .setMaxTotalWalSize(10 * SizeUnit.GB) + ; + blockCache = CACHE_FACTORY.newCache(writeBufferManagerSize + databaseOptions.blockCache().orElse( 512 * SizeUnit.MB)); + refs.track(blockCache); + if (databaseOptions.compressedBlockCache().isPresent()) { + compressedCache = CACHE_FACTORY.newCache(databaseOptions.compressedBlockCache().get()); + refs.track(compressedCache); + } else { + compressedCache = null; + } + + if (useDirectIO) { + options + // Option to enable readahead in compaction + // If not set, it will be set to 2MB internally + .setCompactionReadaheadSize(4 * SizeUnit.MB) // recommend at least 2MB + // Option to tune write buffer for direct writes + .setWritableFileMaxBufferSize(2 * SizeUnit.MB) + ; + } + if (databaseOptions.spinning()) { + options + // method documentation + .setCompactionReadaheadSize(16 * SizeUnit.MB) + // guessed + .setWritableFileMaxBufferSize(8 * SizeUnit.MB); + } + options.setIncreaseParallelism(Runtime.getRuntime().availableProcessors()); + } + + if (databaseOptions.writeBufferManager().isPresent()) { + var writeBufferManager = new WriteBufferManager(writeBufferManagerSize, blockCache, false); + refs.track(writeBufferManager); + options.setWriteBufferManager(writeBufferManager); } if (useDirectIO) { options - // Option to enable readahead in compaction - // If not set, it will be set to 2MB internally - .setCompactionReadaheadSize(2 * SizeUnit.MB) // recommend at least 2MB - // Option to tune write buffer for direct writes - .setWritableFileMaxBufferSize(SizeUnit.MB) + .setAllowMmapReads(false) + .setAllowMmapWrites(false) + .setUseDirectReads(true) ; - } - if (databaseOptions.spinning()) { - options - // method documentation - .setCompactionReadaheadSize(4 * SizeUnit.MB) - // guessed - .setWritableFileMaxBufferSize(2 * SizeUnit.MB); - } - } else { - // HIGH MEMORY - options - //.setDbWriteBufferSize(64 * SizeUnit.MB) - .setBytesPerSync(64 * SizeUnit.MB) - .setWalBytesPerSync(64 * SizeUnit.MB) - - .setWalTtlSeconds(60) // Auto - .setWalSizeLimitMB(0) // Auto - .setMaxTotalWalSize(10 * SizeUnit.GB) - ; - blockCache = CACHE_FACTORY.newCache(writeBufferManagerSize + databaseOptions.blockCache().orElse( 512 * SizeUnit.MB)); - refs.track(blockCache); - if (databaseOptions.compressedBlockCache().isPresent()) { - compressedCache = CACHE_FACTORY.newCache(databaseOptions.compressedBlockCache().get()); - refs.track(compressedCache); } else { - compressedCache = null; - } - - if (useDirectIO) { options - // Option to enable readahead in compaction - // If not set, it will be set to 2MB internally - .setCompactionReadaheadSize(4 * SizeUnit.MB) // recommend at least 2MB - // Option to tune write buffer for direct writes - .setWritableFileMaxBufferSize(2 * SizeUnit.MB) - ; + .setAllowMmapReads(allowMmapReads) + .setAllowMmapWrites(allowMmapWrites); } - if (databaseOptions.spinning()) { - options - // method documentation - .setCompactionReadaheadSize(16 * SizeUnit.MB) - // guessed - .setWritableFileMaxBufferSize(8 * SizeUnit.MB); + + if (useDirectIO || !allowMmapWrites) { + options.setUseDirectIoForFlushAndCompaction(true); } - options.setIncreaseParallelism(Runtime.getRuntime().availableProcessors()); - } - if (databaseOptions.writeBufferManager().isPresent()) { - var writeBufferManager = new WriteBufferManager(writeBufferManagerSize, blockCache, false); - refs.track(writeBufferManager); - options.setWriteBufferManager(writeBufferManager); + return new OptionsWithCache(options, blockCache, compressedCache); + } catch (IOException e) { + throw new DBException(e); } - - if (useDirectIO) { - options - .setAllowMmapReads(false) - .setAllowMmapWrites(false) - .setUseDirectReads(true) - ; - } else { - options - .setAllowMmapReads(allowMmapReads) - .setAllowMmapWrites(allowMmapWrites); - } - - if (useDirectIO || !allowMmapWrites) { - options.setUseDirectIoForFlushAndCompaction(true); - } - - return new OptionsWithCache(options, blockCache, compressedCache); } record DbPathRecord(Path path, long targetSize) {} @@ -1316,13 +1319,7 @@ public class LLLocalKeyValueDatabase extends Backuppable implements LLKeyValueDa @Override public Stream>> getMapColumnProperties(RocksDBMapProperty property) { - return getAllColumnFamilyHandles().keySet().stream().map(c -> { - try { - return new ColumnProperty<>(c.name(), property.getName(), this.getMapProperty(c, property)); - } catch (IOException e) { - throw new CompletionException(e); - } - }); + return getAllColumnFamilyHandles().keySet().stream().map(c -> new ColumnProperty<>(c.name(), property.getName(), this.getMapProperty(c, property))); } @Override @@ -1347,11 +1344,7 @@ public class LLLocalKeyValueDatabase extends Backuppable implements LLKeyValueDa @Override public Stream> getStringColumnProperties(RocksDBStringProperty property) { return getAllColumnFamilyHandles().keySet().stream().map(c -> { - try { - return new ColumnProperty<>(c.name(), property.getName(), this.getStringProperty(c, property)); - } catch (IOException e) { - throw new CompletionException(e); - } + return new ColumnProperty<>(c.name(), property.getName(), this.getStringProperty(c, property)); }); } @@ -1377,11 +1370,7 @@ public class LLLocalKeyValueDatabase extends Backuppable implements LLKeyValueDa @Override public Stream> getLongColumnProperties(RocksDBLongProperty property) { return getAllColumnFamilyHandles().keySet().stream().map(c -> { - try { - return new ColumnProperty<>(c.name(), property.getName(), this.getLongProperty(c, property)); - } catch (IOException e) { - throw new CompletionException(e); - } + return new ColumnProperty<>(c.name(), property.getName(), this.getLongProperty(c, property)); }); } diff --git a/src/main/java/it/cavallium/dbengine/database/disk/SimpleIndexSearcherManager.java b/src/main/java/it/cavallium/dbengine/database/disk/SimpleIndexSearcherManager.java index 1758c64..f7e79e4 100644 --- a/src/main/java/it/cavallium/dbengine/database/disk/SimpleIndexSearcherManager.java +++ b/src/main/java/it/cavallium/dbengine/database/disk/SimpleIndexSearcherManager.java @@ -60,7 +60,11 @@ public class SimpleIndexSearcherManager extends SimpleResource implements IndexS this.similarity = similarity; this.queryRefreshDebounceTime = queryRefreshDebounceTime; - this.searcherManager = new SearcherManager(indexWriter, applyAllDeletes, writeAllDeletes, SEARCHER_FACTORY); + try { + this.searcherManager = new SearcherManager(indexWriter, applyAllDeletes, writeAllDeletes, SEARCHER_FACTORY); + } catch (IOException e) { + throw new DBException(e); + } refreshSubscription = luceneHeavyTasksScheduler.scheduleAtFixedRate(() -> { try { @@ -83,6 +87,8 @@ public class SimpleIndexSearcherManager extends SimpleResource implements IndexS searcherManager.maybeRefreshBlocking(); } catch (AlreadyClosedException ignored) { + } catch (IOException e) { + throw new DBException(e); } finally { activeRefreshes.decrementAndGet(); } @@ -95,6 +101,8 @@ public class SimpleIndexSearcherManager extends SimpleResource implements IndexS searcherManager.maybeRefresh(); } catch (AlreadyClosedException ignored) { + } catch (IOException e) { + throw new DBException(e); } finally { activeRefreshes.decrementAndGet(); } diff --git a/src/main/java/it/cavallium/dbengine/database/remote/BufSerializer.java b/src/main/java/it/cavallium/dbengine/database/remote/BufSerializer.java index 3307cb9..41cf82d 100644 --- a/src/main/java/it/cavallium/dbengine/database/remote/BufSerializer.java +++ b/src/main/java/it/cavallium/dbengine/database/remote/BufSerializer.java @@ -10,7 +10,7 @@ import org.jetbrains.annotations.NotNull; public class BufSerializer implements DataSerializer { @Override - public void serialize(DataOutput dataOutput, @NotNull Buf bytes) { + public void serialize(DataOutput dataOutput, @NotNull Buf bytes) throws IOException { dataOutput.writeInt(bytes.size()); for (Byte aByte : bytes) { dataOutput.writeByte(aByte); @@ -18,7 +18,7 @@ public class BufSerializer implements DataSerializer { } @Override - public @NotNull Buf deserialize(DataInput dataInput) { + public @NotNull Buf deserialize(DataInput dataInput) throws IOException { var size = dataInput.readInt(); var bal = Buf.create(size); for (int i = 0; i < size; i++) { diff --git a/src/main/java/it/cavallium/dbengine/database/remote/CompressionSerializer.java b/src/main/java/it/cavallium/dbengine/database/remote/CompressionSerializer.java index 3e2f035..53a84aa 100644 --- a/src/main/java/it/cavallium/dbengine/database/remote/CompressionSerializer.java +++ b/src/main/java/it/cavallium/dbengine/database/remote/CompressionSerializer.java @@ -10,12 +10,12 @@ import org.jetbrains.annotations.NotNull; public class CompressionSerializer implements DataSerializer { @Override - public void serialize(DataOutput dataOutput, @NotNull Compression compression) { + public void serialize(DataOutput dataOutput, @NotNull Compression compression) throws IOException { dataOutput.writeInt(compression.ordinal()); } @Override - public @NotNull Compression deserialize(DataInput dataInput) { + public @NotNull Compression deserialize(DataInput dataInput) throws IOException { return Compression.values()[dataInput.readInt()]; } } diff --git a/src/main/java/it/cavallium/dbengine/database/remote/DurationSerializer.java b/src/main/java/it/cavallium/dbengine/database/remote/DurationSerializer.java index ad4104d..742e357 100644 --- a/src/main/java/it/cavallium/dbengine/database/remote/DurationSerializer.java +++ b/src/main/java/it/cavallium/dbengine/database/remote/DurationSerializer.java @@ -11,7 +11,7 @@ import org.jetbrains.annotations.NotNull; public class DurationSerializer implements DataSerializer { @Override - public void serialize(DataOutput dataOutput, @NotNull Duration duration) { + public void serialize(DataOutput dataOutput, @NotNull Duration duration) throws IOException { var units = duration.getUnits(); var smallestUnit = (ChronoUnit) units.get(units.size() - 1); dataOutput.writeInt(smallestUnit.ordinal()); @@ -19,7 +19,7 @@ public class DurationSerializer implements DataSerializer { } @Override - public @NotNull Duration deserialize(DataInput dataInput) { + public @NotNull Duration deserialize(DataInput dataInput) throws IOException { var smallestUnit = ChronoUnit.values()[dataInput.readInt()]; return Duration.of(dataInput.readLong(), smallestUnit); } diff --git a/src/main/java/it/cavallium/dbengine/database/remote/LLSnapshotSerializer.java b/src/main/java/it/cavallium/dbengine/database/remote/LLSnapshotSerializer.java index f2e9f1f..841c047 100644 --- a/src/main/java/it/cavallium/dbengine/database/remote/LLSnapshotSerializer.java +++ b/src/main/java/it/cavallium/dbengine/database/remote/LLSnapshotSerializer.java @@ -10,12 +10,12 @@ import org.jetbrains.annotations.NotNull; public class LLSnapshotSerializer implements DataSerializer { @Override - public void serialize(DataOutput dataOutput, @NotNull LLSnapshot llSnapshot) { + public void serialize(DataOutput dataOutput, @NotNull LLSnapshot llSnapshot) throws IOException { dataOutput.writeLong(llSnapshot.getSequenceNumber()); } @Override - public @NotNull LLSnapshot deserialize(DataInput dataInput) { + public @NotNull LLSnapshot deserialize(DataInput dataInput) throws IOException { return new LLSnapshot(dataInput.readLong()); } } diff --git a/src/main/java/it/cavallium/dbengine/database/remote/PathSerializer.java b/src/main/java/it/cavallium/dbengine/database/remote/PathSerializer.java index a2b672c..e9c57ff 100644 --- a/src/main/java/it/cavallium/dbengine/database/remote/PathSerializer.java +++ b/src/main/java/it/cavallium/dbengine/database/remote/PathSerializer.java @@ -10,12 +10,12 @@ import org.jetbrains.annotations.NotNull; public class PathSerializer implements DataSerializer { @Override - public void serialize(DataOutput dataOutput, @NotNull Path path) { + public void serialize(DataOutput dataOutput, @NotNull Path path) throws IOException { dataOutput.writeUTF(path.toString()); } @Override - public @NotNull Path deserialize(DataInput dataInput) { + public @NotNull Path deserialize(DataInput dataInput) throws IOException { return Path.of(dataInput.readUTF()); } } diff --git a/src/main/java/it/cavallium/dbengine/database/remote/String2FieldAnalyzerMapSerializer.java b/src/main/java/it/cavallium/dbengine/database/remote/String2FieldAnalyzerMapSerializer.java index f547c10..b9afa01 100644 --- a/src/main/java/it/cavallium/dbengine/database/remote/String2FieldAnalyzerMapSerializer.java +++ b/src/main/java/it/cavallium/dbengine/database/remote/String2FieldAnalyzerMapSerializer.java @@ -26,7 +26,7 @@ public class String2FieldAnalyzerMapSerializer implements DataSerializer deserialize(DataInput dataInput) { + public @NotNull Map deserialize(DataInput dataInput) throws IOException { var size = dataInput.readInt(); var result = new HashMap(size); for (int i = 0; i < size; i++) { diff --git a/src/main/java/it/cavallium/dbengine/database/remote/String2FieldSimilarityMapSerializer.java b/src/main/java/it/cavallium/dbengine/database/remote/String2FieldSimilarityMapSerializer.java index 64936dc..0d40f98 100644 --- a/src/main/java/it/cavallium/dbengine/database/remote/String2FieldSimilarityMapSerializer.java +++ b/src/main/java/it/cavallium/dbengine/database/remote/String2FieldSimilarityMapSerializer.java @@ -26,7 +26,7 @@ public class String2FieldSimilarityMapSerializer implements DataSerializer deserialize(DataInput dataInput) { + public @NotNull Map deserialize(DataInput dataInput) throws IOException { var size = dataInput.readInt(); var result = new HashMap(size); for (int i = 0; i < size; i++) { diff --git a/src/main/java/it/cavallium/dbengine/database/remote/StringEntrySerializer.java b/src/main/java/it/cavallium/dbengine/database/remote/StringEntrySerializer.java index a6bc70e..b8aa3d6 100644 --- a/src/main/java/it/cavallium/dbengine/database/remote/StringEntrySerializer.java +++ b/src/main/java/it/cavallium/dbengine/database/remote/StringEntrySerializer.java @@ -11,13 +11,13 @@ import org.jetbrains.annotations.NotNull; public class StringEntrySerializer implements DataSerializer { @Override - public void serialize(DataOutput dataOutput, @NotNull Map.Entry entry) { + public void serialize(DataOutput dataOutput, @NotNull Map.Entry entry) throws IOException { dataOutput.writeUTF((String) entry.getKey()); dataOutput.writeUTF((String) entry.getValue()); } @Override - public @NotNull Map.Entry deserialize(DataInput dataInput) { + public @NotNull Map.Entry deserialize(DataInput dataInput) throws IOException { return Map.entry(dataInput.readUTF(), dataInput.readUTF()); } } diff --git a/src/main/java/it/cavallium/dbengine/database/remote/StringMapSerializer.java b/src/main/java/it/cavallium/dbengine/database/remote/StringMapSerializer.java index 41d0756..51f420b 100644 --- a/src/main/java/it/cavallium/dbengine/database/remote/StringMapSerializer.java +++ b/src/main/java/it/cavallium/dbengine/database/remote/StringMapSerializer.java @@ -23,7 +23,7 @@ public class StringMapSerializer implements DataSerializer> } @Override - public @NotNull Map deserialize(DataInput dataInput) { + public @NotNull Map deserialize(DataInput dataInput) throws IOException { var size = dataInput.readInt(); var result = new HashMap(size); for (int i = 0; i < size; i++) { diff --git a/src/main/java/it/cavallium/dbengine/database/remote/TextFieldsAnalyzerSerializer.java b/src/main/java/it/cavallium/dbengine/database/remote/TextFieldsAnalyzerSerializer.java index 1b34483..e564395 100644 --- a/src/main/java/it/cavallium/dbengine/database/remote/TextFieldsAnalyzerSerializer.java +++ b/src/main/java/it/cavallium/dbengine/database/remote/TextFieldsAnalyzerSerializer.java @@ -10,12 +10,12 @@ import org.jetbrains.annotations.NotNull; public class TextFieldsAnalyzerSerializer implements DataSerializer { @Override - public void serialize(DataOutput dataOutput, @NotNull TextFieldsAnalyzer textFieldsAnalyzer) { + public void serialize(DataOutput dataOutput, @NotNull TextFieldsAnalyzer textFieldsAnalyzer) throws IOException { dataOutput.writeInt(textFieldsAnalyzer.ordinal()); } @Override - public @NotNull TextFieldsAnalyzer deserialize(DataInput dataInput) { + public @NotNull TextFieldsAnalyzer deserialize(DataInput dataInput) throws IOException { return TextFieldsAnalyzer.values()[dataInput.readInt()]; } } diff --git a/src/main/java/it/cavallium/dbengine/database/remote/TextFieldsSimilaritySerializer.java b/src/main/java/it/cavallium/dbengine/database/remote/TextFieldsSimilaritySerializer.java index 4a0ee3c..cf3ee48 100644 --- a/src/main/java/it/cavallium/dbengine/database/remote/TextFieldsSimilaritySerializer.java +++ b/src/main/java/it/cavallium/dbengine/database/remote/TextFieldsSimilaritySerializer.java @@ -10,12 +10,12 @@ import org.jetbrains.annotations.NotNull; public class TextFieldsSimilaritySerializer implements DataSerializer { @Override - public void serialize(DataOutput dataOutput, @NotNull TextFieldsSimilarity textFieldsSimilarity) { + public void serialize(DataOutput dataOutput, @NotNull TextFieldsSimilarity textFieldsSimilarity) throws IOException { dataOutput.writeInt(textFieldsSimilarity.ordinal()); } @Override - public @NotNull TextFieldsSimilarity deserialize(DataInput dataInput) { + public @NotNull TextFieldsSimilarity deserialize(DataInput dataInput) throws IOException { return TextFieldsSimilarity.values()[dataInput.readInt()]; } } diff --git a/src/main/java/it/cavallium/dbengine/database/remote/UpdateReturnModeSerializer.java b/src/main/java/it/cavallium/dbengine/database/remote/UpdateReturnModeSerializer.java index 6048300..dc70f02 100644 --- a/src/main/java/it/cavallium/dbengine/database/remote/UpdateReturnModeSerializer.java +++ b/src/main/java/it/cavallium/dbengine/database/remote/UpdateReturnModeSerializer.java @@ -10,12 +10,12 @@ import org.jetbrains.annotations.NotNull; public class UpdateReturnModeSerializer implements DataSerializer { @Override - public void serialize(DataOutput dataOutput, @NotNull UpdateReturnMode updateReturnMode) { + public void serialize(DataOutput dataOutput, @NotNull UpdateReturnMode updateReturnMode) throws IOException { dataOutput.writeInt(updateReturnMode.ordinal()); } @Override - public @NotNull UpdateReturnMode deserialize(DataInput dataInput) { + public @NotNull UpdateReturnMode deserialize(DataInput dataInput) throws IOException { return UpdateReturnMode.values()[dataInput.readInt()]; } } diff --git a/src/main/java/it/cavallium/dbengine/database/serialization/CodecSerializer.java b/src/main/java/it/cavallium/dbengine/database/serialization/CodecSerializer.java index 25b5583..fbc0e0b 100644 --- a/src/main/java/it/cavallium/dbengine/database/serialization/CodecSerializer.java +++ b/src/main/java/it/cavallium/dbengine/database/serialization/CodecSerializer.java @@ -46,34 +46,24 @@ public class CodecSerializer implements Serializer { @Override public @NotNull A deserialize(@NotNull BufDataInput is) throws SerializationException { - try { - int codecId; - if (microCodecs) { - codecId = is.readUnsignedByte(); - } else { - codecId = is.readInt(); - } - var serializer = deserializationCodecs.getCodec(codecId); - return serializer.deserialize(is); - } catch (IOException ex) { - // This shouldn't happen - throw new IOError(ex); + int codecId; + if (microCodecs) { + codecId = is.readUnsignedByte(); + } else { + codecId = is.readInt(); } + var serializer = deserializationCodecs.getCodec(codecId); + return serializer.deserialize(is); } @Override public void serialize(@NotNull A deserialized, BufDataOutput os) throws SerializationException { - try { - if (microCodecs) { - os.writeByte(serializationCodecId); - } else { - os.writeInt(serializationCodecId); - } - serializationCodec.serialize(os, deserialized); - } catch (IOException ex) { - // This shouldn't happen - throw new IOError(ex); + if (microCodecs) { + os.writeByte(serializationCodecId); + } else { + os.writeInt(serializationCodecId); } + serializationCodec.serialize(os, deserialized); } @SuppressWarnings("unused") diff --git a/src/main/java/it/cavallium/dbengine/lucene/AlwaysDirectIOFSDirectory.java b/src/main/java/it/cavallium/dbengine/lucene/AlwaysDirectIOFSDirectory.java index bb0102c..e6bb6ee 100644 --- a/src/main/java/it/cavallium/dbengine/lucene/AlwaysDirectIOFSDirectory.java +++ b/src/main/java/it/cavallium/dbengine/lucene/AlwaysDirectIOFSDirectory.java @@ -9,11 +9,11 @@ import org.apache.lucene.store.IOContext; public class AlwaysDirectIOFSDirectory extends DirectIODirectory { - public AlwaysDirectIOFSDirectory(Path path, int mergeBufferSize, long minBytesDirect) { + public AlwaysDirectIOFSDirectory(Path path, int mergeBufferSize, long minBytesDirect) throws IOException { super(FSDirectory.open(path), mergeBufferSize, minBytesDirect); } - public AlwaysDirectIOFSDirectory(Path path) { + public AlwaysDirectIOFSDirectory(Path path) throws IOException { super(FSDirectory.open(path)); } diff --git a/src/main/java/it/cavallium/dbengine/lucene/CheckIndexOutput.java b/src/main/java/it/cavallium/dbengine/lucene/CheckIndexOutput.java index ba67620..65cdad3 100644 --- a/src/main/java/it/cavallium/dbengine/lucene/CheckIndexOutput.java +++ b/src/main/java/it/cavallium/dbengine/lucene/CheckIndexOutput.java @@ -19,7 +19,7 @@ public class CheckIndexOutput extends IndexOutput { } @Override - public void close() { + public void close() throws IOException { warnLuceneThread(); output.close(); } @@ -31,19 +31,19 @@ public class CheckIndexOutput extends IndexOutput { } @Override - public long getChecksum() { + public long getChecksum() throws IOException { checkThread(); return output.getChecksum(); } @Override - public void writeByte(byte b) { + public void writeByte(byte b) throws IOException { checkThread(); output.writeByte(b); } @Override - public void writeBytes(byte[] b, int offset, int length) { + public void writeBytes(byte[] b, int offset, int length) throws IOException { checkThread(); output.writeBytes(b, offset, length); } diff --git a/src/main/java/it/cavallium/dbengine/lucene/CheckOutputDirectory.java b/src/main/java/it/cavallium/dbengine/lucene/CheckOutputDirectory.java index b958d97..5355b99 100644 --- a/src/main/java/it/cavallium/dbengine/lucene/CheckOutputDirectory.java +++ b/src/main/java/it/cavallium/dbengine/lucene/CheckOutputDirectory.java @@ -2,6 +2,7 @@ package it.cavallium.dbengine.lucene; import static it.cavallium.dbengine.lucene.LuceneUtils.warnLuceneThread; +import it.cavallium.dbengine.utils.DBException; import java.io.IOException; import java.util.Collection; import java.util.Set; @@ -21,69 +22,117 @@ public class CheckOutputDirectory extends Directory { @Override public String[] listAll() { - return directory.listAll(); + try { + return directory.listAll(); + } catch (IOException e) { + throw new DBException(e); + } } @Override public void deleteFile(String name) { - directory.deleteFile(name); + try { + directory.deleteFile(name); + } catch (IOException e) { + throw new DBException(e); + } } @Override public long fileLength(String name) { - return directory.fileLength(name); + try { + return directory.fileLength(name); + } catch (IOException e) { + throw new DBException(e); + } } @Override public IndexOutput createOutput(String name, IOContext context) { LuceneUtils.checkLuceneThread(); - return new CheckIndexOutput(directory.createOutput(name, context)); + try { + return new CheckIndexOutput(directory.createOutput(name, context)); + } catch (IOException e) { + throw new DBException(e); + } } @Override public IndexOutput createTempOutput(String prefix, String suffix, IOContext context) { LuceneUtils.checkLuceneThread(); - return new CheckIndexOutput(directory.createTempOutput(prefix, suffix, context)); + try { + return new CheckIndexOutput(directory.createTempOutput(prefix, suffix, context)); + } catch (IOException e) { + throw new DBException(e); + } } @Override public void sync(Collection names) { LuceneUtils.checkLuceneThread(); - directory.sync(names); + try { + directory.sync(names); + } catch (IOException e) { + throw new DBException(e); + } } @Override public void syncMetaData() { LuceneUtils.checkLuceneThread(); - directory.syncMetaData(); + try { + directory.syncMetaData(); + } catch (IOException e) { + throw new DBException(e); + } } @Override public void rename(String source, String dest) { LuceneUtils.checkLuceneThread(); - directory.rename(source, dest); + try { + directory.rename(source, dest); + } catch (IOException e) { + throw new DBException(e); + } } @Override public IndexInput openInput(String name, IOContext context) { LuceneUtils.checkLuceneThread(); - return new CheckIndexInput(directory.openInput(name, context)); + try { + return new CheckIndexInput(directory.openInput(name, context)); + } catch (IOException e) { + throw new DBException(e); + } } @Override public Lock obtainLock(String name) { LuceneUtils.checkLuceneThread(); - return directory.obtainLock(name); + try { + return directory.obtainLock(name); + } catch (IOException e) { + throw new DBException(e); + } } @Override public void close() { warnLuceneThread(); - directory.close(); + try { + directory.close(); + } catch (IOException e) { + throw new DBException(e); + } } @Override public Set getPendingDeletions() { - return directory.getPendingDeletions(); + try { + return directory.getPendingDeletions(); + } catch (IOException e) { + throw new DBException(e); + } } } diff --git a/src/main/java/it/cavallium/dbengine/lucene/LuceneUtils.java b/src/main/java/it/cavallium/dbengine/lucene/LuceneUtils.java index bb1d1e5..b4e1c41 100644 --- a/src/main/java/it/cavallium/dbengine/lucene/LuceneUtils.java +++ b/src/main/java/it/cavallium/dbengine/lucene/LuceneUtils.java @@ -543,7 +543,12 @@ public class LuceneUtils { } // Get the reference docId and apply it to MoreLikeThis, to generate the query - Query mltQuery = mlt.like(mltDocumentFields); + Query mltQuery = null; + try { + mltQuery = mlt.like(mltDocumentFields); + } catch (IOException e) { + throw new DBException(e); + } Query luceneQuery; if (!(luceneAdditionalQuery instanceof MatchAllDocsQuery)) { luceneQuery = new Builder() diff --git a/src/main/java/it/cavallium/dbengine/lucene/RandomFieldComparator.java b/src/main/java/it/cavallium/dbengine/lucene/RandomFieldComparator.java index c401ae1..2a7b6e6 100644 --- a/src/main/java/it/cavallium/dbengine/lucene/RandomFieldComparator.java +++ b/src/main/java/it/cavallium/dbengine/lucene/RandomFieldComparator.java @@ -31,14 +31,14 @@ public class RandomFieldComparator extends FieldComparator implements Lea } @Override - public int compareBottom(int doc) { + public int compareBottom(int doc) throws IOException { float score = scorer.score(); assert !Float.isNaN(score); return Float.compare(score, bottom); } @Override - public void copy(int slot, int doc) { + public void copy(int slot, int doc) throws IOException { scores[slot] = scorer.score(); assert !Float.isNaN(scores[slot]); } @@ -93,7 +93,7 @@ public class RandomFieldComparator extends FieldComparator implements Lea } @Override - public int compareTop(int doc) { + public int compareTop(int doc) throws IOException { float docValue = scorer.score(); assert !Float.isNaN(docValue); return Float.compare(docValue, topValue); diff --git a/src/main/java/it/cavallium/dbengine/lucene/collector/DecimalBucketMultiCollectorManager.java b/src/main/java/it/cavallium/dbengine/lucene/collector/DecimalBucketMultiCollectorManager.java index 8ed5a93..2715a56 100644 --- a/src/main/java/it/cavallium/dbengine/lucene/collector/DecimalBucketMultiCollectorManager.java +++ b/src/main/java/it/cavallium/dbengine/lucene/collector/DecimalBucketMultiCollectorManager.java @@ -114,7 +114,7 @@ public class DecimalBucketMultiCollectorManager implements CollectorMultiManager return new double[buckets]; } - public Buckets search(IndexSearcher indexSearcher) { + public Buckets search(IndexSearcher indexSearcher) throws IOException { Query query; if (USE_SINGLE_FACET_COLLECTOR && normalizationQuery != null) { query = normalizationQuery; diff --git a/src/main/java/it/cavallium/dbengine/lucene/collector/FacetsCollector.java b/src/main/java/it/cavallium/dbengine/lucene/collector/FacetsCollector.java index 0135e3b..2888e22 100644 --- a/src/main/java/it/cavallium/dbengine/lucene/collector/FacetsCollector.java +++ b/src/main/java/it/cavallium/dbengine/lucene/collector/FacetsCollector.java @@ -17,7 +17,7 @@ public interface FacetsCollector extends Collector { } @Override - public LeafCollector getLeafCollector(LeafReaderContext context) { + public LeafCollector getLeafCollector(LeafReaderContext context) throws IOException { return facetsCollector.getLeafCollector(context); } diff --git a/src/main/java/it/cavallium/dbengine/lucene/collector/FastFacetsCollectorManager.java b/src/main/java/it/cavallium/dbengine/lucene/collector/FastFacetsCollectorManager.java index 478c7b2..3af0e54 100644 --- a/src/main/java/it/cavallium/dbengine/lucene/collector/FastFacetsCollectorManager.java +++ b/src/main/java/it/cavallium/dbengine/lucene/collector/FastFacetsCollectorManager.java @@ -30,7 +30,7 @@ public class FastFacetsCollectorManager implements CollectorManager collectors) { + public FacetsCollector reduce(Collection collectors) throws IOException { return FacetsCollector.wrap(facetsCollectorManager.reduce(collectors .stream() .map(facetsCollector -> facetsCollector.getLuceneFacetsCollector()) @@ -61,23 +61,23 @@ public class FastFacetsCollectorManager implements CollectorManager get(IndexSearcher indexSearcher, int shardIndex) { return new CollectorManager<>() { @Override - public TopFieldCollector newCollector() { + public TopFieldCollector newCollector() throws IOException { return sharedCollectorManager.newCollector(); } @Override - public TopDocs reduce(Collection collectors) { + public TopDocs reduce(Collection collectors) throws IOException { if (LLUtils.isInNonBlockingThread()) { throw new UnsupportedOperationException("Called reduce in a nonblocking thread"); } diff --git a/src/main/java/it/cavallium/dbengine/lucene/collector/TopDocsCollectorMultiManager.java b/src/main/java/it/cavallium/dbengine/lucene/collector/TopDocsCollectorMultiManager.java index e97b87a..f2a0b6e 100644 --- a/src/main/java/it/cavallium/dbengine/lucene/collector/TopDocsCollectorMultiManager.java +++ b/src/main/java/it/cavallium/dbengine/lucene/collector/TopDocsCollectorMultiManager.java @@ -83,7 +83,7 @@ public class TopDocsCollectorMultiManager implements CollectorMultiManager> collectors) { + public TopDocs reduce(Collection> collectors) throws IOException { TopDocs[] docsArray; boolean needsSort = luceneSort != null; boolean needsScores = luceneSort != null && luceneSort.needsScores(); diff --git a/src/main/java/it/cavallium/dbengine/lucene/collector/TotalHitCountCollectorManager.java b/src/main/java/it/cavallium/dbengine/lucene/collector/TotalHitCountCollectorManager.java index 9a2fba8..952dd8c 100644 --- a/src/main/java/it/cavallium/dbengine/lucene/collector/TotalHitCountCollectorManager.java +++ b/src/main/java/it/cavallium/dbengine/lucene/collector/TotalHitCountCollectorManager.java @@ -48,7 +48,7 @@ public class TotalHitCountCollectorManager implements CollectorManager { } } - public long getDocCount(String field) { + public long getDocCount(String field) throws IOException { this.ensureOpen(); long total = 0; @@ -103,7 +103,7 @@ public class BigCompositeReader { return total; } - public long docFreq(Term term) { + public long docFreq(Term term) throws IOException { this.ensureOpen(); long total = 0; @@ -137,7 +137,7 @@ public class BigCompositeReader { return numDocs; } - public Fields getTermVectors(long docID) { + public Fields getTermVectors(long docID) throws IOException { this.ensureOpen(); int i = this.readerIndex(docID); return this.subReaders[i].getTermVectors(Math.toIntExact(docID - this.starts[i])); @@ -177,19 +177,19 @@ public class BigCompositeReader { return hi; } - public final void document(long docID, StoredFieldVisitor visitor) { + public final void document(long docID, StoredFieldVisitor visitor) throws IOException { this.ensureOpen(); int i = this.readerIndex(docID); this.subReaders[i].document(Math.toIntExact(docID - this.starts[i]), visitor); } - public final Document document(long docID) { + public final Document document(long docID) throws IOException { DocumentStoredFieldVisitor visitor = new DocumentStoredFieldVisitor(); this.document(docID, visitor); return visitor.getDocument(); } - public final Document document(long docID, Set fieldsToLoad) { + public final Document document(long docID, Set fieldsToLoad) throws IOException { DocumentStoredFieldVisitor visitor = new DocumentStoredFieldVisitor(fieldsToLoad); this.document(docID, visitor); return visitor.getDocument(); diff --git a/src/main/java/it/cavallium/dbengine/lucene/mlt/MultiMoreLikeThis.java b/src/main/java/it/cavallium/dbengine/lucene/mlt/MultiMoreLikeThis.java index df7106e..848f82e 100644 --- a/src/main/java/it/cavallium/dbengine/lucene/mlt/MultiMoreLikeThis.java +++ b/src/main/java/it/cavallium/dbengine/lucene/mlt/MultiMoreLikeThis.java @@ -549,7 +549,7 @@ public final class MultiMoreLikeThis { * @param docNum the documentID of the lucene doc to generate the 'More Like This" query for. * @return a query that will return docs like the passed lucene document ID. */ - public Query like(long docNum) { + public Query like(long docNum) throws IOException { if (fieldNames == null) { // gather list of valid fields from lucene Collection fields; @@ -564,7 +564,7 @@ public final class MultiMoreLikeThis { * @param filteredDocument Document with field values extracted for selected fields. * @return More Like This query for the passed document. */ - public Query like(Map> filteredDocument) { + public Query like(Map> filteredDocument) throws IOException { if (fieldNames == null) { // gather list of valid fields from lucene Collection fields = BigCompositeReader.getIndexedFields(ir); @@ -579,7 +579,7 @@ public final class MultiMoreLikeThis { * * @return a query that will return docs like the passed Readers. */ - public Query like(String fieldName, Reader... readers) { + public Query like(String fieldName, Reader... readers) throws IOException { Map> perFieldTermFrequencies = new HashMap<>(); for (Reader r : readers) { addTermFrequencies(r, perFieldTermFrequencies, fieldName); @@ -622,7 +622,7 @@ public final class MultiMoreLikeThis { * objects as the values. */ private PriorityQueue createQueue( - Map> perFieldTermFrequencies) { + Map> perFieldTermFrequencies) throws IOException { // have collected all words in doc and their freqs final long limit = Math.min(maxQueryTerms, this.getTermsCount(perFieldTermFrequencies)); FreqQ queue = new FreqQ(Math.toIntExact(limit)); // will order words by score @@ -709,7 +709,7 @@ public final class MultiMoreLikeThis { * * @param docNum the id of the lucene document from which to find terms */ - private PriorityQueue retrieveTerms(long docNum) { + private PriorityQueue retrieveTerms(long docNum) throws IOException { Map> field2termFreqMap = new HashMap<>(); retrieveTermsOfIndexReader(ir, docNum, field2termFreqMap); @@ -879,14 +879,14 @@ public final class MultiMoreLikeThis { * or best entry, first * @see #retrieveInterestingTerms */ - private PriorityQueue retrieveTerms(Reader r, String fieldName) { + private PriorityQueue retrieveTerms(Reader r, String fieldName) throws IOException { Map> field2termFreqMap = new HashMap<>(); addTermFrequencies(r, field2termFreqMap, fieldName); return createQueue(field2termFreqMap); } /** @see #retrieveInterestingTerms(java.io.Reader, String) */ - public String[] retrieveInterestingTerms(long docNum) { + public String[] retrieveInterestingTerms(long docNum) throws IOException { ArrayList al = new ArrayList<>(Math.toIntExact(maxQueryTerms)); PriorityQueue pq = retrieveTerms(docNum); ScoreTerm scoreTerm; @@ -911,7 +911,7 @@ public final class MultiMoreLikeThis { * @see #retrieveTerms(java.io.Reader, String) * @see #setMaxQueryTerms */ - public String[] retrieveInterestingTerms(Reader r, String fieldName) { + public String[] retrieveInterestingTerms(Reader r, String fieldName) throws IOException { ArrayList al = new ArrayList<>(Math.toIntExact(maxQueryTerms)); PriorityQueue pq = retrieveTerms(r, fieldName); ScoreTerm scoreTerm; diff --git a/src/main/java/it/cavallium/dbengine/lucene/searcher/AdaptiveLocalSearcher.java b/src/main/java/it/cavallium/dbengine/lucene/searcher/AdaptiveLocalSearcher.java index 97b205e..6d3dfc6 100644 --- a/src/main/java/it/cavallium/dbengine/lucene/searcher/AdaptiveLocalSearcher.java +++ b/src/main/java/it/cavallium/dbengine/lucene/searcher/AdaptiveLocalSearcher.java @@ -32,11 +32,7 @@ public class AdaptiveLocalSearcher implements LocalSearcher { @Nullable String keyFieldName, GlobalQueryRewrite transformer) { if (transformer != NO_REWRITE) { - try { - return LuceneUtils.rewrite(this, indexSearcher, queryParams, keyFieldName, transformer); - } catch (IOException e) { - throw new RuntimeException(e); - } + return LuceneUtils.rewrite(this, indexSearcher, queryParams, keyFieldName, transformer); } return transformedCollect(indexSearcher, queryParams, keyFieldName, transformer); } diff --git a/src/main/java/it/cavallium/dbengine/lucene/searcher/AdaptiveMultiSearcher.java b/src/main/java/it/cavallium/dbengine/lucene/searcher/AdaptiveMultiSearcher.java index 06229f3..5e05b96 100644 --- a/src/main/java/it/cavallium/dbengine/lucene/searcher/AdaptiveMultiSearcher.java +++ b/src/main/java/it/cavallium/dbengine/lucene/searcher/AdaptiveMultiSearcher.java @@ -32,11 +32,7 @@ public class AdaptiveMultiSearcher implements MultiSearcher { @Nullable String keyFieldName, GlobalQueryRewrite transformer) { if (transformer != NO_REWRITE) { - try { - return LuceneUtils.rewriteMulti(this, indexSearchers, queryParams, keyFieldName, transformer); - } catch (IOException e) { - throw new RuntimeException(e); - } + return LuceneUtils.rewriteMulti(this, indexSearchers, queryParams, keyFieldName, transformer); } return transformedCollectMulti(indexSearchers, queryParams, keyFieldName, transformer); } diff --git a/src/main/java/it/cavallium/dbengine/lucene/searcher/DecimalBucketMultiSearcher.java b/src/main/java/it/cavallium/dbengine/lucene/searcher/DecimalBucketMultiSearcher.java index a4dc8b7..96ffe15 100644 --- a/src/main/java/it/cavallium/dbengine/lucene/searcher/DecimalBucketMultiSearcher.java +++ b/src/main/java/it/cavallium/dbengine/lucene/searcher/DecimalBucketMultiSearcher.java @@ -4,6 +4,7 @@ import com.google.common.collect.Streams; import it.cavallium.dbengine.database.disk.LLIndexSearchers; import it.cavallium.dbengine.lucene.collector.Buckets; import it.cavallium.dbengine.lucene.collector.DecimalBucketMultiCollectorManager; +import it.cavallium.dbengine.utils.DBException; import java.io.IOException; import java.util.List; import org.apache.logging.log4j.LogManager; @@ -43,11 +44,11 @@ public class DecimalBucketMultiSearcher { bucketParams.collectionRate(), bucketParams.sampleSize() ); - return cmm.reduce(Streams.stream(indexSearchers).parallel().map(shard -> { + return cmm.reduce(Streams.stream(indexSearchers).parallel().map(indexSearcher -> { try { - return cmm.search(shard); + return cmm.search(indexSearcher); } catch (IOException e) { - throw new RuntimeException(e); + throw new DBException(e); } }).toList()); } diff --git a/src/main/java/it/cavallium/dbengine/lucene/searcher/LuceneGenerator.java b/src/main/java/it/cavallium/dbengine/lucene/searcher/LuceneGenerator.java index 785a50b..c29de0e 100644 --- a/src/main/java/it/cavallium/dbengine/lucene/searcher/LuceneGenerator.java +++ b/src/main/java/it/cavallium/dbengine/lucene/searcher/LuceneGenerator.java @@ -72,7 +72,7 @@ public class LuceneGenerator implements Supplier { remainingOffset--; } - private Weight createWeight() { + private Weight createWeight() throws IOException { ScoreMode scoreMode = computeScores ? ScoreMode.COMPLETE : ScoreMode.COMPLETE_NO_SCORES; return shard.createWeight(shard.rewrite(query), scoreMode, 1f); } @@ -93,7 +93,7 @@ public class LuceneGenerator implements Supplier { } } - private ScoreDoc getWeightedNext() { + private ScoreDoc getWeightedNext() throws IOException { while (tryAdvanceDocIdSetIterator()) { LeafReader reader = leaf.reader(); Bits liveDocs = reader.getLiveDocs(); @@ -109,7 +109,7 @@ public class LuceneGenerator implements Supplier { clearState(); return null; } - private boolean tryAdvanceDocIdSetIterator() { + private boolean tryAdvanceDocIdSetIterator() throws IOException { if (docIdSetIterator != null) { return true; } @@ -127,7 +127,7 @@ public class LuceneGenerator implements Supplier { return false; } - private ScoreDoc transformDoc(int doc) { + private ScoreDoc transformDoc(int doc) throws IOException { return new ScoreDoc(leaf.docBase + doc, scorer.score(), shardIndex); } diff --git a/src/main/java/it/cavallium/dbengine/lucene/searcher/ShardIndexSearcher.java b/src/main/java/it/cavallium/dbengine/lucene/searcher/ShardIndexSearcher.java index a0feb6b..f721939 100644 --- a/src/main/java/it/cavallium/dbengine/lucene/searcher/ShardIndexSearcher.java +++ b/src/main/java/it/cavallium/dbengine/lucene/searcher/ShardIndexSearcher.java @@ -77,7 +77,7 @@ public class ShardIndexSearcher extends IndexSearcher { } @Override - public Query rewrite(Query original) { + public Query rewrite(Query original) throws IOException { final IndexSearcher localSearcher = new IndexSearcher(getIndexReader()); original = localSearcher.rewrite(original); final Set terms = new HashSet<>(); @@ -112,7 +112,7 @@ public class ShardIndexSearcher extends IndexSearcher { // Mock: in a real env, this would hit the wire and get // term stats from remote node - Map getNodeTermStats(Set terms, int nodeID) { + Map getNodeTermStats(Set terms, int nodeID) throws IOException { var s = searchers[nodeID]; final Map stats = new HashMap<>(); if (s == null) { @@ -157,7 +157,7 @@ public class ShardIndexSearcher extends IndexSearcher { } @Override - public CollectionStatistics collectionStatistics(String field) { + public CollectionStatistics collectionStatistics(String field) throws IOException { // TODO: we could compute this on init and cache, // since we are re-inited whenever any nodes have a // new reader @@ -204,7 +204,7 @@ public class ShardIndexSearcher extends IndexSearcher { } } - private CollectionStatistics computeNodeCollectionStatistics(FieldAndShar fieldAndShard) { + private CollectionStatistics computeNodeCollectionStatistics(FieldAndShar fieldAndShard) throws IOException { var searcher = searchers[fieldAndShard.nodeID]; return searcher.collectionStatistics(fieldAndShard.field); } diff --git a/src/main/java/it/cavallium/dbengine/utils/BooleanListJsonAdapter.java b/src/main/java/it/cavallium/dbengine/utils/BooleanListJsonAdapter.java index 9d5a9aa..ae77160 100644 --- a/src/main/java/it/cavallium/dbengine/utils/BooleanListJsonAdapter.java +++ b/src/main/java/it/cavallium/dbengine/utils/BooleanListJsonAdapter.java @@ -13,7 +13,7 @@ import org.jetbrains.annotations.Nullable; public class BooleanListJsonAdapter extends JsonAdapter { @Override - public @NotNull BooleanList fromJson(@NotNull JsonReader reader) { + public @NotNull BooleanList fromJson(@NotNull JsonReader reader) throws IOException { reader.beginArray(); BooleanArrayList modifiableOutput = new BooleanArrayList(); while (reader.hasNext()) { @@ -24,7 +24,7 @@ public class BooleanListJsonAdapter extends JsonAdapter { } @Override - public void toJson(@NotNull JsonWriter writer, @Nullable BooleanList value) { + public void toJson(@NotNull JsonWriter writer, @Nullable BooleanList value) throws IOException { if (value == null) { writer.nullValue(); return; diff --git a/src/main/java/it/cavallium/dbengine/utils/ByteListJsonAdapter.java b/src/main/java/it/cavallium/dbengine/utils/ByteListJsonAdapter.java index 8f5a820..8db5487 100644 --- a/src/main/java/it/cavallium/dbengine/utils/ByteListJsonAdapter.java +++ b/src/main/java/it/cavallium/dbengine/utils/ByteListJsonAdapter.java @@ -11,7 +11,7 @@ import org.jetbrains.annotations.Nullable; public class ByteListJsonAdapter extends JsonAdapter { @Override - public @NotNull Buf fromJson(@NotNull JsonReader reader) { + public @NotNull Buf fromJson(@NotNull JsonReader reader) throws IOException { reader.beginArray(); var modifiableOutput = Buf.create(); while (reader.hasNext()) { @@ -22,7 +22,7 @@ public class ByteListJsonAdapter extends JsonAdapter { } @Override - public void toJson(@NotNull JsonWriter writer, @Nullable Buf value) { + public void toJson(@NotNull JsonWriter writer, @Nullable Buf value) throws IOException { if (value == null) { writer.nullValue(); return; diff --git a/src/main/java/it/cavallium/dbengine/utils/CharListJsonAdapter.java b/src/main/java/it/cavallium/dbengine/utils/CharListJsonAdapter.java index 13f24d6..56ad070 100644 --- a/src/main/java/it/cavallium/dbengine/utils/CharListJsonAdapter.java +++ b/src/main/java/it/cavallium/dbengine/utils/CharListJsonAdapter.java @@ -13,7 +13,7 @@ import org.jetbrains.annotations.Nullable; public class CharListJsonAdapter extends JsonAdapter { @Override - public @NotNull CharList fromJson(@NotNull JsonReader reader) { + public @NotNull CharList fromJson(@NotNull JsonReader reader) throws IOException { reader.beginArray(); CharArrayList modifiableOutput = new CharArrayList(); while (reader.hasNext()) { @@ -24,7 +24,7 @@ public class CharListJsonAdapter extends JsonAdapter { } @Override - public void toJson(@NotNull JsonWriter writer, @Nullable CharList value) { + public void toJson(@NotNull JsonWriter writer, @Nullable CharList value) throws IOException { if (value == null) { writer.nullValue(); return; diff --git a/src/main/java/it/cavallium/dbengine/utils/IntListJsonAdapter.java b/src/main/java/it/cavallium/dbengine/utils/IntListJsonAdapter.java index b77600e..dfd6933 100644 --- a/src/main/java/it/cavallium/dbengine/utils/IntListJsonAdapter.java +++ b/src/main/java/it/cavallium/dbengine/utils/IntListJsonAdapter.java @@ -13,7 +13,7 @@ import org.jetbrains.annotations.Nullable; public class IntListJsonAdapter extends JsonAdapter { @Override - public @NotNull IntList fromJson(@NotNull JsonReader reader) { + public @NotNull IntList fromJson(@NotNull JsonReader reader) throws IOException { reader.beginArray(); IntArrayList modifiableOutput = new IntArrayList(); while (reader.hasNext()) { @@ -24,7 +24,7 @@ public class IntListJsonAdapter extends JsonAdapter { } @Override - public void toJson(@NotNull JsonWriter writer, @Nullable IntList value) { + public void toJson(@NotNull JsonWriter writer, @Nullable IntList value) throws IOException { if (value == null) { writer.nullValue(); return; diff --git a/src/main/java/it/cavallium/dbengine/utils/LongListJsonAdapter.java b/src/main/java/it/cavallium/dbengine/utils/LongListJsonAdapter.java index c18570b..cd2f8f2 100644 --- a/src/main/java/it/cavallium/dbengine/utils/LongListJsonAdapter.java +++ b/src/main/java/it/cavallium/dbengine/utils/LongListJsonAdapter.java @@ -13,7 +13,7 @@ import org.jetbrains.annotations.Nullable; public class LongListJsonAdapter extends JsonAdapter { @Override - public @NotNull LongList fromJson(@NotNull JsonReader reader) { + public @NotNull LongList fromJson(@NotNull JsonReader reader) throws IOException { reader.beginArray(); LongArrayList modifiableOutput = new LongArrayList(); while (reader.hasNext()) { @@ -24,7 +24,7 @@ public class LongListJsonAdapter extends JsonAdapter { } @Override - public void toJson(@NotNull JsonWriter writer, @Nullable LongList value) { + public void toJson(@NotNull JsonWriter writer, @Nullable LongList value) throws IOException { if (value == null) { writer.nullValue(); return; diff --git a/src/main/java/it/cavallium/dbengine/utils/MoshiPolymorphic.java b/src/main/java/it/cavallium/dbengine/utils/MoshiPolymorphic.java index 9318468..2c67e0c 100644 --- a/src/main/java/it/cavallium/dbengine/utils/MoshiPolymorphic.java +++ b/src/main/java/it/cavallium/dbengine/utils/MoshiPolymorphic.java @@ -132,7 +132,7 @@ public abstract class MoshiPolymorphic { @Nullable @Override - public T fromJson(@NotNull JsonReader jsonReader) { + public T fromJson(@NotNull JsonReader jsonReader) throws IOException { String type = null; jsonReader.beginObject(); @@ -165,7 +165,7 @@ public abstract class MoshiPolymorphic { } @Override - public void toJson(@NotNull JsonWriter jsonWriter, @Nullable T t) { + public void toJson(@NotNull JsonWriter jsonWriter, @Nullable T t) throws IOException { if (t == null) { jsonWriter.nullValue(); } else { @@ -259,7 +259,7 @@ public abstract class MoshiPolymorphic { @Nullable @Override - public T fromJson(@NotNull JsonReader jsonReader) { + public T fromJson(@NotNull JsonReader jsonReader) throws IOException { try { Object instance; Object[] fields; @@ -304,7 +304,7 @@ public abstract class MoshiPolymorphic { } @Override - public void toJson(@NotNull JsonWriter jsonWriter, @Nullable T t) { + public void toJson(@NotNull JsonWriter jsonWriter, @Nullable T t) throws IOException { if (t == null) { jsonWriter.nullValue(); } else { @@ -339,7 +339,7 @@ public abstract class MoshiPolymorphic { @Nullable @Override - public List fromJson(@NotNull JsonReader jsonReader) { + public List fromJson(@NotNull JsonReader jsonReader) throws IOException { jsonReader.beginArray(); var result = new ArrayList(); while (jsonReader.hasNext()) { @@ -350,7 +350,7 @@ public abstract class MoshiPolymorphic { } @Override - public void toJson(@NotNull JsonWriter jsonWriter, @Nullable List ts) { + public void toJson(@NotNull JsonWriter jsonWriter, @Nullable List ts) throws IOException { if (ts == null) { jsonWriter.nullValue(); } else { diff --git a/src/main/java/it/cavallium/dbengine/utils/ShortListJsonAdapter.java b/src/main/java/it/cavallium/dbengine/utils/ShortListJsonAdapter.java index cd5b12e..a0f30f3 100644 --- a/src/main/java/it/cavallium/dbengine/utils/ShortListJsonAdapter.java +++ b/src/main/java/it/cavallium/dbengine/utils/ShortListJsonAdapter.java @@ -13,7 +13,7 @@ import org.jetbrains.annotations.Nullable; public class ShortListJsonAdapter extends JsonAdapter { @Override - public @NotNull ShortList fromJson(@NotNull JsonReader reader) { + public @NotNull ShortList fromJson(@NotNull JsonReader reader) throws IOException { reader.beginArray(); ShortArrayList modifiableOutput = new ShortArrayList(); while (reader.hasNext()) { @@ -24,7 +24,7 @@ public class ShortListJsonAdapter extends JsonAdapter { } @Override - public void toJson(@NotNull JsonWriter writer, @Nullable ShortList value) { + public void toJson(@NotNull JsonWriter writer, @Nullable ShortList value) throws IOException { if (value == null) { writer.nullValue(); return; diff --git a/src/main/java/it/cavallium/dbengine/utils/UTFUtils.java b/src/main/java/it/cavallium/dbengine/utils/UTFUtils.java index f3e919e..999fb3b 100644 --- a/src/main/java/it/cavallium/dbengine/utils/UTFUtils.java +++ b/src/main/java/it/cavallium/dbengine/utils/UTFUtils.java @@ -6,13 +6,13 @@ import java.io.IOException; import java.nio.charset.StandardCharsets; public class UTFUtils { - public static void writeUTF(DataOutput out, String utf) { + public static void writeUTF(DataOutput out, String utf) throws IOException { byte[] bytes = utf.getBytes(StandardCharsets.UTF_8); out.writeInt(bytes.length); out.write(bytes); } - public static String readUTF(DataInput in) { + public static String readUTF(DataInput in) throws IOException { int len = in.readInt(); byte[] data = new byte[len]; in.readFully(data, 0, len); diff --git a/src/main/java/org/warp/commonutils/stream/DataInputOutputImpl.java b/src/main/java/org/warp/commonutils/stream/DataInputOutputImpl.java index b45e564..9acf2fe 100644 --- a/src/main/java/org/warp/commonutils/stream/DataInputOutputImpl.java +++ b/src/main/java/org/warp/commonutils/stream/DataInputOutputImpl.java @@ -26,148 +26,148 @@ public class DataInputOutputImpl implements DataInputOutput { } @Override - public void readFully(byte @NotNull [] bytes) { + public void readFully(byte @NotNull [] bytes) throws IOException { in.readFully(bytes); } @Override - public void readFully(byte @NotNull [] bytes, int i, int i1) { + public void readFully(byte @NotNull [] bytes, int i, int i1) throws IOException { in.readFully(bytes, i, i1); } @Override - public int skipBytes(int i) { + public int skipBytes(int i) throws IOException { return in.skipBytes(i); } @Override - public boolean readBoolean() { + public boolean readBoolean() throws IOException { return in.readBoolean(); } @Override - public byte readByte() { + public byte readByte() throws IOException { return in.readByte(); } @Override - public int readUnsignedByte() { + public int readUnsignedByte() throws IOException { return in.readUnsignedByte(); } @Override - public short readShort() { + public short readShort() throws IOException { return in.readShort(); } @Override - public int readUnsignedShort() { + public int readUnsignedShort() throws IOException { return in.readUnsignedShort(); } @Override - public char readChar() { + public char readChar() throws IOException { return in.readChar(); } @Override - public int readInt() { + public int readInt() throws IOException { return in.readInt(); } @Override - public long readLong() { + public long readLong() throws IOException { return in.readLong(); } @Override - public float readFloat() { + public float readFloat() throws IOException { return in.readFloat(); } @Override - public double readDouble() { + public double readDouble() throws IOException { return in.readDouble(); } @Override - public String readLine() { + public String readLine() throws IOException { return in.readLine(); } @NotNull @Override - public String readUTF() { + public String readUTF() throws IOException { return in.readUTF(); } @Override - public void write(int i) { + public void write(int i) throws IOException { out.write(i); } @Override - public void write(byte @NotNull [] bytes) { + public void write(byte @NotNull [] bytes) throws IOException { out.write(bytes); } @Override - public void write(byte @NotNull [] bytes, int i, int i1) { + public void write(byte @NotNull [] bytes, int i, int i1) throws IOException { out.write(bytes, i, i1); } @Override - public void writeBoolean(boolean b) { + public void writeBoolean(boolean b) throws IOException { out.writeBoolean(b); } @Override - public void writeByte(int i) { + public void writeByte(int i) throws IOException { out.writeByte(i); } @Override - public void writeShort(int i) { + public void writeShort(int i) throws IOException { out.writeShort(i); } @Override - public void writeChar(int i) { + public void writeChar(int i) throws IOException { out.writeChar(i); } @Override - public void writeInt(int i) { + public void writeInt(int i) throws IOException { out.writeInt(i); } @Override - public void writeLong(long l) { + public void writeLong(long l) throws IOException { out.writeLong(l); } @Override - public void writeFloat(float v) { + public void writeFloat(float v) throws IOException { out.writeFloat(v); } @Override - public void writeDouble(double v) { + public void writeDouble(double v) throws IOException { out.writeDouble(v); } @Override - public void writeBytes(@NotNull String s) { + public void writeBytes(@NotNull String s) throws IOException { out.writeBytes(s); } @Override - public void writeChars(@NotNull String s) { + public void writeChars(@NotNull String s) throws IOException { out.writeChars(s); } @Override - public void writeUTF(@NotNull String s) { + public void writeUTF(@NotNull String s) throws IOException { out.writeUTF(s); } } diff --git a/src/main/java/org/warp/commonutils/stream/DataInputOutputStream.java b/src/main/java/org/warp/commonutils/stream/DataInputOutputStream.java index 4895ff7..16a1a3a 100644 --- a/src/main/java/org/warp/commonutils/stream/DataInputOutputStream.java +++ b/src/main/java/org/warp/commonutils/stream/DataInputOutputStream.java @@ -25,79 +25,79 @@ public class DataInputOutputStream extends DataOutputStream implements DataInput } @Override - public void readFully(byte @NotNull [] bytes) { + public void readFully(byte @NotNull [] bytes) throws IOException { in.readFully(bytes); } @Override - public void readFully(byte @NotNull [] bytes, int i, int i1) { + public void readFully(byte @NotNull [] bytes, int i, int i1) throws IOException { in.readFully(bytes, i, i1); } @Override - public int skipBytes(int i) { + public int skipBytes(int i) throws IOException { return in.skipBytes(i); } @Override - public boolean readBoolean() { + public boolean readBoolean() throws IOException { return in.readBoolean(); } @Override - public byte readByte() { + public byte readByte() throws IOException { return in.readByte(); } @Override - public int readUnsignedByte() { + public int readUnsignedByte() throws IOException { return in.readUnsignedByte(); } @Override - public short readShort() { + public short readShort() throws IOException { return in.readShort(); } @Override - public int readUnsignedShort() { + public int readUnsignedShort() throws IOException { return in.readUnsignedShort(); } @Override - public char readChar() { + public char readChar() throws IOException { return in.readChar(); } @Override - public int readInt() { + public int readInt() throws IOException { return in.readInt(); } @Override - public long readLong() { + public long readLong() throws IOException { return in.readLong(); } @Override - public float readFloat() { + public float readFloat() throws IOException { return in.readFloat(); } @Override - public double readDouble() { + public double readDouble() throws IOException { return in.readDouble(); } @Deprecated @Override - public String readLine() { + public String readLine() throws IOException { return in.readLine(); } @NotNull @Override - public String readUTF() { + public String readUTF() throws IOException { return in.readUTF(); } }