org.apache.hadoop.fs.swift.exceptions.SwiftOperationFailedException Java Examples

The following examples show how to use org.apache.hadoop.fs.swift.exceptions.SwiftOperationFailedException. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: SwiftNativeFileSystemStore.java    From hadoop with Apache License 2.0 6 votes vote down vote up
/**
 * extracts URIs from json
 * @param json json to parse
 * @param path path (used in exceptions)
 * @return URIs
 * @throws SwiftOperationFailedException on any problem parsing the JSON
 */
public static List<URI> extractUris(String json, Path path) throws
                                                 SwiftOperationFailedException {
  final Matcher matcher = URI_PATTERN.matcher(json);
  final List<URI> result = new ArrayList<URI>();
  while (matcher.find()) {
    final String s = matcher.group();
    final String uri = s.substring(1, s.length() - 1);
    try {
      URI createdUri = URI.create(uri);
      result.add(createdUri);
    } catch (IllegalArgumentException e) {
      //failure to create the URI, which means this is bad JSON. Convert
      //to an exception with useful text
      throw new SwiftOperationFailedException(
        String.format(
          "could not convert \"%s\" into a URI." +
          " source: %s " +
          " first JSON: %s",
          uri, path, json.substring(0, 256)));
    }
  }
  return result;
}
 
Example #2
Source File: TestSwiftFileSystemRename.java    From hadoop with Apache License 2.0 6 votes vote down vote up
@Test(timeout = SWIFT_TEST_TIMEOUT)
public void testMoveDirUnderParent() throws Throwable {
  if (!renameSupported()) {
    return;
  }
  Path testdir = path("test/dir");
  fs.mkdirs(testdir);
  Path parent = testdir.getParent();
  //the outcome here is ambiguous, so is not checked
  try {
    fs.rename(testdir, parent);
  } catch (SwiftOperationFailedException e) {
    // allowed
  }
  assertExists("Source directory has been deleted ", testdir);
}
 
Example #3
Source File: SwiftNativeFileSystemStore.java    From big-c with Apache License 2.0 6 votes vote down vote up
/**
 * extracts URIs from json
 * @param json json to parse
 * @param path path (used in exceptions)
 * @return URIs
 * @throws SwiftOperationFailedException on any problem parsing the JSON
 */
public static List<URI> extractUris(String json, Path path) throws
                                                 SwiftOperationFailedException {
  final Matcher matcher = URI_PATTERN.matcher(json);
  final List<URI> result = new ArrayList<URI>();
  while (matcher.find()) {
    final String s = matcher.group();
    final String uri = s.substring(1, s.length() - 1);
    try {
      URI createdUri = URI.create(uri);
      result.add(createdUri);
    } catch (IllegalArgumentException e) {
      //failure to create the URI, which means this is bad JSON. Convert
      //to an exception with useful text
      throw new SwiftOperationFailedException(
        String.format(
          "could not convert \"%s\" into a URI." +
          " source: %s " +
          " first JSON: %s",
          uri, path, json.substring(0, 256)));
    }
  }
  return result;
}
 
Example #4
Source File: TestSwiftFileSystemRename.java    From big-c with Apache License 2.0 6 votes vote down vote up
@Test(timeout = SWIFT_TEST_TIMEOUT)
public void testMoveDirUnderParent() throws Throwable {
  if (!renameSupported()) {
    return;
  }
  Path testdir = path("test/dir");
  fs.mkdirs(testdir);
  Path parent = testdir.getParent();
  //the outcome here is ambiguous, so is not checked
  try {
    fs.rename(testdir, parent);
  } catch (SwiftOperationFailedException e) {
    // allowed
  }
  assertExists("Source directory has been deleted ", testdir);
}
 
Example #5
Source File: SwiftNativeFileSystemStore.java    From sahara-extra with Apache License 2.0 6 votes vote down vote up
/**
 * extracts URIs from json
 * @param json json to parse
 * @param path path (used in exceptions)
 * @return URIs
 * @throws SwiftOperationFailedException on any problem parsing the JSON
 */
