While developing a test for contrib, I'm running into an problem with stream wrappers gone missing.
If a stream wrapper (e.g. but not limited to private://) for some reason becomes unavailable, it is only after a cache flush that Drupal takes notice. Therefore, the user runs into related error messages before it is possible to inform them about the real problem.
This is however not only a problem for contrib, and in the case of the Core private:// wrapper, the UI is particularly inconsistent.
Once 'file_private_path' is set in settings.php, the file system settings page immediately takes notice of the present path (and resets the default to public://, if private:// doesn't exist anymore).
However StreamWrapperManager::getWrappers() doesn't update the list of stream wrappers until a cache reset, leading to the following Usability bug:
Private path present but scheme missing:
Private path missing but scheme present:
(Screenshots are D8.6, but bug is still present in D8.8.)