Exemplo n.º 1
0
            public static FsImageProto.INodeSection.INodeDirectory.Builder BuildINodeDirectory
                (INodeDirectoryAttributes dir, FSImageFormatProtobuf.SaverContext state)
            {
                QuotaCounts quota = dir.GetQuotaCounts();

                FsImageProto.INodeSection.INodeDirectory.Builder b = FsImageProto.INodeSection.INodeDirectory
                                                                     .NewBuilder().SetModificationTime(dir.GetModificationTime()).SetNsQuota(quota.GetNameSpace
                                                                                                                                                 ()).SetDsQuota(quota.GetStorageSpace()).SetPermission(BuildPermissionStatus(dir,
                                                                                                                                                                                                                             state.GetStringMap()));
                if (quota.GetTypeSpaces().AnyGreaterOrEqual(0))
                {
                    b.SetTypeQuotas(BuildQuotaByStorageTypeEntries(quota));
                }
                AclFeature f = dir.GetAclFeature();

                if (f != null)
                {
                    b.SetAcl(BuildAclEntries(f, state.GetStringMap()));
                }
                XAttrFeature xAttrFeature = dir.GetXAttrFeature();

                if (xAttrFeature != null)
                {
                    b.SetXAttrs(BuildXAttrs(xAttrFeature, state.GetStringMap()));
                }
                return(b);
            }
Exemplo n.º 2
0
 /// <exception cref="System.IO.IOException"/>
 private void Save(OutputStream @out, INodeDirectory n)
 {
     FsImageProto.INodeSection.INodeDirectory.Builder b = BuildINodeDirectory(n, parent
                                                                              .GetSaverContext());
     FsImageProto.INodeSection.INode r = ((FsImageProto.INodeSection.INode)BuildINodeCommon
                                              (n).SetType(FsImageProto.INodeSection.INode.Type.Directory).SetDirectory(b).Build
                                              ());
     r.WriteDelimitedTo(@out);
 }
Exemplo n.º 3
0
            /// <summary>save all the snapshottable directories and snapshots to fsimage</summary>
            /// <exception cref="System.IO.IOException"/>
            public void SerializeSnapshotSection(OutputStream @out)
            {
                SnapshotManager sm = fsn.GetSnapshotManager();

                FsImageProto.SnapshotSection.Builder b = FsImageProto.SnapshotSection.NewBuilder(
                    ).SetSnapshotCounter(sm.GetSnapshotCounter()).SetNumSnapshots(sm.GetNumSnapshots
                                                                                      ());
                INodeDirectory[] snapshottables = sm.GetSnapshottableDirs();
                foreach (INodeDirectory sdir in snapshottables)
                {
                    b.AddSnapshottableDir(sdir.GetId());
                }
                ((FsImageProto.SnapshotSection)b.Build()).WriteDelimitedTo(@out);
                int i = 0;

                foreach (INodeDirectory sdir_1 in snapshottables)
                {
                    foreach (Org.Apache.Hadoop.Hdfs.Server.Namenode.Snapshot.Snapshot s in sdir_1.GetDirectorySnapshottableFeature
                                 ().GetSnapshotList())
                    {
                        Snapshot.Root sroot = s.GetRoot();
                        FsImageProto.SnapshotSection.Snapshot.Builder sb = FsImageProto.SnapshotSection.Snapshot
                                                                           .NewBuilder().SetSnapshotId(s.GetId());
                        FsImageProto.INodeSection.INodeDirectory.Builder db = FSImageFormatPBINode.Saver.BuildINodeDirectory
                                                                                  (sroot, parent.GetSaverContext());
                        FsImageProto.INodeSection.INode r = ((FsImageProto.INodeSection.INode)FsImageProto.INodeSection.INode
                                                             .NewBuilder().SetId(sroot.GetId()).SetType(FsImageProto.INodeSection.INode.Type.
                                                                                                        Directory).SetName(ByteString.CopyFrom(sroot.GetLocalNameBytes())).SetDirectory(
                                                                 db).Build());
                        ((FsImageProto.SnapshotSection.Snapshot)sb.SetRoot(r).Build()).WriteDelimitedTo(@out
                                                                                                        );
                        i++;
                        if (i % FSImageFormatProtobuf.Saver.CheckCancelInterval == 0)
                        {
                            context.CheckCancelled();
                        }
                    }
                }
                Preconditions.CheckState(i == sm.GetNumSnapshots());
                parent.CommitSection(headers, FSImageFormatProtobuf.SectionName.Snapshot);
            }