类org.apache.hadoop.fs.XAttrSetFlag源码实例Demo

下面列出了怎么用org.apache.hadoop.fs.XAttrSetFlag的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: hadoop   文件: DFSClient.java
public void setXAttr(String src, String name, byte[] value, 
    EnumSet<XAttrSetFlag> flag) throws IOException {
  checkOpen();
  TraceScope scope = getPathTraceScope("setXAttr", src);
  try {
    namenode.setXAttr(src, XAttrHelper.buildXAttr(name, value), flag);
  } catch (RemoteException re) {
    throw re.unwrapRemoteException(AccessControlException.class,
                                   FileNotFoundException.class,
                                   NSQuotaExceededException.class,
                                   SafeModeException.class,
                                   SnapshotAccessControlException.class,
                                   UnresolvedPathException.class);
  } finally {
    scope.close();
  }
}
 
源代码2 项目: hadoop   文件: FSDirectory.java
/**
 * Set the FileEncryptionInfo for an INode.
 */
void setFileEncryptionInfo(String src, FileEncryptionInfo info)
    throws IOException {
  // Make the PB for the xattr
  final HdfsProtos.PerFileEncryptionInfoProto proto =
      PBHelper.convertPerFileEncInfo(info);
  final byte[] protoBytes = proto.toByteArray();
  final XAttr fileEncryptionAttr =
      XAttrHelper.buildXAttr(CRYPTO_XATTR_FILE_ENCRYPTION_INFO, protoBytes);
  final List<XAttr> xAttrs = Lists.newArrayListWithCapacity(1);
  xAttrs.add(fileEncryptionAttr);

  writeLock();
  try {
    FSDirXAttrOp.unprotectedSetXAttrs(this, src, xAttrs,
                                      EnumSet.of(XAttrSetFlag.CREATE));
  } finally {
    writeUnlock();
  }
}
 
源代码3 项目: hadoop   文件: NameNodeRpcServer.java
@Override // ClientProtocol
public void setXAttr(String src, XAttr xAttr, EnumSet<XAttrSetFlag> flag)
    throws IOException {
  checkNNStartup();
  CacheEntry cacheEntry = RetryCache.waitForCompletion(retryCache);
  if (cacheEntry != null && cacheEntry.isSuccess()) {
    return; // Return previous response
  }
  boolean success = false;
  try {
    namesystem.setXAttr(src, xAttr, flag, cacheEntry != null);
    success = true;
  } finally {
    RetryCache.setState(cacheEntry, success);
  }
}
 
源代码4 项目: hadoop   文件: FSDirXAttrOp.java
/**
 * Set xattr for a file or directory.
 *
 * @param src
 *          - path on which it sets the xattr
 * @param xAttr
 *          - xAttr details to set
 * @param flag
 *          - xAttrs flags
 * @throws IOException
 */
static HdfsFileStatus setXAttr(
    FSDirectory fsd, String src, XAttr xAttr, EnumSet<XAttrSetFlag> flag,
    boolean logRetryCache)
    throws IOException {
  checkXAttrsConfigFlag(fsd);
  checkXAttrSize(fsd, xAttr);
  FSPermissionChecker pc = fsd.getPermissionChecker();
  XAttrPermissionFilter.checkPermissionForApi(
      pc, xAttr, FSDirectory.isReservedRawName(src));
  byte[][] pathComponents = FSDirectory.getPathComponentsForReservedPath(src);
  src = fsd.resolvePath(pc, src, pathComponents);
  List<XAttr> xAttrs = Lists.newArrayListWithCapacity(1);
  xAttrs.add(xAttr);
  INodesInPath iip;
  fsd.writeLock();
  try {
    iip = fsd.getINodesInPath4Write(src);
    checkXAttrChangeAccess(fsd, iip, xAttr, pc);
    unprotectedSetXAttrs(fsd, src, xAttrs, flag);
  } finally {
    fsd.writeUnlock();
  }
  fsd.getEditLog().logSetXAttrs(src, xAttrs, logRetryCache);
  return fsd.getAuditFileInfo(iip);
}
 
源代码5 项目: hadoop   文件: TestXAttrsWithHA.java
/**
 * Test that xattrs are properly tracked by the standby
 */