public static List<URI> extractUris(String json, Path path) throws
                                                 SwiftOperationFailedException {
  final Matcher matcher = URI_PATTERN.matcher(json);
  final List<URI> result = new ArrayList<URI>();
  while (matcher.find()) {
    final String s = matcher.group();
    final String uri = s.substring(1, s.length() - 1);
    try {
      URI createdUri = URI.create(uri);
      result.add(createdUri);
    } catch (IllegalArgumentException e) {
      //failure to create the URI, which means this is bad JSON. Convert
      //to an exception with useful text
      throw new SwiftOperationFailedException(
        String.format(
          "could not convert \"%s\" into a URI." +
          " source: %s " +
          " first JSON: %s",
          uri, path, json.substring(0, 256)));
    }
  }
  return result;
}
 
Example #6
Source File: SwiftFileSystemBaseTest.java    From hadoop with Apache License 2.0 5 votes vote down vote up
/**
 * Rename to success
 *
 * @param src source
 * @param dst dest
 * @param srcExists add assert that the source exists afterwards
 * @param dstExists add assert the dest exists afterwards
 * @throws SwiftOperationFailedException operation failure
 * @throws IOException IO problems
 */
protected void renameToSuccess(Path src, Path dst,
                               boolean srcExists, boolean dstExists)
    throws SwiftOperationFailedException, IOException {
  getStore().rename(src, dst);
  String outcome = getRenameOutcome(src, dst);
  assertEquals("Source " + src + "exists: " + outcome,
          srcExists, fs.exists(src));
  assertEquals("Destination " + dstExists + " exists" + outcome,
          dstExists, fs.exists(dst));
}
 
Example #7
Source File: SwiftFileSystemBaseTest.java    From big-c with Apache License 2.0 5 votes vote down vote up
/**
 * Rename to success
 *
 * @param src source
 * @param dst dest
 * @param srcExists add assert that the source exists afterwards
 * @param dstExists add assert the dest exists afterwards
 * @throws SwiftOperationFailedException operation failure
 * @throws IOException IO problems
 */
protected void renameToSuccess(Path src, Path dst,
                               boolean srcExists, boolean dstExists)
    throws SwiftOperationFailedException, IOException {
  getStore().rename(src, dst);
  String outcome = getRenameOutcome(src, dst);
  assertEquals("Source " + src + "exists: " + outcome,
          srcExists, fs.exists(src));
  assertEquals("Destination " + dstExists + " exists" + outcome,
          dstExists, fs.exists(dst));
}
 
Example #8
Source File: SwiftFileSystemBaseTest.java    From sahara-extra with Apache License 2.0 5 votes vote down vote up
/**
 * Rename to success
 *
 * @param src source
 * @param dst dest
 * @param srcExists add assert that the source exists afterwards
 * @param dstExists add assert the dest exists afterwards
 * @throws SwiftOperationFailedException operation failure
 * @throws IOException IO problems
 */
protected void renameToSuccess(Path src, Path dst,
                               boolean srcExists, boolean dstExists)
    throws SwiftOperationFailedException, IOException {
  getStore().rename(src, dst);
  String outcome = getRenameOutcome(src, dst);
  assertEquals("Source " + src + "exists: " + outcome,
          srcExists, fs.exists(src));
  assertEquals("Destination " + dstExists + " exists" + outcome,
          dstExists, fs.exists(dst));
}
 
Example #9
Source File: SwiftNativeFileSystem.java    From hadoop with Apache License 2.0 4 votes vote down vote up
/**
   * @param permission Currently ignored.
   */
  @Override
  public FSDataOutputStream create(Path file, FsPermission permission,
                                   boolean overwrite, int bufferSize,
                                   short replication, long blockSize,
                                   Progressable progress)
          throws IOException {
    LOG.debug("SwiftFileSystem.create");

    FileStatus fileStatus = null;
    Path absolutePath = makeAbsolute(file);
    try {
      fileStatus = getFileStatus(absolutePath);
    } catch (FileNotFoundException e) {
      //the file isn't there.
    }

    if (fileStatus != null) {
      //the path exists -action depends on whether or not it is a directory,
      //and what the overwrite policy is.

      //What is clear at this point is that if the entry exists, there's
      //no need to bother creating any parent entries
      if (fileStatus.isDirectory()) {
        //here someone is trying to create a file over a directory

/*    we can't throw an exception here as there is no easy way to distinguish
     a file from the dir

        throw new SwiftPathExistsException("Cannot create a file over a directory:"
                                           + file);
 */
        if (LOG.isDebugEnabled()) {
          LOG.debug("Overwriting either an empty file or a directory");
        }
      }
      if (overwrite) {
        //overwrite set -> delete the object.
        store.delete(absolutePath, true);
      } else {
        throw new FileAlreadyExistsException("Path exists: " + file);
      }
    } else {
      // destination does not exist -trigger creation of the parent
      Path parent = file.getParent();
      if (parent != null) {
        if (!mkdirs(parent)) {
          throw new SwiftOperationFailedException(
            "Mkdirs failed to create " + parent);
        }
      }
    }

    SwiftNativeOutputStream out = createSwiftOutputStream(file);
    return new FSDataOutputStream(out, statistics);
  }
 
