!metaChanges.hasRegionsToRestore(), "A clone should not have regions to restore"); Preconditions.checkArgument( !metaChanges.hasRegionsToRemove(), "A clone should not have regions to remove"); return metaChanges.getRegionsToAdd(); } catch (Exception e) { String msg = "clone snapshot=" + ClientSnapshotDescriptionUtils.toString(snapshot) +
private void openWithRestoringSnapshot() throws IOException { final RestoreSnapshotHelper.RestoreMetaChanges meta = RestoreSnapshotHelper.copySnapshotForScanner(conf, fs, rootDir, restoreDir, snapshotName); final List<RegionInfo> restoredRegions = meta.getRegionsToAdd(); htd = meta.getTableDescriptor(); regions = new ArrayList<>(restoredRegions.size()); restoredRegions.stream().filter(this::isValidRegion).sorted().forEach(r -> regions.add(r)); }
RestoreMetaChanges metaChanges = new RestoreMetaChanges(tableDesc, parentsMap); LOG.info("region to restore: " + regionName); regionNames.remove(regionName); metaChanges.addRegionToRestore(ProtobufUtil.toRegionInfo(regionManifests.get(regionName) .getRegionInfo())); } else { LOG.info("region to remove: " + regionName); metaChanges.addRegionToRemove(regionInfo); status.setStatus("Cloning regions..."); RegionInfo[] clonedRegions = cloneHdfsRegions(exec, regionManifests, regionsToAdd); metaChanges.setNewRegions(clonedRegions); status.setStatus("Finished cloning regions."); restoreHdfsRegions(exec, regionManifests, metaChanges.getRegionsToRestore()); status.setStatus("Finished restoring all table regions."); removeHdfsRegions(exec, metaChanges.getRegionsToRemove()); status.setStatus("Finished deleting excess regions from table.");
if (metaChanges.hasRegionsToRemove()) hrisToRemove.addAll(metaChanges.getRegionsToRemove()); MetaTableAccessor.deleteRegions(conn, hrisToRemove); if (metaChanges.hasRegionsToAdd()) hris.addAll(metaChanges.getRegionsToAdd()); MetaTableAccessor.addRegionsToMeta(conn, hris, hTableDescriptor.getRegionReplication()); if (metaChanges.hasRegionsToRestore()) { MetaTableAccessor.overwriteRegions(conn, metaChanges.getRegionsToRestore(), hTableDescriptor.getRegionReplication()); metaChanges.updateMetaParentRegions(this.server.getConnection(), hris);
RestoreMetaChanges metaChanges = new RestoreMetaChanges(tableDesc, parentsMap); LOG.info("region to restore: " + regionName); regionNames.remove(regionName); metaChanges.addRegionToRestore(regionInfo); } else { LOG.info("region to remove: " + regionName); metaChanges.addRegionToRemove(regionInfo); restoreHdfsRegions(exec, regionManifests, metaChanges.getRegionsToRestore()); status.setStatus("Finished restoring all table regions."); removeHdfsRegions(exec, metaChanges.getRegionsToRemove()); status.setStatus("Finished deleting excess regions from table."); status.setStatus("Cloning regions..."); HRegionInfo[] clonedRegions = cloneHdfsRegions(exec, regionManifests, regionsToAdd); metaChanges.setNewRegions(clonedRegions); status.setStatus("Finished cloning regions.");
if (metaChanges.hasRegionsToAdd()) hris.addAll(metaChanges.getRegionsToAdd()); if (metaChanges.hasRegionsToRestore()) hris.addAll(metaChanges.getRegionsToRestore()); List<HRegionInfo> hrisToRemove = metaChanges.getRegionsToRemove(); MetaEditor.mutateRegions(catalogTracker, hrisToRemove, hris);
RestoreMetaChanges metaChanges = new RestoreMetaChanges(); LOG.info("region to restore: " + regionName); snapshotRegionNames.remove(regionName); metaChanges.addRegionToRestore(regionInfo); } else { LOG.info("region to remove: " + regionName); metaChanges.addRegionToRemove(regionInfo); restoreHdfsRegions(metaChanges.getRegionsToRestore()); removeHdfsRegions(metaChanges.getRegionsToRemove()); metaChanges.setNewRegions(clonedRegions);
Preconditions.checkArgument(!metaChanges.hasRegionsToRestore(), "A clone should not have regions to restore"); Preconditions.checkArgument(!metaChanges.hasRegionsToRemove(), "A clone should not have regions to remove"); return metaChanges.getRegionsToAdd(); } catch (Exception e) { String msg = "clone snapshot=" + ClientSnapshotDescriptionUtils.toString(snapshot) +
Preconditions.checkArgument(!metaChanges.hasRegionsToRestore(), "A clone should not have regions to restore"); Preconditions.checkArgument(!metaChanges.hasRegionsToRemove(), "A clone should not have regions to remove"); return metaChanges.getRegionsToAdd(); } catch (Exception e) { String msg = "clone snapshot=" + SnapshotDescriptionUtils.toString(snapshot) + " failed";
private void init() throws IOException { final RestoreSnapshotHelper.RestoreMetaChanges meta = RestoreSnapshotHelper.copySnapshotForScanner( conf, fs, rootDir, restoreDir, snapshotName); final List<HRegionInfo> restoredRegions = meta.getRegionsToAdd(); htd = meta.getTableDescriptor(); regions = new ArrayList<HRegionInfo>(restoredRegions.size()); for (HRegionInfo hri: restoredRegions) { if (CellUtil.overlappingKeys(scan.getStartRow(), scan.getStopRow(), hri.getStartKey(), hri.getEndKey())) { regions.add(hri); } } // sort for regions according to startKey. Collections.sort(regions); initScanMetrics(scan); }
private void init() throws IOException { RestoreSnapshotHelper.RestoreMetaChanges meta = RestoreSnapshotHelper.copySnapshotForScanner(this.configuration, this.fs, this.rootDir, this.restoreDir, this.snapshotName); List restoredRegions = meta.getRegionsToAdd(); this.htd = meta.getTableDescriptor(); this.regions = new ArrayList(restoredRegions.size()); Iterator i$ = restoredRegions.iterator(); while(i$.hasNext()) { RegionInfo hri = (RegionInfo)i$.next(); if(CellUtil.overlappingKeys(this.scan.getStartRow(), this.scan.getStopRow(), hri.getStartKey(), hri.getEndKey())) { this.regions.add(hri); } } Collections.sort(this.regions,RegionInfo.COMPARATOR); }
private void init() throws IOException { RestoreSnapshotHelper.RestoreMetaChanges meta = RestoreSnapshotHelper.copySnapshotForScanner(this.configuration, this.fs, this.rootDir, this.restoreDir, this.snapshotName); List<RegionInfo> restoredRegions = meta.getRegionsToAdd(); this.htd = meta.getTableDescriptor(); this.regions = new ArrayList<>(restoredRegions.size()); for (RegionInfo restoredRegion : restoredRegions) { if (isValidRegion(restoredRegion)) { this.regions.add(restoredRegion); } } this.regions.sort(RegionInfo.COMPARATOR); }
private void forceRegionsOffline(final RestoreSnapshotHelper.RestoreMetaChanges metaChanges) { forceRegionsOffline(metaChanges.getRegionsToAdd()); forceRegionsOffline(metaChanges.getRegionsToRestore()); forceRegionsOffline(metaChanges.getRegionsToRemove()); }
private void init() throws IOException { RestoreSnapshotHelper.RestoreMetaChanges meta = RestoreSnapshotHelper.copySnapshotForScanner(this.configuration, this.fs, this.rootDir, this.restoreDir, this.snapshotName); List<RegionInfo> restoredRegions = meta.getRegionsToAdd(); this.htd = meta.getTableDescriptor(); this.regions = new ArrayList<RegionInfo>(restoredRegions.size()); for (RegionInfo restoredRegion : restoredRegions) { if (isValidRegion(restoredRegion)) { this.regions.add(restoredRegion); } } this.regions.sort(RegionInfo.COMPARATOR); LOG.info("Initialization complete with " + regions.size() + " valid regions"); }
new RestoreSnapshotHelper.RestoreMetaChanges( modifiedTableDescriptor, parentsToChildrenPairMap); metaChanges.updateMetaParentRegions(conn, regionsToAdd);
regionsToRestore = metaChanges.getRegionsToRestore(); regionsToRemove = metaChanges.getRegionsToRemove(); regionsToAdd = metaChanges.getRegionsToAdd(); parentsToChildrenPairMap = metaChanges.getParentToChildrenPairMap(); } catch (IOException e) { String msg = "restore snapshot=" + ClientSnapshotDescriptionUtils.toString(snapshot)
/** * Add regions to hbase:meta table. * @param env MasterProcedureEnv * @throws IOException */ private void addRegionsToMeta(final MasterProcedureEnv env) throws IOException { newRegions = CreateTableProcedure.addTableToMeta(env, tableDescriptor, newRegions); // TODO: parentsToChildrenPairMap is always empty, which makes updateMetaParentRegions() // a no-op. This part seems unnecessary. Figure out. - Appy 12/21/17 RestoreSnapshotHelper.RestoreMetaChanges metaChanges = new RestoreSnapshotHelper.RestoreMetaChanges( tableDescriptor, parentsToChildrenPairMap); metaChanges.updateMetaParentRegions(env.getMasterServices().getConnection(), newRegions); }