@Test(timeout = 60000)
public void testXAttrsTrackedOnStandby() throws Exception {
  fs.create(path).close();
  fs.setXAttr(path, name1, value1, EnumSet.of(XAttrSetFlag.CREATE));
  fs.setXAttr(path, name2, value2, EnumSet.of(XAttrSetFlag.CREATE));

  HATestUtil.waitForStandbyToCatchUp(nn0, nn1);
  List<XAttr> xAttrs = nn1.getRpcServer().getXAttrs("/file", null);
  assertEquals(2, xAttrs.size());
  cluster.shutdownNameNode(0);
  
  // Failover the current standby to active.
  cluster.shutdownNameNode(0);
  cluster.transitionToActive(1);
  
  Map<String, byte[]> xattrs = fs.getXAttrs(path);
  Assert.assertEquals(xattrs.size(), 2);
  Assert.assertArrayEquals(value1, xattrs.get(name1));
  Assert.assertArrayEquals(value2, xattrs.get(name2));
  
  fs.delete(path, true);
}
 
源代码6 项目: big-c   文件: DFSClient.java
public void setXAttr(String src, String name, byte[] value, 
    EnumSet<XAttrSetFlag> flag) throws IOException {
  checkOpen();
  TraceScope scope = getPathTraceScope("setXAttr", src);
  try {
    namenode.setXAttr(src, XAttrHelper.buildXAttr(name, value), flag);
  } catch (RemoteException re) {
    throw re.unwrapRemoteException(AccessControlException.class,
                                   FileNotFoundException.class,
                                   NSQuotaExceededException.class,
                                   SafeModeException.class,
                                   SnapshotAccessControlException.class,
                                   UnresolvedPathException.class);
  } finally {
    scope.close();
  }
}
 
源代码7 项目: big-c   文件: FSDirectory.java
/**
 * Set the FileEncryptionInfo for an INode.
 */
void setFileEncryptionInfo(String src, FileEncryptionInfo info)
    throws IOException {
  // Make the PB for the xattr
  final HdfsProtos.PerFileEncryptionInfoProto proto =
      PBHelper.convertPerFileEncInfo(info);
  final byte[] protoBytes = proto.toByteArray();
  final XAttr fileEncryptionAttr =
      XAttrHelper.buildXAttr(CRYPTO_XATTR_FILE_ENCRYPTION_INFO, protoBytes);
  final List<XAttr> xAttrs = Lists.newArrayListWithCapacity(1);
  xAttrs.add(fileEncryptionAttr);

  writeLock();
  try {
    FSDirXAttrOp.unprotectedSetXAttrs(this, src, xAttrs,
                                      EnumSet.of(XAttrSetFlag.CREATE));
  } finally {
    writeUnlock();
  }
}
 
源代码8 项目: big-c   文件: NameNodeRpcServer.java
@Override // ClientProtocol
public void setXAttr(String src, XAttr xAttr, EnumSet<XAttrSetFlag> flag)
    throws IOException {
  checkNNStartup();
  CacheEntry cacheEntry = RetryCache.waitForCompletion(retryCache);
  if (cacheEntry != null && cacheEntry.isSuccess()) {
    return; // Return previous response
  }
  boolean success = false;
  try {
    namesystem.setXAttr(src, xAttr, flag, cacheEntry != null);
    success = true;
  } finally {
    RetryCache.setState(cacheEntry, success);
  }
}
 
源代码9 项目: big-c   文件: FSDirXAttrOp.java
/**
 * Set xattr for a file or directory.
 *
 * @param src
 *          - path on which it sets the xattr
 * @param xAttr
 *          - xAttr details to set
 * @param flag
 *          - xAttrs flags
 * @throws IOException
 */