Example #10
Source File: SwiftNativeFileSystem.java    From big-c with Apache License 2.0 4 votes vote down vote up
/**
   * @param permission Currently ignored.
   */
  @Override
  public FSDataOutputStream create(Path file, FsPermission permission,
                                   boolean overwrite, int bufferSize,
                                   short replication, long blockSize,
                                   Progressable progress)
          throws IOException {
    LOG.debug("SwiftFileSystem.create");

    FileStatus fileStatus = null;
    Path absolutePath = makeAbsolute(file);
    try {
      fileStatus = getFileStatus(absolutePath);
    } catch (FileNotFoundException e) {
      //the file isn't there.
    }

    if (fileStatus != null) {
      //the path exists -action depends on whether or not it is a directory,
      //and what the overwrite policy is.

      //What is clear at this point is that if the entry exists, there's
      //no need to bother creating any parent entries
      if (fileStatus.isDirectory()) {
        //here someone is trying to create a file over a directory

/*    we can't throw an exception here as there is no easy way to distinguish
     a file from the dir

        throw new SwiftPathExistsException("Cannot create a file over a directory:"
                                           + file);
 */
        if (LOG.isDebugEnabled()) {
          LOG.debug("Overwriting either an empty file or a directory");
        }
      }
      if (overwrite) {
        //overwrite set -> delete the object.
        store.delete(absolutePath, true);
      } else {
        throw new FileAlreadyExistsException("Path exists: " + file);
      }
    } else {
      // destination does not exist -trigger creation of the parent
      Path parent = file.getParent();
      if (parent != null) {
        if (!mkdirs(parent)) {
          throw new SwiftOperationFailedException(
            "Mkdirs failed to create " + parent);
        }
      }
    }

    SwiftNativeOutputStream out = createSwiftOutputStream(file);
    return new FSDataOutputStream(out, statistics);
  }
 
Example #11
Source File: SwiftNativeFileSystem.java    From sahara-extra with Apache License 2.0 4 votes vote down vote up
/**
   * @param permission Currently ignored.
   */
  @Override
  public FSDataOutputStream create(Path file, FsPermission permission,
                                   boolean overwrite, int bufferSize,
                                   short replication, long blockSize,
                                   Progressable progress)
          throws IOException {
    LOG.debug("SwiftFileSystem.create");

    FileStatus fileStatus = null;
    Path absolutePath = makeAbsolute(file);
    try {
      fileStatus = getFileStatus(absolutePath);
    } catch (FileNotFoundException e) {
      //the file isn't there.
    }

    if (fileStatus != null) {
      //the path exists -action depends on whether or not it is a directory,
      //and what the overwrite policy is.

      //What is clear at this point is that if the entry exists, there's
      //no need to bother creating any parent entries
      if (fileStatus.isDir()) {
        //here someone is trying to create a file over a directory

/*    we can't throw an exception here as there is no easy way to distinguish
     a file from the dir

        throw new SwiftPathExistsException("Cannot create a file over a directory:"
                                           + file);
 */
        if (LOG.isDebugEnabled()) {
          LOG.debug("Overwriting either an empty file or a directory");
        }
      }
      if (overwrite) {
        //overwrite set -> delete the object.
        store.delete(absolutePath, true);
      } else {
        throw new SwiftPathExistsException("Path exists: " + file);
      }
    } else {
      // destination does not exist -trigger creation of the parent
      Path parent = file.getParent();
      if (parent != null) {
        if (!mkdirs(parent)) {
          throw new SwiftOperationFailedException(
            "Mkdirs failed to create " + parent);
        }
      }
    }

    SwiftNativeOutputStream out = createSwiftOutputStream(file);
    return new FSDataOutputStream(out, statistics);
  }