Skip to content

Fix monitor race condition

Carlos Garnacho requested to merge wip/carlosg/fix-monitor-race-condition into master

From the main commit:

    libtracker-miner: Handle race condition in renaming directories
    
    When a recursively indexed directory is renamed, we have 2 ongoing
    events: G_FILE_MONITOR_EVENT_DELETED from the GFileMonitor set in the
    directory itself, and G_FILE_MONITOR_EVENT_RENAMED from the parent
    directory GFileMonitor.
    
    When a directory is renamed, we have to throw away the monitors in the
    old location, and add them back in the new location. This sometimes
    happens right in time to ignore the DELETED event, and sometimes it
    doesn't.
    
    Add a short-lived caching of DELETED events, so we can handle those
    situations correctly. If the DELETED event corresponded to this situation
    the event would be silenced away, otherwise it would be emitted in an
    idle callback.
    
    Fixes: https://gitlab.gnome.org/GNOME/tracker-miners/-/issues/92

Merge request reports