static HdfsFileStatus setXAttr(
    FSDirectory fsd, String src, XAttr xAttr, EnumSet<XAttrSetFlag> flag,
    boolean logRetryCache)
    throws IOException {
  checkXAttrsConfigFlag(fsd);
  checkXAttrSize(fsd, xAttr);
  FSPermissionChecker pc = fsd.getPermissionChecker();
  XAttrPermissionFilter.checkPermissionForApi(
      pc, xAttr, FSDirectory.isReservedRawName(src));
  byte[][] pathComponents = FSDirectory.getPathComponentsForReservedPath(src);
  src = fsd.resolvePath(pc, src, pathComponents);
  List<XAttr> xAttrs = Lists.newArrayListWithCapacity(1);
  xAttrs.add(xAttr);
  INodesInPath iip;
  fsd.writeLock();
  try {
    iip = fsd.getINodesInPath4Write(src);
    checkXAttrChangeAccess(fsd, iip, xAttr, pc);
    unprotectedSetXAttrs(fsd, src, xAttrs, flag);
  } finally {
    fsd.writeUnlock();
  }
  fsd.getEditLog().logSetXAttrs(src, xAttrs, logRetryCache);
  return fsd.getAuditFileInfo(iip);
}
 
源代码10 项目: big-c   文件: TestXAttrsWithHA.java
/**
 * Test that xattrs are properly tracked by the standby
 */
@Test(timeout = 60000)
public void testXAttrsTrackedOnStandby() throws Exception {
  fs.create(path).close();
  fs.setXAttr(path, name1, value1, EnumSet.of(XAttrSetFlag.CREATE));
  fs.setXAttr(path, name2, value2, EnumSet.of(XAttrSetFlag.CREATE));

  HATestUtil.waitForStandbyToCatchUp(nn0, nn1);
  List<XAttr> xAttrs = nn1.getRpcServer().getXAttrs("/file", null);
  assertEquals(2, xAttrs.size());
  cluster.shutdownNameNode(0);
  
  // Failover the current standby to active.
  cluster.shutdownNameNode(0);
  cluster.transitionToActive(1);
  
  Map<String, byte[]> xattrs = fs.getXAttrs(path);
  Assert.assertEquals(xattrs.size(), 2);
  Assert.assertArrayEquals(value1, xattrs.get(name1));
  Assert.assertArrayEquals(value2, xattrs.get(name2));
  
  fs.delete(path, true);
}
 
@Test
public void setXAttr_create_fail() throws Exception {
  URI fileUri = GoogleCloudStorageFileSystemIntegrationTest.getTempFilePath();
  Path filePath = ghfsHelper.castAsHadoopPath(fileUri);
  ghfsHelper.writeFile(filePath, "obj-test-set-xattr-create-fail", 1, /* overwrite= */ false);

  IOException e =
      assertThrows(
          IOException.class,
          () ->
              ghfs.setXAttr(
                  filePath, "test-key", "val".getBytes(UTF_8), EnumSet.of(XAttrSetFlag.REPLACE)));

  assertThat(e).hasMessageThat().startsWith("CREATE flag must be set to create XAttr");

  // Cleanup.
  assertThat(ghfs.delete(filePath, true)).isTrue();
}
 
@Test
public void setXAttr_replace_fail() throws Exception {
  URI fileUri = GoogleCloudStorageFileSystemIntegrationTest.getTempFilePath();
  Path filePath = ghfsHelper.castAsHadoopPath(fileUri);
  ghfsHelper.writeFile(filePath, "obj-test-set-xattr-replace-fail", 1, /* overwrite= */ false);

  ghfs.setXAttr(filePath, "test-key", "value".getBytes(UTF_8));

  IOException e =
      assertThrows(
          IOException.class,
          () ->
              ghfs.setXAttr(
                  filePath, "test-key", "new".getBytes(UTF_8), EnumSet.of(XAttrSetFlag.CREATE)));
  assertThat(e).hasMessageThat().startsWith("REPLACE flag must be set to update XAttr");

  // Cleanup.
  assertThat(ghfs.delete(filePath, true)).isTrue();
}
 
源代码13 项目: hadoop   文件: FileSystemRMStateStore.java
private void setUnreadableBySuperuserXattrib(Path p)
        throws IOException {
  if (fs.getScheme().toLowerCase().contains("hdfs")
      && intermediateEncryptionEnabled
      && !fs.getXAttrs(p).containsKey(UNREADABLE_BY_SUPERUSER_XATTRIB)) {
    fs.setXAttr(p, UNREADABLE_BY_SUPERUSER_XATTRIB, null,
      EnumSet.of(XAttrSetFlag.CREATE));
  }
}
 
