You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(ops): leerer Ordner mit gesperrtem Eigen-Handle meldet nicht mehr falsch "completed" (Bug 4)
_delete_dir_skip_locked() wertete len(locked)==0 als Erfolg. Ein leerer Ordner,
dessen eigenes Handle gesperrt ist (kein gesperrtes Kind, sondern der Ordner selbst
-- z.B. von SearchIndexer.exe gehalten), hat keine gesperrte Innendatei; das
verschluckte p.rmdir()-OSError wurde so faelschlich als geloescht gewertet. Der
Worker markierte den Task "completed" und verwarf ihn statt zu retryen -- der Ordner
blieb fuer immer liegen.
Fix: Erfolg wird am echten FS-Zustand gemessen (not p.exists()); _delete_path()
liefert fuer den Eigen-Handle-Lock eine eigene Retry-Meldung.
Regressionstest: TestEmptyDirOwnHandleLocked (4 Tests). Suite 88 -> 92 gruen.
Ursache empirisch bestaetigt (Windows Search Indexer, 2026-06-13).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: CHANGELOG.md
+10Lines changed: 10 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -13,6 +13,16 @@ Format basiert auf [Keep a Changelog](https://keepachangelog.com/de/1.1.0/).
13
13
-`.github/workflows/source-platform-smoke.yml`: CI-Matrix für `ubuntu-latest` und `macos-latest`, die die Smoke-Tests bei jedem Push/PR auf `main` ausführt.
14
14
15
15
### Behoben / Fixed
16
+
-**Bug 4 — falsches „completed" bei leerem Verzeichnis mit gesperrtem Eigen-Handle:**
17
+
`_delete_dir_skip_locked()` meldete Erfolg anhand von `len(locked) == 0`. Ein
18
+
LEERER Ordner, dessen eigenes Handle gesperrt ist (kein gesperrtes Kind, sondern
19
+
der Ordner selbst — z. B. von `SearchIndexer.exe` gehalten), hat keine gesperrte
20
+
Innendatei; das verschluckte `p.rmdir()`-`OSError` wurde so fälschlich als gelöscht
21
+
gewertet. Folge: Der Worker markierte den Task „completed" und verwarf ihn, statt
22
+
ihn erneut zu versuchen — der Ordner blieb für immer liegen. Fix: Erfolg wird jetzt
23
+
am echten FS-Zustand gemessen (`not p.exists()`); `_delete_path()` liefert für den
24
+
Eigen-Handle-Lock eine eigene Retry-Meldung. Tests: `TestEmptyDirOwnHandleLocked`
0 commit comments