public sealed override ContentSummaryComputationContext ComputeContentSummary(ContentSummaryComputationContext summary) { //only count storagespace for WithName QuotaCounts q = new QuotaCounts.Builder().Build(); ComputeQuotaUsage(summary.GetBlockStoragePolicySuite(), GetStoragePolicyID(), q, false, lastSnapshotId); summary.GetCounts().AddContent(Content.Diskspace, q.GetStorageSpace()); summary.GetCounts().AddTypeSpaces(q.GetTypeSpaces()); return(summary); }
internal ContentSummaryComputationContext ComputeContentSummary(INodeDirectory dir , ContentSummaryComputationContext summary) { long original = summary.GetCounts().GetStoragespace(); long oldYieldCount = summary.GetYieldCount(); dir.ComputeDirectoryContentSummary(summary, Org.Apache.Hadoop.Hdfs.Server.Namenode.Snapshot.Snapshot .CurrentStateId); // Check only when the content has not changed in the middle. if (oldYieldCount == summary.GetYieldCount()) { CheckStoragespace(dir, summary.GetCounts().GetStoragespace() - original); } return(summary); }
public sealed override ContentSummaryComputationContext ComputeContentSummary(ContentSummaryComputationContext summary) { ContentCounts counts = summary.GetCounts(); FileWithSnapshotFeature sf = GetFileWithSnapshotFeature(); long fileLen = 0; if (sf == null) { fileLen = ComputeFileSize(); counts.AddContent(Content.File, 1); } else { FileDiffList diffs = sf.GetDiffs(); int n = diffs.AsList().Count; counts.AddContent(Content.File, n); if (n > 0 && sf.IsCurrentFileDeleted()) { fileLen = diffs.GetLast().GetFileSize(); } else { fileLen = ComputeFileSize(); } } counts.AddContent(Content.Length, fileLen); counts.AddContent(Content.Diskspace, StoragespaceConsumed()); if (GetStoragePolicyID() != BlockStoragePolicySuite.IdUnspecified) { BlockStoragePolicy bsp = summary.GetBlockStoragePolicySuite().GetPolicy(GetStoragePolicyID ()); IList <StorageType> storageTypes = bsp.ChooseStorageTypes(GetFileReplication()); foreach (StorageType t in storageTypes) { if (!t.SupportTypeQuota()) { continue; } counts.AddTypeSpace(t, fileLen); } } return(summary); }
protected internal virtual ContentSummaryComputationContext ComputeDirectoryContentSummary (ContentSummaryComputationContext summary, int snapshotId) { ReadOnlyList <INode> childrenList = GetChildrenList(snapshotId); // Explicit traversing is done to enable repositioning after relinquishing // and reacquiring locks. for (int i = 0; i < childrenList.Size(); i++) { INode child = childrenList.Get(i); byte[] childName = child.GetLocalNameBytes(); long lastYieldCount = summary.GetYieldCount(); child.ComputeContentSummary(summary); // Check whether the computation was paused in the subtree. // The counts may be off, but traversing the rest of children // should be made safe. if (lastYieldCount == summary.GetYieldCount()) { continue; } // The locks were released and reacquired. Check parent first. if (GetParent() == null) { // Stop further counting and return whatever we have so far. break; } // Obtain the children list again since it may have been modified. childrenList = GetChildrenList(snapshotId); // Reposition in case the children list is changed. Decrement by 1 // since it will be incremented when loops. i = NextChild(childrenList, childName) - 1; } // Increment the directory count for this directory. summary.GetCounts().AddContent(Content.Directory, 1); // Relinquish and reacquire locks if necessary. summary.Yield(); return(summary); }
public override ContentSummaryComputationContext ComputeContentSummary(ContentSummaryComputationContext summary) { summary.GetCounts().AddContent(Content.Symlink, 1); return(summary); }
public override ContentSummaryComputationContext ComputeContentSummary(ContentSummaryComputationContext summary) { DirectoryWithSnapshotFeature sf = GetDirectoryWithSnapshotFeature(); if (sf != null) { sf.ComputeContentSummary4Snapshot(summary.GetBlockStoragePolicySuite(), summary.GetCounts ()); } DirectoryWithQuotaFeature q = GetDirectoryWithQuotaFeature(); if (q != null) { return(q.ComputeContentSummary(this, summary)); } else { return(ComputeDirectoryContentSummary(summary, Org.Apache.Hadoop.Hdfs.Server.Namenode.Snapshot.Snapshot .CurrentStateId)); } }