源代码14 项目: hadoop   文件: HttpFSFileSystem.java
@Override
public void setXAttr(Path f, String name, byte[] value,
    EnumSet<XAttrSetFlag> flag) throws IOException {
  Map<String, String> params = new HashMap<String, String>();
  params.put(OP_PARAM, Operation.SETXATTR.toString());
  params.put(XATTR_NAME_PARAM, name);
  if (value != null) {
    params.put(XATTR_VALUE_PARAM, 
        XAttrCodec.encodeValue(value, XAttrCodec.HEX));
  }
  params.put(XATTR_SET_FLAG_PARAM, EnumSetParam.toString(flag));
  HttpURLConnection conn = getConnection(Operation.SETXATTR.getMethod(),
      params, f, true);
  HttpExceptionUtils.validateResponse(conn, HttpURLConnection.HTTP_OK);
}
 
源代码15 项目: hadoop   文件: FSOperations.java
public FSSetXAttr(String path, String name, String encodedValue, 
    EnumSet<XAttrSetFlag> flag) throws IOException {
  this.path = new Path(path);
  this.name = name;
  this.value = XAttrCodec.decodeValue(encodedValue);
  this.flag = flag;
}
 
源代码16 项目: hadoop   文件: WebHdfsFileSystem.java
@Override
public void setXAttr(Path p, String name, byte[] value, 
    EnumSet<XAttrSetFlag> flag) throws IOException {
  statistics.incrementWriteOps(1);
  final HttpOpParam.Op op = PutOpParam.Op.SETXATTR;
  if (value != null) {
    new FsPathRunner(op, p, new XAttrNameParam(name), new XAttrValueParam(
        XAttrCodec.encodeValue(value, XAttrCodec.HEX)), 
        new XAttrSetFlagParam(flag)).run();
  } else {
    new FsPathRunner(op, p, new XAttrNameParam(name), 
        new XAttrSetFlagParam(flag)).run();
  }
}
 
源代码17 项目: hadoop   文件: FSDirAttrOp.java
private static void setDirStoragePolicy(
    FSDirectory fsd, INodeDirectory inode, byte policyId,
    int latestSnapshotId) throws IOException {
  List<XAttr> existingXAttrs = XAttrStorage.readINodeXAttrs(inode);
  XAttr xAttr = BlockStoragePolicySuite.buildXAttr(policyId);
  List<XAttr> newXAttrs = FSDirXAttrOp.setINodeXAttrs(fsd, existingXAttrs,
                                                      Arrays.asList(xAttr),
                                                      EnumSet.of(
                                                          XAttrSetFlag.CREATE,
                                                          XAttrSetFlag.REPLACE));
  XAttrStorage.updateINodeXAttrs(inode, newXAttrs, latestSnapshotId);
}
 
源代码18 项目: hadoop   文件: FSDirXAttrOp.java
static INode unprotectedSetXAttrs(
    FSDirectory fsd, final String src, final List<XAttr> xAttrs,
    final EnumSet<XAttrSetFlag> flag)
    throws IOException {
  assert fsd.hasWriteLock();
  INodesInPath iip = fsd.getINodesInPath4Write(FSDirectory.normalizePath(src),
      true);
  INode inode = FSDirectory.resolveLastINode(iip);
  int snapshotId = iip.getLatestSnapshotId();
  List<XAttr> existingXAttrs = XAttrStorage.readINodeXAttrs(inode);
  List<XAttr> newXAttrs = setINodeXAttrs(fsd, existingXAttrs, xAttrs, flag);
  final boolean isFile = inode.isFile();

  for (XAttr xattr : newXAttrs) {
    final String xaName = XAttrHelper.getPrefixName(xattr);

    /*
     * If we're adding the encryption zone xattr, then add src to the list
     * of encryption zones.
     */
    if (CRYPTO_XATTR_ENCRYPTION_ZONE.equals(xaName)) {
      final HdfsProtos.ZoneEncryptionInfoProto ezProto =
          HdfsProtos.ZoneEncryptionInfoProto.parseFrom(xattr.getValue());
      fsd.ezManager.addEncryptionZone(inode.getId(),
                                      PBHelper.convert(ezProto.getSuite()),
                                      PBHelper.convert(
                                          ezProto.getCryptoProtocolVersion()),
                                      ezProto.getKeyName());
    }

    if (!isFile && SECURITY_XATTR_UNREADABLE_BY_SUPERUSER.equals(xaName)) {
      throw new IOException("Can only set '" +
          SECURITY_XATTR_UNREADABLE_BY_SUPERUSER + "' on a file.");
    }
  }

  XAttrStorage.updateINodeXAttrs(inode, newXAttrs, snapshotId);
  return inode;
}
 
