From b252e0f35076c0585496b50ad1361ca419059104 Mon Sep 17 00:00:00 2001 From: Chris Bainbridge Date: Fri, 29 May 2015 16:32:57 +0100 Subject: [PATCH] [1.8.x] Refs #23882 -- Added detection for moved files when using inotify polling Commit 15f82c7 ("used pyinotify as change detection system when available") introduced a regression where editing a file in vim with default settings (writebackup=auto) no longer causes the dev server to be restarted. On a write, vim moves the monitored file to a backup path and then creates a new file in the original. The new file is not monitored as it has a different inode. Fixed this by also watching for inotify events IN_DELETE_SELF and IN_MOVE_SELF. Backport of e5cfa394d79b6ab1b412bd3b30c6a433b415d56b from master --- django/utils/autoreload.py | 4 +++- docs/releases/1.8.3.txt | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/django/utils/autoreload.py b/django/utils/autoreload.py index 12f6ba2219..5cb7fd0bac 100644 --- a/django/utils/autoreload.py +++ b/django/utils/autoreload.py @@ -178,7 +178,9 @@ def inotify_code_changed(): pyinotify.IN_ATTRIB | pyinotify.IN_MOVED_FROM | pyinotify.IN_MOVED_TO | - pyinotify.IN_CREATE + pyinotify.IN_CREATE | + pyinotify.IN_DELETE_SELF | + pyinotify.IN_MOVE_SELF ) for path in gen_filenames(only_new=True): wm.add_watch(path, mask) diff --git a/docs/releases/1.8.3.txt b/docs/releases/1.8.3.txt index 104d6eb725..b549251b39 100644 --- a/docs/releases/1.8.3.txt +++ b/docs/releases/1.8.3.txt @@ -95,3 +95,5 @@ Bugfixes * Fixed a regression in ``URLValidator`` that invalidated Punycode TLDs (:ticket:`25059`). + +* Improved `pyinotify` ``runserver`` polling (:ticket:`23882`).