DirectoryNotEmptyException when moving symlink with REPLACE_EXISTING set
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 45/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- java
- Ambito
- operating-systems
Direzione di ricerca
Inizia da CryptoFileSystemImpl.moveSymlink intorno alla riga 585 e riproduci la chiamata Files.move fornita con REPLACE_EXISTING, usando sia JIMFS sia un filesystem normale come descritto. Segui i percorsi ciphertextSource e ciphertextTarget attraverso lo stack di spostamento ed eliminazione; il lavoro è completato quando lo spostamento di un symlink sopra un altro riesce senza DirectoryNotEmptyException e la regressione è coperta da un test.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Moving a symlink (on top of another symlink) causes a DirectoryNotEmptyException:
var source = fs.getPath("/source");
var target = fs.getPath("/target");
Files.createSymbolicLink(source, fs.getPath("/linkedBySource.txt"));
Files.createSymbolicLink(target, fs.getPath("/linkedByTarget.txt"));
Assertions.assertDoesNotThrow(() -> Files.move(source, target, REPLACE_EXISTING));
Stacktrace:
java.nio.file.DirectoryNotEmptyException: /vault/d/FW/62AD46Y3CLSPBJCAZTO2EQD5TDALWH/y6Yo0PGakzpfU2ZozQWLcHrgiT8=.c9s
at com.google.common.jimfs.FileSystemView.checkEmpty(FileSystemView.java:493)
at com.google.common.jimfs.FileSystemView.checkDeletable(FileSystemView.java:477)
at com.google.common.jimfs.FileSystemView.delete(FileSystemView.java:449)
at com.google.common.jimfs.FileSystemView.copy(FileSystemView.java:539)
at com.google.common.jimfs.JimfsFileSystemProvider.copy(JimfsFileSystemProvider.java:268)
at com.google.common.jimfs.JimfsFileSystemProvider.move(JimfsFileSystemProvider.java:273)
at java.base/java.nio.file.Files.move(Files.java:1432)
at org.cryptomator.cryptofs/org.cryptomator.cryptofs.CryptoFileSystemImpl.moveSymlink(CryptoFileSystemImpl.java:585)
at org.cryptomator.cryptofs/org.cryptomator.cryptofs.CryptoFileSystemImpl.move(CryptoFileSystemImpl.java:573)
at org.cryptomator.cryptofs/org.cryptomator.cryptofs.MoveOperation.move(MoveOperation.java:37)
at org.cryptomator.cryptofs/org.cryptomator.cryptofs.CryptoFileSystemProvider.move(CryptoFileSystemProvider.java:255)
at java.base/java.nio.file.Files.move(Files.java:1432)
The same happens when using a regular filesystem instead of JIMFS.
org.cryptomator.cryptofs/org.cryptomator.cryptofs.CryptoFileSystemImpl.moveSymlink(CryptoFileSystemImpl.java:585):
CiphertextFilePath ciphertextSource = cryptoPathMapper.getCiphertextFilePath(cleartextSource);
CiphertextFilePath ciphertextTarget = cryptoPathMapper.getCiphertextFilePath(cleartextTarget);
try (OpenCryptoFiles.TwoPhaseMove twoPhaseMove = openCryptoFiles.prepareMove(ciphertextSource.getRawPath(), ciphertextTarget.getRawPath())) {
Files.move(ciphertextSource.getRawPath(), ciphertextTarget.getRawPath(), options); //585
if (ciphertextTarget.isShortened()) {
ciphertextTarget.persistLongFileName();
} else {
Files.deleteIfExists(ciphertextTarget.getInflatedNamePath()); // no longer needed if not shortened
}
twoPhaseMove.commit();
}
Tests showed that both ciphertextSource.getRawPath() and ciphertextTarget.getRawPath() are directories, not regular files. I assume the problem is related to this.
- Lingua principale
- Java
- Stelle
- 110
- Fork
- 39
- Merge medio
- 1g 28m
- PR unite (30g)
- 4
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di cryptomator/cryptofs
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
cryptomator/cryptofs#372 ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 25/100
cryptomator/cryptofs#246 · 6 commenti ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 25/100
cryptomator/cryptofs#171 ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 35/100
cryptomator/cryptofs#153 ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
cryptomator/cryptofs#151 ·
Tutte le issue di cryptomator/cryptofs
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
wultra/powerauth-tests#980 ·
-
account bug communication lecture
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
line/centraldogma#1397 ·
I maintainer di solito rispondono entro 2 giorni
-
[Bug]: Fixed/recurring deposit accounts are treated as savings in ownership and listingsForse già presa @Aana123 l’ha presa oggi. Apertabug Triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
apache/fineract-consumer-facing#252 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 78/100
cryptomator/hub#515 ·