源代码19 项目: hadoop   文件: PBHelper.java
/**
 * The flag field in PB is a bitmask whose values are the same a the 
 * emum values of XAttrSetFlag
 */
public static int convert(EnumSet<XAttrSetFlag> flag) {
  int value = 0;
  if (flag.contains(XAttrSetFlag.CREATE)) {
    value |= XAttrSetFlagProto.XATTR_CREATE.getNumber();
  }
  if (flag.contains(XAttrSetFlag.REPLACE)) {
    value |= XAttrSetFlagProto.XATTR_REPLACE.getNumber();
  }
  return value;
}
 
源代码20 项目: hadoop   文件: PBHelper.java
public static EnumSet<XAttrSetFlag> convert(int flag) {
  EnumSet<XAttrSetFlag> result = 
      EnumSet.noneOf(XAttrSetFlag.class);
  if ((flag & XAttrSetFlagProto.XATTR_CREATE_VALUE) == 
      XAttrSetFlagProto.XATTR_CREATE_VALUE) {
    result.add(XAttrSetFlag.CREATE);
  }
  if ((flag & XAttrSetFlagProto.XATTR_REPLACE_VALUE) == 
      XAttrSetFlagProto.XATTR_REPLACE_VALUE) {
    result.add(XAttrSetFlag.REPLACE);
  }
  return result;
}
 
@Override
public void setXAttr(String src, XAttr xAttr, EnumSet<XAttrSetFlag> flag)
    throws IOException {
  SetXAttrRequestProto req = SetXAttrRequestProto.newBuilder()
      .setSrc(src)
      .setXAttr(PBHelper.convertXAttrProto(xAttr))
      .setFlag(PBHelper.convert(flag))
      .build();
  try {
    rpcProxy.setXAttr(null, req);
  } catch (ServiceException e) {
    throw ProtobufHelper.getRemoteException(e);
  }
}
 
源代码22 项目: hadoop   文件: TestParam.java
@Test
public void testXAttrSetFlagParam() {
  EnumSet<XAttrSetFlag> flag = EnumSet.of(
      XAttrSetFlag.CREATE, XAttrSetFlag.REPLACE);
  final XAttrSetFlagParam p = new XAttrSetFlagParam(flag);
  Assert.assertEquals(p.getFlag(), flag);
  final XAttrSetFlagParam p1 = new XAttrSetFlagParam(p.getValueString());
  Assert.assertEquals(p1.getFlag(), flag);
}
 
源代码23 项目: hadoop   文件: TestFSImageWithXAttr.java
private void testXAttr(boolean persistNamespace) throws IOException {
  Path path = new Path("/p");
  DistributedFileSystem fs = cluster.getFileSystem();
  fs.create(path).close();
  
  fs.setXAttr(path, name1, value1, EnumSet.of(XAttrSetFlag.CREATE));
  fs.setXAttr(path, name2, value2, EnumSet.of(XAttrSetFlag.CREATE));
  fs.setXAttr(path, name3, null, EnumSet.of(XAttrSetFlag.CREATE));
  
  restart(fs, persistNamespace);
  
  Map<String, byte[]> xattrs = fs.getXAttrs(path);
  Assert.assertEquals(xattrs.size(), 3);
  Assert.assertArrayEquals(value1, xattrs.get(name1));
  Assert.assertArrayEquals(value2, xattrs.get(name2));
  Assert.assertArrayEquals(value3, xattrs.get(name3));
  
  fs.setXAttr(path, name1, newValue1, EnumSet.of(XAttrSetFlag.REPLACE));
  
  restart(fs, persistNamespace);
  
  xattrs = fs.getXAttrs(path);
  Assert.assertEquals(xattrs.size(), 3);
  Assert.assertArrayEquals(newValue1, xattrs.get(name1));
  Assert.assertArrayEquals(value2, xattrs.get(name2));
  Assert.assertArrayEquals(value3, xattrs.get(name3));

  fs.removeXAttr(path, name1);
  fs.removeXAttr(path, name2);
  fs.removeXAttr(path, name3);

  restart(fs, persistNamespace);
  xattrs = fs.getXAttrs(path);
  Assert.assertEquals(xattrs.size(), 0);
}
 
