@Override public String toString() { return "{" + hri.getShortNameToLog() + " state=" + state + ", ts=" + stamp + ", server=" + serverName + "}"; }
/** * @return Return a String of short, printable names for <code>hris</code> * (usually encoded name) for us logging. */ static String getShortNameToLog(RegionInfo...hris) { return getShortNameToLog(Arrays.asList(hris)); }
/** * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0 * Use {@link org.apache.hadoop.hbase.client.RegionInfo#getShortNameToLog(RegionInfo...)}. */ @Deprecated public static String getShortNameToLog(HRegionInfo...hris) { return RegionInfo.getShortNameToLog(Arrays.asList(hris)); }
@Override public void toStringClassDetails(StringBuilder sb) { sb.append(getClass().getSimpleName()); sb.append(" child="); sb.append(this.mergedChild.getShortNameToLog()); sb.append(", father="); sb.append(this.father.getShortNameToLog()); sb.append(", mother="); sb.append(this.mother.getShortNameToLog()); }
/** * @return Return a String of short, printable names for <code>hris</code> * (usually encoded name) for us logging. * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0 * Use {@link org.apache.hadoop.hbase.client.RegionInfo#getShortNameToLog(List)})}. */ @Deprecated public static String getShortNameToLog(final List<HRegionInfo> hris) { return RegionInfo.getShortNameToLog(hris.stream().collect(Collectors.toList())); }
/** * @return Return a String of short, printable names for <code>hris</code> * (usually encoded name) for us logging. */ static String getShortNameToLog(final List<RegionInfo> ris) { return ris.stream().map(ri -> ri.getShortNameToLog()). collect(Collectors.toList()).toString(); }
@Override public void toStringClassDetails(StringBuilder sb) { sb.append(getClass().getSimpleName()); sb.append(" table="); sb.append(getTableName()); sb.append(", parent="); sb.append(getParentRegion().getShortNameToLog()); sb.append(", daughterA="); sb.append(daughter_1_RI.getShortNameToLog()); sb.append(", daughterB="); sb.append(daughter_2_RI.getShortNameToLog()); }
@Override public void toStringClassDetails(StringBuilder sb) { sb.append(getClass().getSimpleName()); sb.append(" table="); sb.append(getTableName()); sb.append(", regions="); sb.append(RegionInfo.getShortNameToLog(regionsToMerge)); sb.append(", forcibly="); sb.append(forcible); }
@Override protected void toStringClassDetails(final StringBuilder builder) { super.toStringClassDetails(builder); if (regionInfos != null) { builder.append(" regions="); for (int i = 0; i < regionInfos.length; ++i) { if (i > 0) builder.append(","); builder.append(regionInfos[i].getShortNameToLog()); } } else if (namespace != null) { builder.append(", namespace=").append(namespace); } else if (tableName != null) { builder.append(", tableName=").append(tableName); } builder.append(", type=").append(type); }
@Override public void toStringClassDetails(final StringBuilder sb) { super.toStringClassDetails(sb); sb.append(", region=").append(getRegion().getShortNameToLog()); }
private void updateRegionLocation(RegionInfo regionInfo, State state, Put put) throws IOException { try (Table table = master.getConnection().getTable(TableName.META_TABLE_NAME)) { table.put(put); } catch (IOException e) { // TODO: Revist!!!! Means that if a server is loaded, then we will abort our host! // In tests we abort the Master! String msg = String.format("FAILED persisting region=%s state=%s", regionInfo.getShortNameToLog(), state); LOG.error(msg, e); master.abort(msg, e); throw e; } }
private Pair<Path, Path> splitStoreFile(HRegionFileSystem regionFs, byte[] family, HStoreFile sf) throws IOException { if (LOG.isDebugEnabled()) { LOG.debug("pid=" + getProcId() + " splitting started for store file: " + sf.getPath() + " for region: " + getParentRegion().getShortNameToLog()); } final byte[] splitRow = getSplitRow(); final String familyName = Bytes.toString(family); final Path path_first = regionFs.splitStoreFile(this.daughter_1_RI, familyName, sf, splitRow, false, splitPolicy); final Path path_second = regionFs.splitStoreFile(this.daughter_2_RI, familyName, sf, splitRow, true, splitPolicy); if (LOG.isDebugEnabled()) { LOG.debug("pid=" + getProcId() + " splitting complete for store file: " + sf.getPath() + " for region: " + getParentRegion().getShortNameToLog()); } return new Pair<Path,Path>(path_first, path_second); }
@Override protected Flow executeFromState(MasterProcedureEnv env, GCMergedRegionsState state) throws ProcedureSuspendedException, ProcedureYieldException, InterruptedException { if (LOG.isTraceEnabled()) { LOG.trace(this + " execute state=" + state); } try { switch (state) { case GC_MERGED_REGIONS_PREPARE: // Nothing to do to prepare. setNextState(GCMergedRegionsState.GC_MERGED_REGIONS_PURGE); break; case GC_MERGED_REGIONS_PURGE: addChildProcedure(createGCRegionProcedures(env)); setNextState(GCMergedRegionsState.GC_REGION_EDIT_METADATA); break; case GC_REGION_EDIT_METADATA: MetaTableAccessor.deleteMergeQualifiers(env.getMasterServices().getConnection(), mergedChild); return Flow.NO_MORE_STATE; default: throw new UnsupportedOperationException(this + " unhandled state=" + state); } } catch (IOException ioe) { // TODO: This is going to spew log? LOG.warn("Error trying to GC merged regions " + this.father.getShortNameToLog() + " & " + this.mother.getShortNameToLog() + "; retrying...", ioe); } return Flow.HAS_MORE_STATE; }
"Completed" + (cr.isMajor() ? " major" : "") + " compaction of " + cr.getFiles().size() + (cr.isAllFiles() ? " (all)" : "") + " file(s) in " + this + " of " + this.getRegionInfo().getShortNameToLog() + " into "); if (sfs.isEmpty()) { message.append("none, ");
+ RegionInfo.getShortNameToLog(regionsToMerge) + " in table " + getTableName(), e); throw e;
private void updateRegionSplitTransition(final ServerName serverName, final TransitionCode state, final RegionInfo parent, final RegionInfo hriA, final RegionInfo hriB) throws IOException { checkMetaLoaded(parent); if (state != TransitionCode.READY_TO_SPLIT) { throw new UnexpectedStateException("unsupported split regionState=" + state + " for parent region " + parent + " maybe an old RS (< 2.0) had the operation in progress"); } // sanity check on the request if (!Bytes.equals(hriA.getEndKey(), hriB.getStartKey())) { throw new UnsupportedOperationException( "unsupported split request with bad keys: parent=" + parent + " hriA=" + hriA + " hriB=" + hriB); } // Submit the Split procedure final byte[] splitKey = hriB.getStartKey(); if (LOG.isDebugEnabled()) { LOG.debug("Split request from " + serverName + ", parent=" + parent + " splitKey=" + Bytes.toStringBinary(splitKey)); } master.getMasterProcedureExecutor().submitProcedure(createSplitProcedure(parent, splitKey)); // If the RS is < 2.0 throw an exception to abort the operation, we are handling the split if (master.getServerManager().getVersionNumber(serverName) < 0x0200000) { throw new UnsupportedOperationException(String.format( "Split handled by the master: parent=%s hriA=%s hriB=%s", parent.getShortNameToLog(), hriA, hriB)); } }
/** * One time checks. */ private static void checkRegionsToMerge(MasterProcedureEnv env, final RegionInfo regionToMergeA, final RegionInfo regionToMergeB, final boolean forcible) throws MergeRegionException { if (!regionToMergeA.getTable().equals(regionToMergeB.getTable())) { throw new MergeRegionException("Can't merge regions from two different tables: " + regionToMergeA + ", " + regionToMergeB); } if (regionToMergeA.getReplicaId() != RegionInfo.DEFAULT_REPLICA_ID || regionToMergeB.getReplicaId() != RegionInfo.DEFAULT_REPLICA_ID) { throw new MergeRegionException("Can't merge non-default replicas"); } try { checkOnline(env, regionToMergeA); checkOnline(env, regionToMergeB); } catch (DoNotRetryRegionException dnrre) { throw new MergeRegionException(dnrre); } if (!RegionInfo.areAdjacent(regionToMergeA, regionToMergeB)) { String msg = "Unable to merge non-adjacent regions " + regionToMergeA.getShortNameToLog() + ", " + regionToMergeB.getShortNameToLog() + " where forcible = " + forcible; LOG.warn(msg); if (!forcible) { throw new MergeRegionException(msg); } } }
if (hasNoReferences(a) && hasNoReferences(b)) { String daughterA = daughters.getFirst() != null? daughters.getFirst().getShortNameToLog(): "null"; String daughterB = daughters.getSecond() != null? daughters.getSecond().getShortNameToLog(): "null"; LOG.debug("Deleting region " + parent.getShortNameToLog() + " because daughters -- " + daughterA + ", " + daughterB + " -- no longer hold references");
FileSystem fs = masterServices.getMasterFileSystem().getFileSystem(); if (HFileArchiver.exists(masterServices.getConfiguration(), fs, getRegion())) { if (LOG.isDebugEnabled()) LOG.debug("Archiving region=" + getRegion().getShortNameToLog()); HFileArchiver.archiveRegion(masterServices.getConfiguration(), fs, getRegion()); LOG.warn("Error trying to GC " + getRegion().getShortNameToLog() + "; retrying...", ioe);
LOG.debug("Deleting region " + regionA.getShortNameToLog() + " and " + regionB.getShortNameToLog() + " from fs because merged region no longer holds references"); ProcedureExecutor<MasterProcedureEnv> pe = this.services.getMasterProcedureExecutor();