keith-turner commented on code in PR #3980:
URL: https://github.com/apache/accumulo/pull/3980#discussion_r1406441395


##########
server/gc/src/main/java/org/apache/accumulo/gc/GCRun.java:
##########
@@ -176,9 +176,10 @@ public Stream<Reference> getReferences() {
     if (level == Ample.DataLevel.ROOT) {
       tabletStream = Stream.of(context.getAmple().readTablet(RootTable.EXTENT, 
DIR, FILES, SCANS));
     } else {
-      var tabletsMetadata = 
TabletsMetadata.builder(context).scanTable(level.metaTable())
-          .checkConsistency().fetch(DIR, FILES, SCANS).build();
-      tabletStream = tabletsMetadata.stream();
+      try (TabletsMetadata tm = 
TabletsMetadata.builder(context).scanTable(level.metaTable())

Review Comment:
   Can not close `tm` because a stream derived from it is used to build other 
streams which are returned.



##########
core/src/main/java/org/apache/accumulo/core/util/Merge.java:
##########
@@ -244,21 +244,20 @@ protected Iterator<Size> getSizeIterator(AccumuloClient 
client, String tablename
     // open up metadata, walk through the tablets.
 
     TableId tableId;
-    TabletsMetadata tablets;
+    ClientContext context = (ClientContext) client;
     try {
-      ClientContext context = (ClientContext) client;
       tableId = context.getTableId(tablename);
-      tablets = TabletsMetadata.builder(context).scanMetadataTable()
-          .overRange(new KeyExtent(tableId, end, 
start).toMetaRange()).fetch(FILES, PREV_ROW)
-          .build();
     } catch (Exception e) {
       throw new MergeException(e);
     }
-
-    return tablets.stream().map(tm -> {
-      long size = 
tm.getFilesMap().values().stream().mapToLong(DataFileValue::getSize).sum();
-      return new Size(tm.getExtent(), size);
-    }).iterator();
+    try (TabletsMetadata tablets = 
TabletsMetadata.builder(context).scanMetadataTable()

Review Comment:
   This is returning an iterator over `tablets`, so can not close `tablets`



##########
core/src/main/java/org/apache/accumulo/core/clientImpl/bulk/ConcurrentKeyExtentCache.java:
##########
@@ -88,9 +88,10 @@ protected void updateCache(KeyExtent e) {
 
   @VisibleForTesting
   protected Stream<KeyExtent> lookupExtents(Text row) {
-    return TabletsMetadata.builder(ctx).forTable(tableId).overlapping(row, 
true, null)
-        .checkConsistency().fetch(PREV_ROW).build().stream().limit(100)
-        .map(TabletMetadata::getExtent);
+    try (TabletsMetadata tabletsMetadata = 
TabletsMetadata.builder(ctx).forTable(tableId)
+        .overlapping(row, true, 
null).checkConsistency().fetch(PREV_ROW).build()) {
+      return 
tabletsMetadata.stream().limit(100).map(TabletMetadata::getExtent);

Review Comment:
   This is returning a stream, so the TabletsMetadata object can not be closed. 
 Could add an onClose call to the stream to close tabletsMetadata.  The calling 
code would need to close the stream when its done



##########
server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/PrepBulkImport.java:
##########
@@ -205,10 +205,13 @@ private KeyExtent checkForMerge(final long tid, final 
Manager manager) throws Ex
     try (LoadMappingIterator lmi =
         BulkSerialize.readLoadMapping(bulkDir.toString(), bulkInfo.tableId, 
fs::open)) {
 
-      TabletIterFactory tabletIterFactory =
-          startRow -> 
TabletsMetadata.builder(manager.getContext()).forTable(bulkInfo.tableId)
-              .overlapping(startRow, 
null).checkConsistency().fetch(PREV_ROW).build().stream()
-              .map(TabletMetadata::getExtent).iterator();
+      TabletIterFactory tabletIterFactory = startRow -> {
+        try (TabletsMetadata tabletsMetadata =
+            
TabletsMetadata.builder(manager.getContext()).forTable(bulkInfo.tableId)
+                .overlapping(startRow, 
null).checkConsistency().fetch(PREV_ROW).build()) {
+          return 
tabletsMetadata.stream().map(TabletMetadata::getExtent).iterator();

Review Comment:
   Returns an iterator so can not close `tabletsMetadata`



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to