apache / couchdb

Seamless multi-master syncing database with an intuitive HTTP/JSON API, designed for reliability
https://couchdb.apache.org/
Apache License 2.0
6.15k stars 1.02k forks source link

Warn users of impact when deleting a view via Fauxton #5125

Open lyudmil opened 1 month ago

lyudmil commented 1 month ago

Summary

Fauxton allows one to easily delete a view. If they do, then all views will be rebuilt. That might be sensible behavior if one were to think about how design documents work, but it's not obvious behavior. If you have several large views and delete one to reduce your storage requirements, all the rest will become unavailable until they're rebuilt. For large databases, this might take days. In that sense, being able to easily delete views is a giant footgun.

My team and I found this the hard way out a couple of months ago and it cost us.

Desired Behaviour

To us it would make sense for some friction to be introduced in the UX when a change with potential catastrophic impact is made. Ideally, we would have liked to have been warned about views being rebuilt and the potential for downtime.

The above assumes that making it so that one could delete one view without rebuilding the others is too effortful to consider. It would otherwise be the ideal behavior.

Possible Solution

Something as simple as an alert, explaining that other views would have to be rebuilt, causing downtime, would suffice.

rnewson commented 1 month ago

You can get your desired behaviour by putting each view in a separate design document, the optimisations from putting multiple views in the same design document come at this (considerable) cost, but you don't have to do that.

We'll look at adding a warning in the dashboard.