From ce690f287eafc3b781c1d006897f059a09bb3c29 Mon Sep 17 00:00:00 2001 From: labkey-jeckels Date: Sat, 3 Jan 2026 09:05:41 -0800 Subject: [PATCH 1/3] Eliminate finalize() overrides --- ms2/src/org/labkey/ms2/SpectrumImporter.java | 21 ++++--------------- .../org/labkey/ms2/reader/TarIterator.java | 11 +--------- 2 files changed, 5 insertions(+), 27 deletions(-) diff --git a/ms2/src/org/labkey/ms2/SpectrumImporter.java b/ms2/src/org/labkey/ms2/SpectrumImporter.java index 9962d70a8..f4da421b1 100644 --- a/ms2/src/org/labkey/ms2/SpectrumImporter.java +++ b/ms2/src/org/labkey/ms2/SpectrumImporter.java @@ -46,9 +46,9 @@ public class SpectrumImporter private static final Logger _systemLog = LogManager.getLogger(SpectrumImporter.class); private static final int SQL_BATCH_SIZE = 100; - private Logger _log; - private MS2Importer.MS2Progress _progress; - private Set _scans; + private final Logger _log; + private final MS2Importer.MS2Progress _progress; + private final Set _scans; private final int _fractionId; private SimpleScanIterator _scanIterator; private FileLike _file = null; @@ -262,10 +262,7 @@ private void importSpectra() _systemLog.error(e); } - if (null != conn) - { - schema.getScope().releaseConnection(conn); - } + schema.getScope().releaseConnection(conn); } } @@ -278,16 +275,6 @@ private void close() _scanIterator = null; } - - @Override - protected void finalize() throws Throwable - { - super.finalize(); - - assert null == _scanIterator; - } - - public FileLike getFile() { return _file; diff --git a/ms2/src/org/labkey/ms2/reader/TarIterator.java b/ms2/src/org/labkey/ms2/reader/TarIterator.java index 6a09e7388..b028a6714 100644 --- a/ms2/src/org/labkey/ms2/reader/TarIterator.java +++ b/ms2/src/org/labkey/ms2/reader/TarIterator.java @@ -42,7 +42,7 @@ public class TarIterator implements SimpleScanIterator private static final Logger _log = LogManager.getLogger(TarIterator.class); private static final int STREAM_BUFFER_SIZE = 128 * 1024; - private String _dtaFileNamePrefix; + private final String _dtaFileNamePrefix; private InputStream _is; private GZIPInputStream _gzInputStream; private TarArchiveInputStream _tis; @@ -165,15 +165,6 @@ public void close() } } - @Override - protected void finalize() throws Throwable - { - super.finalize(); - - assert null == _is && null == _gzInputStream && null == _tis; - } - - private static byte[] realloc(int size, byte[] buf) { if (null == buf || buf.length < size) From dc54b59b001025a58de704071e00d2c6e358a6f2 Mon Sep 17 00:00:00 2001 From: labkey-jeckels Date: Mon, 5 Jan 2026 21:50:41 -0800 Subject: [PATCH 2/3] Close the stream --- .../org/labkey/flow/persist/FlowManager.java | 73 ++++++++++--------- 1 file changed, 39 insertions(+), 34 deletions(-) diff --git a/flow/src/org/labkey/flow/persist/FlowManager.java b/flow/src/org/labkey/flow/persist/FlowManager.java index c5509b9fe..aa1084387 100644 --- a/flow/src/org/labkey/flow/persist/FlowManager.java +++ b/flow/src/org/labkey/flow/persist/FlowManager.java @@ -89,6 +89,7 @@ import java.util.TreeMap; import java.util.concurrent.atomic.AtomicLong; import java.util.stream.Collectors; +import java.util.stream.Stream; import static org.junit.Assert.assertNotNull; import static org.labkey.api.exp.api.ExperimentService.asInteger; @@ -232,12 +233,15 @@ private List getAttributeEntryCaseInsensitive(String containerId, Att .append(" WHERE Container = ?").add(containerId) .append(" AND lower(Name) = lower(?)").add(attr); - return new SqlSelector(getSchema(), sql).mapStream().map(map -> { - String name = (String)map.get("Name"); - Integer rowId = (Integer)map.get("RowId"); - Integer aliasId = (Integer)map.get("Id"); - return new FlowEntry(type, rowId, containerId, name, aliasId); - }).sorted().collect(Collectors.toList()); + try (Stream> mapStream = new SqlSelector(getSchema(), sql).mapStream()) + { + return mapStream.map(map -> { + String name = (String) map.get("Name"); + Integer rowId = (Integer) map.get("RowId"); + Integer aliasId = (Integer) map.get("Id"); + return new FlowEntry(type, rowId, containerId, name, aliasId); + }).sorted().collect(Collectors.toList()); + } } @@ -1673,41 +1677,42 @@ public void updateStatistics(int currentRow) { } { List> propMaps = new ArrayList<>(1000); - SqlSelector ss = new SqlSelector(getSchema(), sqlSelectDateTime); - ss.mapStream().forEach(row -> { - - // parse the date - String dateStr = (String) row.get("datetime"); - if (dateStr == null) - { - _log.info("Skipping update for row; no datetime keywords for row: " + row); - return; - } + try (Stream> s = new SqlSelector(getSchema(), sqlSelectDateTime).mapStream()) + { + s.forEach(row -> { + // parse the date + String dateStr = (String) row.get("datetime"); + if (dateStr == null) + { + _log.info("Skipping update for row; no datetime keywords for row: " + row); + return; + } - long date = DateUtil.parseDateTime(dateStr); - Date d = new Date(date); + long date = DateUtil.parseDateTime(dateStr); + Date d = new Date(date); - // get the existing property if any - Date currentDate = (Date) row.get("currentvalue"); - if (currentDate != null) - { - if (!d.equals(currentDate)) + // get the existing property if any + Date currentDate = (Date) row.get("currentvalue"); + if (currentDate != null) { - _log.warn("Current date value '" + currentDate + "' does not match parsed date '" + d + "' for row: " + row); + if (!d.equals(currentDate)) + { + _log.warn("Current date value '" + currentDate + "' does not match parsed date '" + d + "' for row: " + row); + } + else + { + _log.debug("Skipping update for row; current date value matches the parsed date '" + d + "' for row: " + row); + } } else { - _log.debug("Skipping update for row; current date value matches the parsed date '" + d + "' for row: " + row); + Map propMap = new HashMap<>(); + propMap.put("lsid", row.get("lsid")); + propMap.put(fileDatePd.getPropertyURI(), d); + propMaps.add(propMap); } - } - else - { - Map propMap = new HashMap<>(); - propMap.put("lsid", row.get("lsid")); - propMap.put(fileDatePd.getPropertyURI(), d); - propMaps.add(propMap); - } - }); + }); + } OntologyManager.insertTabDelimited(c, user, null, helper, descriptors, MapDataIterator.of(propMaps).getDataIterator(new DataIteratorContext()), true, null); From 45acc14f18888540d08153aa4e6d8c4b33908ae1 Mon Sep 17 00:00:00 2001 From: labkey-jeckels Date: Tue, 6 Jan 2026 16:45:34 -0800 Subject: [PATCH 3/3] Revert "Close the stream" This reverts commit dc54b59b001025a58de704071e00d2c6e358a6f2. --- .../org/labkey/flow/persist/FlowManager.java | 73 +++++++++---------- 1 file changed, 34 insertions(+), 39 deletions(-) diff --git a/flow/src/org/labkey/flow/persist/FlowManager.java b/flow/src/org/labkey/flow/persist/FlowManager.java index aa1084387..c5509b9fe 100644 --- a/flow/src/org/labkey/flow/persist/FlowManager.java +++ b/flow/src/org/labkey/flow/persist/FlowManager.java @@ -89,7 +89,6 @@ import java.util.TreeMap; import java.util.concurrent.atomic.AtomicLong; import java.util.stream.Collectors; -import java.util.stream.Stream; import static org.junit.Assert.assertNotNull; import static org.labkey.api.exp.api.ExperimentService.asInteger; @@ -233,15 +232,12 @@ private List getAttributeEntryCaseInsensitive(String containerId, Att .append(" WHERE Container = ?").add(containerId) .append(" AND lower(Name) = lower(?)").add(attr); - try (Stream> mapStream = new SqlSelector(getSchema(), sql).mapStream()) - { - return mapStream.map(map -> { - String name = (String) map.get("Name"); - Integer rowId = (Integer) map.get("RowId"); - Integer aliasId = (Integer) map.get("Id"); - return new FlowEntry(type, rowId, containerId, name, aliasId); - }).sorted().collect(Collectors.toList()); - } + return new SqlSelector(getSchema(), sql).mapStream().map(map -> { + String name = (String)map.get("Name"); + Integer rowId = (Integer)map.get("RowId"); + Integer aliasId = (Integer)map.get("Id"); + return new FlowEntry(type, rowId, containerId, name, aliasId); + }).sorted().collect(Collectors.toList()); } @@ -1677,42 +1673,41 @@ public void updateStatistics(int currentRow) { } { List> propMaps = new ArrayList<>(1000); - try (Stream> s = new SqlSelector(getSchema(), sqlSelectDateTime).mapStream()) - { - s.forEach(row -> { - // parse the date - String dateStr = (String) row.get("datetime"); - if (dateStr == null) - { - _log.info("Skipping update for row; no datetime keywords for row: " + row); - return; - } + SqlSelector ss = new SqlSelector(getSchema(), sqlSelectDateTime); + ss.mapStream().forEach(row -> { + + // parse the date + String dateStr = (String) row.get("datetime"); + if (dateStr == null) + { + _log.info("Skipping update for row; no datetime keywords for row: " + row); + return; + } - long date = DateUtil.parseDateTime(dateStr); - Date d = new Date(date); + long date = DateUtil.parseDateTime(dateStr); + Date d = new Date(date); - // get the existing property if any - Date currentDate = (Date) row.get("currentvalue"); - if (currentDate != null) + // get the existing property if any + Date currentDate = (Date) row.get("currentvalue"); + if (currentDate != null) + { + if (!d.equals(currentDate)) { - if (!d.equals(currentDate)) - { - _log.warn("Current date value '" + currentDate + "' does not match parsed date '" + d + "' for row: " + row); - } - else - { - _log.debug("Skipping update for row; current date value matches the parsed date '" + d + "' for row: " + row); - } + _log.warn("Current date value '" + currentDate + "' does not match parsed date '" + d + "' for row: " + row); } else { - Map propMap = new HashMap<>(); - propMap.put("lsid", row.get("lsid")); - propMap.put(fileDatePd.getPropertyURI(), d); - propMaps.add(propMap); + _log.debug("Skipping update for row; current date value matches the parsed date '" + d + "' for row: " + row); } - }); - } + } + else + { + Map propMap = new HashMap<>(); + propMap.put("lsid", row.get("lsid")); + propMap.put(fileDatePd.getPropertyURI(), d); + propMaps.add(propMap); + } + }); OntologyManager.insertTabDelimited(c, user, null, helper, descriptors, MapDataIterator.of(propMaps).getDataIterator(new DataIteratorContext()), true, null);