SWAT-engineering / SWAT-engineering/java-watch

`IndexingRescanner` doesn't generate `DELETED` events for content items of moved/renamed directories

Ouverte
#46 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

bug
Langage dominant
Java
Étoiles
1
Forks
0
Merge moyen
14 h 40 min
PR mergées (30 j)
1

Description

To reproduce
// Create file tree
var parent = Files.createTempDirectory("");
var child1 = Files.createDirectories(parent.resolve("from"));
var child2 = Files.createDirectories(parent.resolve("to"));

// Create directory to be moved
var directory = Files.createDirectory(child1.resolve("directory"));
Files.createFile(directory.resolve("file1.txt"));
Files.createFile(directory.resolve("file2.txt"));

// Start a watch for the whole file tree
try (var watch = Watch
        .build(parent, WatchScope.PATH_AND_ALL_DESCENDANTS)
        .onOverflow(Approximation.DIFF)
        .on(System.out::println)
        .start()) {

    // Move directory
    var source = child1.resolve(directory.getFileName());
    var target = child2.resolve(directory.getFileName());
    Files.move(source, target);

    // Wait for events
    Thread.sleep(30000);
}

System.exit(0);
Expected output

DELETED events for file1.txt and file2.txt.

Actual output

No such events:

WatchEvent[C:\Users\sung-\AppData\Local\Temp\16629189291729839418, DELETED, from\directory]
WatchEvent[C:\Users\sung-\AppData\Local\Temp\16629189291729839418, CREATED, to\directory]
WatchEvent[C:\Users\sung-\AppData\Local\Temp\16629189291729839418, MODIFIED, to]
WatchEvent[C:\Users\sung-\AppData\Local\Temp\16629189291729839418, OVERFLOW, to\directory]
WatchEvent[C:\Users\sung-\AppData\Local\Temp\16629189291729839418, CREATED, to\directory\file1.txt]
WatchEvent[C:\Users\sung-\AppData\Local\Temp\16629189291729839418, CREATED, to\directory\file2.txt]

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par le comportement de IndexingRescanner exercé par la reproduction Java dans l’issue, en vous concentrant sur la gestion du déplacement de répertoires et le traitement des diffs d’overflow. Reproduisez le déplacement avec un watch récursif, puis vérifiez que des événements DELETED sont émis pour file1.txt et file2.txt en plus des événements de répertoire existants.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
java
Domaine
operating-systems
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
45/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.