From eb632fadd5eb6517edea0fe23655b07da5ede0dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Mon, 14 Aug 2023 23:42:15 +0100 Subject: [PATCH] storage: Fix OOME on CatalogStorageMetadataSynchronizer for very large studies #TASK-4853 --- .../metadata/CatalogStorageMetadataSynchronizer.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/metadata/CatalogStorageMetadataSynchronizer.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/metadata/CatalogStorageMetadataSynchronizer.java index 4f6f7bb6452..3d97af2c238 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/metadata/CatalogStorageMetadataSynchronizer.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/metadata/CatalogStorageMetadataSynchronizer.java @@ -508,6 +508,16 @@ protected boolean synchronizeFiles(StudyMetadata study, List files, String } fileSamplesMap.put(fileMetadata.getName(), samples); allSamples.addAll(fileMetadata.getSamples()); + if (samples.size() > 100) { + // Try to reuse value. + // If the file holds more than 100 samples, it's most likely this same set of samples is already present + for (Set value : fileSamplesMap.values()) { + if (value.equals(samples)) { + fileSamplesMap.put(fileMetadata.getName(), value); + break; + } + } + } } if (!indexedFilesFromStorage.isEmpty()) {