/** * Find all the tablets within the provided bulk load mapping range. */ private List<TabletMetadata> findOverlappingTablets(KeyExtent loadRange, Iterator<TabletMetadata> tabletIter) { List<TabletMetadata> tablets = new ArrayList<>(); TabletMetadata currentTablet = tabletIter.next(); // skip tablets until we find the prevEndRow of loadRange while (!Objects.equals(currentTablet.getPrevEndRow(), loadRange.getPrevEndRow())) { currentTablet = tabletIter.next(); } // we have found the first tablet in the range, add it to the list tablets.add(currentTablet); // find the remaining tablets within the loadRange by // adding tablets to the list until the endRow matches the loadRange while (!Objects.equals(currentTablet.getEndRow(), loadRange.getEndRow())) { currentTablet = tabletIter.next(); tablets.add(currentTablet); } return tablets; } }
public KeyExtent getExtent() { if (extent == null) { extent = new KeyExtent(getTableId(), getEndRow(), getPrevEndRow()); } return extent; }
static boolean goodTransition(TabletMetadata prev, TabletMetadata curr) { if (!curr.sawPrevEndRow()) { log.warn("Tablet {} had no prev end row.", curr.getExtent()); return false; } if (!curr.getTableId().equals(prev.getTableId())) { if (prev.getEndRow() != null) { log.debug("Non-null end row for last tablet in table: " + prev.getExtent() + " " + curr.getExtent()); return false; } if (curr.getPrevEndRow() != null) { log.debug("First tablet for table had prev end row {} {} ", prev.getExtent(), curr.getExtent()); return false; } } else { if (prev.getEndRow() == null) { throw new IllegalStateException("Null end row for tablet in middle of table: " + prev.getExtent() + " " + curr.getExtent()); } if (curr.getPrevEndRow() == null || !prev.getEndRow().equals(curr.getPrevEndRow())) { log.debug("Tablets end row and prev end row not equals {} {} ", prev.getExtent(), curr.getExtent()); return false; } } return true; }