源代码24 项目: hadoop   文件: TestRetryCacheWithHA.java
@Override
void prepare() throws Exception {
  Path p = new Path(src);
  if (!dfs.exists(p)) {
    DFSTestUtil.createFile(dfs, p, BlockSize, DataNodes, 0);
    client.setXAttr(src, "user.key", "value".getBytes(),
      EnumSet.of(XAttrSetFlag.CREATE));
  }
}
 
源代码25 项目: hadoop   文件: FSXAttrBaseTest.java
/**
 * Tests for removing xattr
 * 1. Remove xattr.
 * 2. Restart NN and save checkpoint scenarios.
 */
@Test(timeout = 120000)
public void testRemoveXAttr() throws Exception {
  FileSystem.mkdirs(fs, path, FsPermission.createImmutable((short)0750));
  fs.setXAttr(path, name1, value1, EnumSet.of(XAttrSetFlag.CREATE));
  fs.setXAttr(path, name2, value2, EnumSet.of(XAttrSetFlag.CREATE));
  fs.setXAttr(path, name3, null, EnumSet.of(XAttrSetFlag.CREATE));
  
  fs.removeXAttr(path, name1);
  fs.removeXAttr(path, name2);
  
  Map<String, byte[]> xattrs = fs.getXAttrs(path);
  Assert.assertEquals(xattrs.size(), 1);
  Assert.assertArrayEquals(new byte[0], xattrs.get(name3));
  
  restart(false);
  initFileSystem();
  xattrs = fs.getXAttrs(path);
  Assert.assertEquals(xattrs.size(), 1);
  Assert.assertArrayEquals(new byte[0], xattrs.get(name3));
  
  restart(true);
  initFileSystem();
  xattrs = fs.getXAttrs(path);
  Assert.assertEquals(xattrs.size(), 1);
  Assert.assertArrayEquals(new byte[0], xattrs.get(name3));
  
  fs.removeXAttr(path, name3);
}
 
源代码26 项目: hadoop   文件: FSXAttrBaseTest.java
@Test(timeout = 120000)
public void testRenameFileWithXAttr() throws Exception {
  FileSystem.mkdirs(fs, path, FsPermission.createImmutable((short)0750));
  fs.setXAttr(path, name1, value1, EnumSet.of(XAttrSetFlag.CREATE));
  fs.setXAttr(path, name2, value2, EnumSet.of(XAttrSetFlag.CREATE));
  Path renamePath = new Path(path.toString() + "-rename");
  fs.rename(path, renamePath);
  Map<String, byte[]> xattrs = fs.getXAttrs(renamePath);
  Assert.assertEquals(xattrs.size(), 2);
  Assert.assertArrayEquals(value1, xattrs.get(name1));
  Assert.assertArrayEquals(value2, xattrs.get(name2));
  fs.removeXAttr(renamePath, name1);
  fs.removeXAttr(renamePath, name2);
}
 
源代码27 项目: hadoop   文件: FSXAttrBaseTest.java
/**
 * Steps:
 * 1) Set xattrs on a file.
 * 2) Remove xattrs from that file.
 * 3) Save a checkpoint and restart NN.
 * 4) Set xattrs again on the same file.
 * 5) Remove xattrs from that file.
 * 6) Restart NN without saving a checkpoint.
 * 7) Set xattrs again on the same file.
 */
