Skip to content

Commit

Permalink
FS, FS_Posix: remove deprecated #createNewFile(File) method
Browse files Browse the repository at this point in the history
Change-Id: Id34a0be998eee360e69f74b469c4990afa153c1b
  • Loading branch information
msohn committed Sep 3, 2024
1 parent 8baef22 commit 0b531cd
Show file tree
Hide file tree
Showing 2 changed files with 0 additions and 86 deletions.
19 changes: 0 additions & 19 deletions org.eclipse.jgit/src/org/eclipse/jgit/util/FS.java
Original file line number Diff line number Diff line change
Expand Up @@ -1762,25 +1762,6 @@ public void createSymLink(File path, String target) throws IOException {
FileUtils.createSymLink(path, target);
}

/**
* Create a new file. See {@link java.io.File#createNewFile()}. Subclasses
* of this class may take care to provide a safe implementation for this
* even if {@link #supportsAtomicCreateNewFile()} is <code>false</code>
*
* @param path
* the file to be created
* @return <code>true</code> if the file was created, <code>false</code> if
* the file already existed
* @throws java.io.IOException
* if an IO error occurred
* @deprecated use {@link #createNewFileAtomic(File)} instead
* @since 4.5
*/
@Deprecated
public boolean createNewFile(File path) throws IOException {
return path.createNewFile();
}

/**
* A token representing a file created by
* {@link #createNewFileAtomic(File)}. The token must be retained until the
Expand Down
67 changes: 0 additions & 67 deletions org.eclipse.jgit/src/org/eclipse/jgit/util/FS_POSIX.java
Original file line number Diff line number Diff line change
Expand Up @@ -341,73 +341,6 @@ public boolean supportsAtomicCreateNewFile() {
return supportsAtomicFileCreation == AtomicFileCreation.SUPPORTED;
}

@Override
@SuppressWarnings("boxing")
/**
* {@inheritDoc}
* <p>
* An implementation of the File#createNewFile() semantics which works also
* on NFS. If the config option
* {@code core.supportsAtomicCreateNewFile = true} (which is the default)
* then simply File#createNewFile() is called.
*
* But if {@code core.supportsAtomicCreateNewFile = false} then after
* successful creation of the lock file a hard link to that lock file is
* created and the attribute nlink of the lock file is checked to be 2. If
* multiple clients manage to create the same lock file nlink would be
* greater than 2 showing the error.
*
* @see "https://www.time-travellers.org/shane/papers/NFS_considered_harmful.html"
*
* @deprecated use {@link FS_POSIX#createNewFileAtomic(File)} instead
* @since 4.5
*/
@Deprecated
public boolean createNewFile(File lock) throws IOException {
if (!lock.createNewFile()) {
return false;
}
if (supportsAtomicCreateNewFile()) {
return true;
}
Path lockPath = lock.toPath();
Path link = null;
FileStore store = null;
try {
store = Files.getFileStore(lockPath);
} catch (SecurityException e) {
return true;
}
try {
Boolean canLink = CAN_HARD_LINK.computeIfAbsent(store,
s -> Boolean.TRUE);
if (Boolean.FALSE.equals(canLink)) {
return true;
}
link = Files.createLink(
Paths.get(lock.getAbsolutePath() + ".lnk"), //$NON-NLS-1$
lockPath);
Integer nlink = (Integer) Files.getAttribute(lockPath,
"unix:nlink"); //$NON-NLS-1$
if (nlink > 2) {
LOG.warn(MessageFormat.format(
JGitText.get().failedAtomicFileCreation, lockPath,
nlink));
return false;
} else if (nlink < 2) {
CAN_HARD_LINK.put(store, Boolean.FALSE);
}
return true;
} catch (UnsupportedOperationException | IllegalArgumentException e) {
CAN_HARD_LINK.put(store, Boolean.FALSE);
return true;
} finally {
if (link != null) {
Files.delete(link);
}
}
}

/**
* {@inheritDoc}
* <p>
Expand Down

0 comments on commit 0b531cd

Please sign in to comment.