private GCRegionProcedure[] createGCRegionProcedures(final MasterProcedureEnv env) { GCRegionProcedure [] procs = new GCRegionProcedure[2]; int index = 0; for (RegionInfo hri: new RegionInfo [] {this.father, this.mother}) { GCRegionProcedure proc = new GCRegionProcedure(env, hri); proc.setOwner(env.getRequestUser().getShortName()); procs[index++] = proc; } return procs; }
case GC_REGION_PREPARE: setNextState(GCRegionState.GC_REGION_ARCHIVE); break; case GC_REGION_ARCHIVE: 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()); setNextState(GCRegionState.GC_REGION_PURGE_METADATA); break; case GC_REGION_PURGE_METADATA: if (am != null) { if (am.getRegionStates() != null) { am.getRegionStates().deleteRegion(getRegion()); MetaTableAccessor.deleteRegion(masterServices.getConnection(), getRegion()); masterServices.getServerManager().removeRegion(getRegion()); FavoredNodesManager fnm = masterServices.getFavoredNodesManager(); if (fnm != null) { fnm.deleteFavoredNodesForRegions(Lists.newArrayList(getRegion())); LOG.warn("Error trying to GC " + getRegion().getShortNameToLog() + "; retrying...", ioe);
@Override protected void deserializeStateData(ProcedureStateSerializer serializer) throws IOException { super.deserializeStateData(serializer); final MasterProcedureProtos.GCRegionStateData msg = serializer.deserialize(MasterProcedureProtos.GCRegionStateData.class); setRegion(ProtobufUtil.toRegionInfo(msg.getRegionInfo())); } }
@Override protected void serializeStateData(ProcedureStateSerializer serializer) throws IOException { super.serializeStateData(serializer); // Double serialization of regionname. Superclass is also serializing. Fix. final MasterProcedureProtos.GCRegionStateData.Builder msg = MasterProcedureProtos.GCRegionStateData.newBuilder() .setRegionInfo(ProtobufUtil.toRegionInfo(getRegion())); serializer.serialize(msg.build()); }
" -- no longer hold references"); ProcedureExecutor<MasterProcedureEnv> pe = this.services.getMasterProcedureExecutor(); pe.submitProcedure(new GCRegionProcedure(pe.getEnvironment(), parent));