This is an automated email from the ASF dual-hosted git repository.

edcoleman pushed a commit to branch elasticity
in repository https://gitbox.apache.org/repos/asf/accumulo.git

commit 0d40533307ab421960fbcc950892a72e72437031
Merge: 82b80d0d62 a41366bbd2
Author: Ed Coleman <edcole...@apache.org>
AuthorDate: Mon May 6 20:16:17 2024 +0000

    Merge remote-tracking branch 'upstream/main' into elasticity

 .../core/clientImpl/TabletServerBatchReaderIterator.java      | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --cc 
core/src/main/java/org/apache/accumulo/core/clientImpl/TabletServerBatchReaderIterator.java
index b95f256786,040a765b1f..3828b2c799
--- 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/TabletServerBatchReaderIterator.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/TabletServerBatchReaderIterator.java
@@@ -716,40 -650,26 +716,41 @@@ public class TabletServerBatchReaderIte
        if (serverToUse == null) {
          // no scan server was given so use the tablet server
          serverToUse = extentToTserverMap.get(extent);
 -        log.trace("For tablet {} using hints {} scan server selector chose 
tablet_server", tabletId,
 -            options.executionHints);
 +        if (serverToUse != null) {
-           log.trace("For tablet {} scan server selector chose tablet_server 
{}", tabletId,
-               serverToUse);
++          log.trace("For tablet {} using hints {} scan server selector chose 
tablet_server",
++              tabletId, options.executionHints);
 +        } else {
 +          log.trace(
-               "For tablet {} scan server selector chose tablet_server, but 
tablet is not hosted",
-               tabletId);
++              "For tablet {} using hints {} scan server selector chose 
tablet_server, but tablet is not hosted",
++              tabletId, options.executionHints);
 +        }
        } else {
-         log.trace("For tablet {} scan server selector chose scan_server:{}", 
tabletId, serverToUse);
+         log.trace("For tablet {} using hints {} scan server selector chose 
scan_server:{}",
+             tabletId, options.executionHints, serverToUse);
        }
  
 -      var rangeMap = binnedRanges2.computeIfAbsent(serverToUse, k -> new 
HashMap<>());
 -      List<Range> ranges = extentToRangesMap.get(extent);
 -      rangeMap.put(extent, ranges);
 +      if (serverToUse != null) {
 +        var rangeMap = binnedRanges.computeIfAbsent(serverToUse, k -> new 
HashMap<>());
 +        List<Range> extentRanges = extentToRangesMap.get(extent);
 +        rangeMap.put(extent, extentRanges);
 +
 +        var server = serverToUse;
 +        reporters.computeIfAbsent(serverToUse, k -> 
scanAttempts.createReporter(server, tabletId));
 +      } else {
 +        failures.addAll(extentToRangesMap.get(extent));
 +      }
 +    }
  
 -      var server = serverToUse;
 -      reporters.computeIfAbsent(serverToUse, k -> 
scanAttempts.createReporter(server, tabletId));
 +    if (!failures.isEmpty()) {
 +      // if there are failures at this point its because tablets are not 
hosted, so lets attempt to
 +      // get them hosted
 +      clientTabletCache.findTablets(context, ranges, (cachedTablet, range) -> 
{},
 +          LocationNeed.REQUIRED);
 +      return new ScanServerData(failures);
      }
  
 -    ScanServerData ssd = new ScanServerData();
 +    ScanServerData ssd = new ScanServerData(actions, reporters);
  
 -    ssd.binnedRanges = binnedRanges2;
 -    ssd.actions = actions;
 -    ssd.reporters = reporters;
      log.trace("Scan server selector chose delay:{} busyTimeout:{}", 
actions.getDelay(),
          actions.getBusyTimeout());
      return ssd;

Reply via email to