IPS-LMU / emuR

The main R package for the EMU Speech Database Management System (EMU-SDMS)
http://ips-lmu.github.io/EMU.html
23 stars 15 forks source link

when deleting all sessions or bundles, load_emuDB does not delete the annotation items from the cache #269

Open MJochim opened 1 year ago

MJochim commented 1 year ago

I noticed this while reviewing PR #268 (thanks @FredrikKarlssonSpeech).

This is an edge case bug. Steps to reproduce:

  1. Load a non-empty database (i.e. one that contains at least one bundle with at least one annotation item).
  2. Delete all its sessions from disk.
  3. Load the database again.

Now list_bundles(db) shows 0 bundles, but query() will still return the annotation items from the deleted data. This is because update_cache() just bails instead of deleting them from cache:

https://github.com/IPS-LMU/emuR/blob/9c7cfd899755af3704e46d37b63f3be329bfed70/R/emuR-database.caching.R#LL29C1-L31C4

This problem was probably introduced years ago in f2f47dac5d0c23888f17438cd8a352c02ccb7371, while ”fighting with unit tests.” However maybe the whole loading process may have behaved differently at the time. It should probably be fixed by emptying the cache instead of bailing.

PR #268 broadens the problem, because it now allows loading of databases with empty sessions only; without addressing the issue. I will still accept the pull request because at the moment it is very useful and the bug has already existed for a while.