@Test(timeout = 120000)
public void testCleanupXAttrs() throws Exception {
  FileSystem.mkdirs(fs, path, FsPermission.createImmutable((short)0750));
  fs.setXAttr(path, name1, value1, EnumSet.of(XAttrSetFlag.CREATE));
  fs.setXAttr(path, name2, value2, EnumSet.of(XAttrSetFlag.CREATE));
  fs.removeXAttr(path, name1);
  fs.removeXAttr(path, name2);
  
  restart(true);
  initFileSystem();
  
  fs.setXAttr(path, name1, value1, EnumSet.of(XAttrSetFlag.CREATE));
  fs.setXAttr(path, name2, value2, EnumSet.of(XAttrSetFlag.CREATE));
  fs.removeXAttr(path, name1);
  fs.removeXAttr(path, name2);
  
  restart(false);
  initFileSystem();
  
  fs.setXAttr(path, name1, value1, EnumSet.of(XAttrSetFlag.CREATE));
  fs.setXAttr(path, name2, value2, EnumSet.of(XAttrSetFlag.CREATE));
  fs.removeXAttr(path, name1);
  fs.removeXAttr(path, name2);
  
  fs.setXAttr(path, name1, value1, EnumSet.of(XAttrSetFlag.CREATE));
  fs.setXAttr(path, name2, value2, EnumSet.of(XAttrSetFlag.CREATE));
  
  Map<String, byte[]> xattrs = fs.getXAttrs(path);
  Assert.assertEquals(xattrs.size(), 2);
  Assert.assertArrayEquals(value1, xattrs.get(name1));
  Assert.assertArrayEquals(value2, xattrs.get(name2));
}
 
源代码28 项目: hadoop   文件: TestXAttrWithSnapshot.java
/**
 * Tests modifying xattrs on a directory that has been snapshotted
 */
@Test (timeout = 120000)
public void testModifyReadsCurrentState() throws Exception {
  // Init
  FileSystem.mkdirs(hdfs, path, FsPermission.createImmutable((short) 0700));
  SnapshotTestHelper.createSnapshot(hdfs, path, snapshotName);
  hdfs.setXAttr(path, name1, value1);
  hdfs.setXAttr(path, name2, value2);

  // Verify that current path reflects xattrs, snapshot doesn't
  Map<String, byte[]> xattrs = hdfs.getXAttrs(path);
  assertEquals(xattrs.size(), 2);
  assertArrayEquals(value1, xattrs.get(name1));
  assertArrayEquals(value2, xattrs.get(name2));

  xattrs = hdfs.getXAttrs(snapshotPath);
  assertEquals(xattrs.size(), 0);

  // Modify each xattr and make sure it's reflected
  hdfs.setXAttr(path, name1, value2, EnumSet.of(XAttrSetFlag.REPLACE));
  xattrs = hdfs.getXAttrs(path);
  assertEquals(xattrs.size(), 2);
  assertArrayEquals(value2, xattrs.get(name1));
  assertArrayEquals(value2, xattrs.get(name2));

  hdfs.setXAttr(path, name2, value1, EnumSet.of(XAttrSetFlag.REPLACE));
  xattrs = hdfs.getXAttrs(path);
  assertEquals(xattrs.size(), 2);
  assertArrayEquals(value2, xattrs.get(name1));
  assertArrayEquals(value1, xattrs.get(name2));

  // Paranoia checks
  xattrs = hdfs.getXAttrs(snapshotPath);
  assertEquals(xattrs.size(), 0);

  hdfs.removeXAttr(path, name1);
  hdfs.removeXAttr(path, name2);
  xattrs = hdfs.getXAttrs(path);
  assertEquals(xattrs.size(), 0);
}
 
源代码29 项目: hadoop   文件: ViewFileSystem.java
@Override
public void setXAttr(Path path, String name, byte[] value,
    EnumSet<XAttrSetFlag> flag) throws IOException {
  InodeTree.ResolveResult<FileSystem> res =
      fsState.resolve(getUriPath(path), true);
  res.targetFileSystem.setXAttr(res.remainingPath, name, value, flag);
}
 
源代码30 项目: hadoop   文件: ViewFs.java
@Override
public void setXAttr(Path path, String name, byte[] value,
                     EnumSet<XAttrSetFlag> flag) throws IOException {
  InodeTree.ResolveResult<AbstractFileSystem> res =
      fsState.resolve(getUriPath(path), true);
  res.targetFileSystem.setXAttr(res.remainingPath, name, value, flag);
}
 
 类所在包
 类方法
 同包方法